Repository: LegoFigure11/RaidCrawler Branch: main Commit: 2575549f333b Files: 129 Total size: 1.2 MB Directory structure: gitextract_kdttnkap/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ └── bug_report.md │ ├── dependabot.yml │ └── workflows/ │ └── dotnet-desktop.yml ├── .gitignore ├── Directory.Build.props ├── LICENSE ├── README.md ├── RaidCrawler.Core/ │ ├── Connection/ │ │ └── ConnectionWrapper.cs │ ├── Discord/ │ │ └── NotificationHandler.cs │ ├── Extensions/ │ │ ├── EncounterExtensions.cs │ │ └── RaidExtensions.cs │ ├── Interfaces/ │ │ ├── IDateAdvanceConfig.cs │ │ └── IWebhookConfig.cs │ ├── RaidCrawler.Core.csproj │ ├── Resources/ │ │ ├── Base/ │ │ │ ├── den_locations_base.json │ │ │ ├── raid_fixed_reward_item_array.json │ │ │ └── raid_lottery_reward_item_array.json │ │ ├── Blueberry/ │ │ │ └── den_locations_blueberry.json │ │ └── Kitakami/ │ │ └── den_locations_kitakami.json │ ├── Schemas/ │ │ └── raids.fbs │ └── Structures/ │ ├── Areas.cs │ ├── FlatBufferStructures/ │ │ ├── DeliveryRaidFixedRewardItem.cs │ │ ├── DeliveryRaidLotteryRewardItem.cs │ │ ├── PokeDataBattle.cs │ │ ├── RaidBossData.cs │ │ ├── RaidBossSizeData.cs │ │ ├── RaidEnemyInfo.cs │ │ └── RaidSerializationFormat.cs │ ├── FlatbufferDumper.cs │ ├── ITeraRaid.cs │ ├── MapMagic.cs │ ├── Offsets.cs │ ├── Raid.cs │ ├── RaidBlock.cs │ ├── RaidContainer.cs │ ├── RaidFilter.cs │ ├── RaidRewards.cs │ ├── TeraDistribution.cs │ ├── TeraEncounter.cs │ └── Utils.cs ├── RaidCrawler.Tests/ │ ├── Blocks/ │ │ ├── anubis_Might_cleared_VL/ │ │ │ ├── base │ │ │ ├── fixed_reward_item_array │ │ │ ├── lottery_reward_item_array │ │ │ ├── raid_enemy_array │ │ │ └── raid_priority_array │ │ ├── buddy_12_Distro_noMight_VL/ │ │ │ ├── base │ │ │ ├── fixed_reward_item_array │ │ │ ├── lottery_reward_item_array │ │ │ ├── raid_enemy_array │ │ │ └── raid_priority_array │ │ ├── chaos_12_Distro_noMight_VL/ │ │ │ ├── base │ │ │ ├── fixed_reward_item_array │ │ │ ├── lottery_reward_item_array │ │ │ ├── raid_enemy_array │ │ │ └── raid_priority_array │ │ ├── lisa_30_449_Gentle_21_31_25_21_8_31_SL/ │ │ │ ├── base │ │ │ ├── fixed_reward_item_array │ │ │ ├── lottery_reward_item_array │ │ │ ├── raid_enemy_array │ │ │ └── raid_priority_array │ │ ├── newt_56_761_Calm_4_7_4_3_31_25_VL/ │ │ │ ├── base │ │ │ ├── fixed_reward_item_array │ │ │ ├── lottery_reward_item_array │ │ │ ├── raid_enemy_array │ │ │ └── raid_priority_array │ │ ├── senna_9_132_Modest_31_0_31_31_31_31_SL/ │ │ │ ├── base │ │ │ ├── fixed_reward_item_array │ │ │ ├── lottery_reward_item_array │ │ │ ├── raid_enemy_array │ │ │ └── raid_priority_array │ │ └── zyro_Inteleon_IL_VL/ │ │ ├── base │ │ ├── fixed_reward_item_array │ │ ├── lottery_reward_item_array │ │ ├── raid_enemy_array │ │ └── raid_priority_array │ ├── FilterTests.cs │ ├── Filters/ │ │ ├── BounsweetShiny.json │ │ ├── Ditto0Atk.json │ │ ├── Ditto0Spe.json │ │ └── IVControl.json │ ├── RaidCrawler.Tests.csproj │ ├── RaidReadTests.cs │ ├── RaidStatTests.cs │ └── TestUtil.cs ├── RaidCrawler.WinForms/ │ ├── App.config │ ├── Config.cs │ ├── ErrorHandler/ │ │ └── ErrorHandler.cs │ ├── MainWindow.Designer.cs │ ├── MainWindow.cs │ ├── MainWindow.resx │ ├── Program.cs │ ├── Properties/ │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── RaidCrawler.WinForms.csproj │ └── SubForms/ │ ├── ConfigWindow.Designer.cs │ ├── ConfigWindow.cs │ ├── ConfigWindow.resx │ ├── EmojiConfig.Designer.cs │ ├── EmojiConfig.cs │ ├── EmojiConfig.resx │ ├── FilterSettings.Designer.cs │ ├── FilterSettings.cs │ ├── FilterSettings.resx │ ├── ItemIDs.Designer.cs │ ├── ItemIDs.cs │ ├── ItemIDs.resx │ ├── MapView.Designer.cs │ ├── MapView.cs │ ├── MapView.resx │ ├── RaidBlockViewer.Designer.cs │ ├── RaidBlockViewer.cs │ ├── RaidBlockViewer.resx │ ├── RewardsView.Designer.cs │ ├── RewardsView.cs │ ├── RewardsView.resx │ ├── TeraRaidView.Designer.cs │ ├── TeraRaidView.cs │ ├── TeraRaidView.resx │ ├── TickModifier.Designer.cs │ ├── TickModifier.cs │ ├── TickModifier.resx │ ├── UpdateNotifPopup.Designer.cs │ ├── UpdateNotifPopup.cs │ └── UpdateNotifPopup.resx └── RaidCrawler.sln ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true # All Files [*] charset = utf-8 indent_style = space indent_size = 4 insert_final_newline = true trim_trailing_whitespace = true # Solution Files [*.sln] indent_style = space indent_size = 4 insert_final_newline = true trim_trailing_whitespace = true # XML Project Files [*.csproj] indent_style = space indent_size = 2 # Code Files [*.cs] insert_final_newline = true trim_trailing_whitespace = true indent_style = space indent_size = 4 tab_width = 4 end_of_line = crlf csharp_prefer_braces = when_multiline:warning dotnet_diagnostic.IDE0047.severity = none dotnet_diagnostic.IDE0048.severity = none dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:suggest dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:suggest dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggest dotnet_style_parentheses_in_other_operators = always_for_clarity:suggest [*.{cs,vb}] #### Naming styles #### # Naming styles dotnet_naming_style.begins_with_i.required_prefix = I dotnet_naming_style.begins_with_i.capitalization = pascal_case ================================================ FILE: .gitattributes ================================================ ############################################################################### # Set default behavior to automatically normalize line endings. ############################################################################### * text=auto ############################################################################### # Set default behavior for command prompt diff. # # This is need for earlier builds of msysgit that does not have it on by # default for csharp files. # Note: This is only used by command line ############################################################################### #*.cs diff=csharp ############################################################################### # Set the merge driver for project and solution files # # Merging from the command prompt will add diff markers to the files if there # are conflicts (Merging from VS is not affected by the settings below, in VS # the diff markers are never inserted). Diff markers may cause the following # file extensions to fail to load in VS. An alternative would be to treat # these files as binary and thus will always conflict and require user # intervention with every merge. To do so, just uncomment the entries below ############################################################################### #*.sln merge=binary #*.csproj merge=binary #*.vbproj merge=binary #*.vcxproj merge=binary #*.vcproj merge=binary #*.dbproj merge=binary #*.fsproj merge=binary #*.lsproj merge=binary #*.wixproj merge=binary #*.modelproj merge=binary #*.sqlproj merge=binary #*.wwaproj merge=binary ############################################################################### # behavior for image files # # image files are treated as binary by default. ############################################################################### #*.jpg binary #*.png binary #*.gif binary ############################################################################### # diff behavior for common document formats # # Convert binary document formats to text before diffing them. This feature # is only available from the command line. Turn it on by uncommenting the # entries below. ############################################################################### #*.doc diff=astextplain #*.DOC diff=astextplain #*.docx diff=astextplain #*.DOCX diff=astextplain #*.dot diff=astextplain #*.DOT diff=astextplain #*.pdf diff=astextplain #*.PDF diff=astextplain #*.rtf diff=astextplain #*.RTF diff=astextplain ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us fix incorrect/unexpected behavior or results title: '' labels: bug assignees: '' --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** If applicable, please list the 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, or what you found in-game. **Raid Data** If the result you see in the program does not match what you see in-game, please click "Dump Raid" and replace this text with the bytes in the window that pops up. **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. ================================================ FILE: .github/dependabot.yml ================================================ # To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 updates: - package-ecosystem: "github-actions" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "weekly" ================================================ FILE: .github/workflows/dotnet-desktop.yml ================================================ name: .NET Core Desktop on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: env: Configuration: 'Release' runs-on: windows-latest steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install .NET Core uses: actions/setup-dotnet@v5 with: dotnet-version: | 10.0.x - name: Restore the solution run: dotnet restore - name: Publish run: | dotnet build --configuration $env:Configuration --no-restore dotnet publish -c $env:Configuration -r win-x64 --self-contained false - name: Archive production artifacts if: ${{ success() }} uses: actions/upload-artifact@v7 with: name: RaidCrawler path: | ./RaidCrawler.WinForms/bin/x64/Release/net10.0-windows/win-x64/publish/ ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Mono auto generated files mono_crash.* # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ [Ww][Ii][Nn]32/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Oo]ut/ [Ll]og/ [Ll]ogs/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\ Files/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUnit *.VisualState.xml TestResult.xml nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET Core project.lock.json project.fragment.lock.json artifacts/ # ASP.NET Scaffolding ScaffoldingReadMe.txt # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_h.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Coverlet is a free, cross platform Code Coverage Tool coverage*.json coverage*.xml coverage*.info # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx *.appxbundle *.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser *- [Bb]ackup.rdl *- [Bb]ackup ([0-9]).rdl *- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Tabs Studio *.tss # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Local History for Visual Studio .localhistory/ # BeatPulse healthcheck temp database healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ # Fody - auto-generated XML schema FodyWeavers.xsd ================================================ FILE: Directory.Build.props ================================================ net9.0 win-x64 13 enable en false true true $([System.DateTime]::UtcNow.ToString("yyMMddHHmmss")) none false portable ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: README.md ================================================ # RaidCrawler ![Version](https://img.shields.io/github/v/release/LegoFigure11/RaidCrawler?label=latest%20release) ![Download Count](https://img.shields.io/github/downloads/LegoFigure11/RaidCrawler/total?label=total%20downloads) [![Build Status](https://img.shields.io/github/actions/workflow/status/LegoFigure11/RaidCrawler/dotnet-desktop.yml?branch=main)](https://nightly.link/LegoFigure11/RaidCrawler/workflows/dotnet-desktop/main/RaidCrawler.zip) [sys-botbase](https://github.com/LegoFigure11/usb-botbase) client Raid Viewer for Pokémon Scarlet and Violet. **Basic usage guide:** [Click here](https://billo-guides.github.io/cfw/sv/raidcrawler) (thanks [Billo](https://github.com/Billo-PS)!) ![](https://i.imgur.com/TNOvbdY.png) Leverages SysBot.Base.dll from [kwsch/SysBot.NET](https://github.com/kwsch/SysBot.NET) ================================================ FILE: RaidCrawler.Core/Connection/ConnectionWrapper.cs ================================================ using PKHeX.Core; using RaidCrawler.Core.Interfaces; using RaidCrawler.Core.Structures; using SysBot.Base; using System.Net.Sockets; using System.Text; using static SysBot.Base.SwitchButton; namespace RaidCrawler.Core.Connection; public class ConnectionWrapperAsync(SwitchConnectionConfig Config, Action StatusUpdate) : Offsets { public readonly ISwitchConnectionAsync Connection = Config.Protocol switch { SwitchProtocol.USB => new SwitchUSBAsync(Config.Port), _ => new SwitchSocketAsync(Config), }; public bool Connected => IsConnected; private bool IsConnected { get; set; } private readonly bool CRLF = Config.Protocol is SwitchProtocol.WiFi; private static ulong BaseBlockKeyPointer; public async Task<(bool, string)> Connect(CancellationToken token) { if (Connected) return (true, ""); try { StatusUpdate("Connecting..."); Connection.Connect(); BaseBlockKeyPointer = await Connection .PointerAll(BlockKeyPointer.ToArray(), token) .ConfigureAwait(false); IsConnected = true; StatusUpdate("Connected!"); return (true, ""); } catch (SocketException e) { IsConnected = false; return (false, e.Message); } } public async Task<(bool, string)> DisconnectAsync(CancellationToken token) { if (!Connected) return (true, ""); try { StatusUpdate("Disconnecting controller..."); await Connection .SendAsync(SwitchCommand.DetachController(CRLF), token) .ConfigureAwait(false); StatusUpdate("Disconnecting..."); Connection.Disconnect(); IsConnected = false; StatusUpdate("Disconnected!"); return (true, ""); } catch (SocketException e) { IsConnected = false; return (false, e.Message); } } public async Task GetStoryProgress(CancellationToken token) { for (int i = DifficultyFlags.Length - 1; i >= 0; i--) { // See https://github.com/Lincoln-LM/sv-live-map/pull/43 var block = await ReadSaveBlock(DifficultyFlags[i], 1, token).ConfigureAwait(false); if (block[0] == 2) return i + 1; } return 0; } private async Task ReadSaveBlock(uint key, int size, CancellationToken token) { var block_ofs = await SearchSaveKey(key, token).ConfigureAwait(false); var data = await Connection .ReadBytesAbsoluteAsync(block_ofs + 8, 0x8, token) .ConfigureAwait(false); block_ofs = BitConverter.ToUInt64(data, 0); var block = await Connection .ReadBytesAbsoluteAsync(block_ofs, size, token) .ConfigureAwait(false); return DecryptBlock(key, block); } private async Task ReadSaveBlockObject(uint key, CancellationToken token) { var header_ofs = await SearchSaveKey(key, token).ConfigureAwait(false); var data = await Connection .ReadBytesAbsoluteAsync(header_ofs + 8, 8, token) .ConfigureAwait(false); header_ofs = BitConverter.ToUInt64(data); var header = await Connection .ReadBytesAbsoluteAsync(header_ofs, 5, token) .ConfigureAwait(false); header = DecryptBlock(key, header); var size = BitConverter.ToUInt32(header.AsSpan()[1..]); var obj = await Connection .ReadBytesAbsoluteAsync(header_ofs, (int)size + 5, token) .ConfigureAwait(false); return DecryptBlock(key, obj)[5..]; } public async Task ReadBlockDefault(uint key, string? cache, bool force, CancellationToken token) { var folder = Path.Combine(Directory.GetCurrentDirectory(), "cache"); Directory.CreateDirectory(folder); var path = Path.Combine(folder, cache ?? ""); if (!force && cache is not null && File.Exists(path)) return await File.ReadAllBytesAsync(path, token); var bin = await ReadSaveBlockObject(key, token).ConfigureAwait(false); await File.WriteAllBytesAsync(path, bin, token); return bin; } private async Task SearchSaveKey(uint key, CancellationToken token) { var data = await Connection .ReadBytesAbsoluteAsync(BaseBlockKeyPointer + 8, 16, token) .ConfigureAwait(false); var start = BitConverter.ToUInt64(data.AsSpan()[..8]); var end = BitConverter.ToUInt64(data.AsSpan()[8..]); while (start < end) { var block_ct = (end - start) / 48; var mid = start + ((block_ct >> 1) * 48); data = await Connection.ReadBytesAbsoluteAsync(mid, 4, token).ConfigureAwait(false); var found = BitConverter.ToUInt32(data); if (found == key) return mid; if (found >= key) end = mid; else start = mid + 48; } return start; } private static byte[] DecryptBlock(uint key, byte[] block) { var rng = new SCXorShift32(key); for (int i = 0; i < block.Length; i++) block[i] = (byte)(block[i] ^ rng.Next()); return block; } private async Task Click(SwitchButton button, int delay, CancellationToken token) { await Connection .SendAsync(SwitchCommand.Click(button, CRLF), token) .ConfigureAwait(false); await Task.Delay(delay, token).ConfigureAwait(false); } private async Task Touch(int x, int y, int hold, int delay, CancellationToken token) { var command = Encoding.ASCII.GetBytes( $"touchHold {x} {y} {hold}{(CRLF ? "\r\n" : "")}" ); await Connection.SendAsync(command, token).ConfigureAwait(false); await Task.Delay(delay, token).ConfigureAwait(false); } private async Task SetStick( SwitchStick stick, short x, short y, int hold, int delay, CancellationToken token ) { await Connection .SendAsync(SwitchCommand.SetStick(stick, x, y, CRLF), token) .ConfigureAwait(false); await Task.Delay(hold, token).ConfigureAwait(false); await Connection .SendAsync(SwitchCommand.SetStick(stick, 0, 0, CRLF), token) .ConfigureAwait(false); await Task.Delay(delay, token).ConfigureAwait(false); } private async Task PressAndHold( SwitchButton b, int hold, int delay, CancellationToken token ) { await Connection.SendAsync(SwitchCommand.Hold(b, CRLF), token).ConfigureAwait(false); await Task.Delay(hold, token).ConfigureAwait(false); await Connection.SendAsync(SwitchCommand.Release(b, CRLF), token).ConfigureAwait(false); await Task.Delay(delay, token).ConfigureAwait(false); } private async Task SkipHour(int hours, int delay, CancellationToken token) { var command = Encoding.ASCII.GetBytes($"timeSkipForward{(CRLF ? "\r\n" : "")}"); for (int i = 0; i < hours; i++) { await Connection.SendAsync(command, token).ConfigureAwait(false); await Task.Delay(delay, token).ConfigureAwait(false); } } public async Task ResetTime(CancellationToken token) { var command = Encoding.ASCII.GetBytes($"resetTime{(CRLF ? "\r\n" : "")}"); await Connection.SendAsync(command, token).ConfigureAwait(false); } public async Task ResetTimeNTP(CancellationToken token) { var command = Encoding.ASCII.GetBytes($"resetTimeNTP{(CRLF ? "\r\n" : "")}"); await Connection.SendAsync(command, token).ConfigureAwait(false); } public async Task GetCurrentTime(CancellationToken token) { var command = Encoding.ASCII.GetBytes($"getCurrentTime{(CRLF ? "\r\n" : "")}"); var res = await Connection.ReadRaw(command, 17, token).ConfigureAwait(false); ulong.TryParse(Encoding.ASCII.GetString(res).Trim('\n'), System.Globalization.NumberStyles.AllowHexSpecifier, null, out var time); return time; } public async Task SetCurrentTime(ulong date, CancellationToken token) { var command = Encoding.ASCII.GetBytes($"setCurrentTime {date}{(CRLF ? "\r\n" : "")}"); await Connection.SendAsync(command, token).ConfigureAwait(false); } // Thank you to Anubis for sharing a more optimized routine, as well as CloseGame(), StartGame(), and SaveGame()! public async Task AdvanceDate( IDateAdvanceConfig config, int skips, CancellationToken token, Action? action = null ) { // Not great, but when adding/removing clicks, make sure to account for command count for an accurate StreamerView progress bar. int steps = (config.UseTouch ? 19 : 25) + (config.UseOvershoot ? 2 : config.SystemDownPresses) + (config.DodgeSystemUpdate ? 2 : 0) + config.DaysToSkip; if (config.ZyroMethod) steps = 3; StatusUpdate("Changing date..."); var BaseDelay = config.BaseDelay; if (config.ZyroMethod) { if (skips % 2 == 0) { await SkipHour(24, 0, token).ConfigureAwait(false); } else { await ResetTime(token).ConfigureAwait(false); } await Task.Delay(3_000, token).ConfigureAwait(false); } else { if (!config.UseMapTrick) { // Sometimes the first command drops, click twice with shorter delays for good measure. await Click(B, 0_100, token).ConfigureAwait(false); UpdateProgressBar(action, steps); await Click(B, 0_100, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } else { await Click(ZL, 0_100, token).ConfigureAwait(false); await Click(ZL, 1_500, token).ConfigureAwait(false); UpdateProgressBar(action, steps); await Click(ZR, 2_000, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } // HOME Menu await Click(HOME, config.OpenHomeDelay + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); // Navigate to Settings if (config.UseTouch) { await Touch(0_909, 0_540, 0_050, 0, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } else { await Click(DDOWN, config.NavigateToSettingsDelay + BaseDelay, token) .ConfigureAwait(false); UpdateProgressBar(action, steps); for (int i = 0; i < 7; i++) { await Click(DRIGHT, config.NavigateToSettingsDelay + BaseDelay, token) .ConfigureAwait(false); UpdateProgressBar(action, steps); } } await Click(A, config.OpenSettingsDelay + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); // Scroll to bottom if (config.UseSetStick) await SetStick(SwitchStick.LEFT, 0, -30_000, config.HoldDuration, 0_100 + BaseDelay, token).ConfigureAwait(false); else await PressAndHold(DDOWN, config.HoldDuration, 0_100 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); // Navigate to "Date and Time" StatusUpdate("Navigating to \"Date and Time\"..."); await Click(A, 0_300 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); // Hold down to overshoot Date/Time by one. DUP to recover. if (config.UseOvershoot) { if (config.UseSetStick) await SetStick(SwitchStick.LEFT, 0, -30_000, config.SystemOvershoot, 0_100 + BaseDelay, token).ConfigureAwait(false); else await PressAndHold(DDOWN, config.SystemOvershoot, 0_100 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); await Click(DUP, 0_500 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } else { for (int i = 0; i < config.SystemDownPresses; i++) { await Click(DDOWN, 0_100 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } } // Enter Date/Time await Click(A, config.Submenu + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); // Open Date/Time settings if (config.UseTouch) { await Touch(0_950, 0_400, 0_050, 0, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } else { for (int i = 0; i < 2; i++) { await Click(DDOWN, 0_100 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } } await Click(A, config.DateChange + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); for (int i = 0; i < config.DaysToSkip; i++) { await Click(DUP, 0_100 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } for (int i = 0; i < 6; i++) { await Click(DRIGHT, (i < 5 ? 0_050 : 0_100) + BaseDelay, token) .ConfigureAwait(false); UpdateProgressBar(action, steps); } await Click(A, 0_150 + config.DateChange + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); // Return to game await Click(HOME, config.ReturnHomeDelay + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); await Click(HOME, (config.DodgeSystemUpdate ? 0_500 : config.ReturnGameDelay) + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); if (config.DodgeSystemUpdate) { // Attempt to dodge an update prompt. await Click(DUP, 0_600 + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); await Click(A, config.ReturnGameDelay + BaseDelay, token).ConfigureAwait(false); UpdateProgressBar(action, steps); } StatusUpdate("Back in the game..."); } } public async Task CloseGame(CancellationToken token) { // Close out of the game StatusUpdate("Closing the game!"); await Click(B, 0_500, token).ConfigureAwait(false); await Click(HOME, 2_000, token).ConfigureAwait(false); await Click(X, 1_000, token).ConfigureAwait(false); await Click(A, 5_500, token).ConfigureAwait(false); StatusUpdate("Closed out of the game!"); } public async Task StartGame(IDateAdvanceConfig config, CancellationToken token) { // Open game. StatusUpdate("Starting the game!"); await Click(A, 1_000, token).ConfigureAwait(false); // Attempt to dodge an update prompt; await Click(DUP, 0_600, token).ConfigureAwait(false); await Click(A, 1_000, token).ConfigureAwait(false); // Allow time for profile check if required await Task.Delay(config.RelaunchDelay, token).ConfigureAwait(false); // If they have DLC on the system and can't use it, requires an UP + A to start the game. // Should be harmless otherwise since they'll be in loading screen. await Click(DUP, 0_600, token).ConfigureAwait(false); await Click(A, 0_600, token).ConfigureAwait(false); // Switch Logo and game load screen await Task.Delay(17_000, token).ConfigureAwait(false); for (int i = 0; i < 20; i++) await Click(A, 1_000, token).ConfigureAwait(false); // Particularly slow switches need more time to load the overworld await Task.Delay(config.ExtraOverworldWait, token).ConfigureAwait(false); StatusUpdate("Back in the overworld! Refreshing the base block key pointer..."); BaseBlockKeyPointer = await Connection .PointerAll(BlockKeyPointer.ToArray(), token) .ConfigureAwait(false); } public async Task SaveGame(IDateAdvanceConfig config, CancellationToken token) { StatusUpdate("Saving the game..."); // B out in case we're in some menu. for (int i = 0; i < 4; i++) await Click(B, 0_500, token).ConfigureAwait(false); // Open the menu and save. await Click(X, 1_000, token).ConfigureAwait(false); await Click(R, 1_000, token).ConfigureAwait(false); await Click(A, 1_000, token).ConfigureAwait(false); await Click(A, 1_000, token).ConfigureAwait(false); await Click(A, 3_000 + config.SaveGameDelay, token).ConfigureAwait(false); // Return to overworld. for (int i = 0; i < 4; i++) await Click(B, 0_500, token).ConfigureAwait(false); StatusUpdate("Game saved!"); } private static void UpdateProgressBar(Action? action, int steps) => action?.Invoke(steps); } ================================================ FILE: RaidCrawler.Core/Discord/NotificationHandler.cs ================================================ using PKHeX.Core; using RaidCrawler.Core.Interfaces; using RaidCrawler.Core.Structures; using SysBot.Base; using System.Globalization; using System.Text; using System.Text.Json; namespace RaidCrawler.Core.Discord; public class NotificationHandler(IWebhookConfig config) { private readonly HttpClient _client = new(); private readonly string[]? DiscordWebhooks = config.EnableNotification ? config.DiscordWebhook.Split(',') : null; public async Task SendNotification(ITeraRaid encounter, Raid raid, RaidFilter filter, string time, IReadOnlyList<(int, int, int)> RewardsList, string hexColor, string spriteName, CancellationToken token ) { if (DiscordWebhooks is null || !config.EnableNotification) return; var webhook = GenerateWebhook(encounter, raid, filter, time, RewardsList, hexColor, spriteName); var content = new StringContent(JsonSerializer.Serialize(webhook), Encoding.UTF8, "application/json"); foreach (var url in DiscordWebhooks) await _client.PostAsync(url.Trim(), content, token).ConfigureAwait(false); } public async Task SendErrorNotification(string error, string caption, CancellationToken token) { if (DiscordWebhooks is null || !config.EnableNotification) return; var instance = config.InstanceName != "" ? $"RaidCrawler {config.InstanceName}" : "RaidCrawler"; var webhook = new { username = instance, avatar_url = "https://www.serebii.net/scarletviolet/ribbons/mightiestmark.png", content = config.DiscordMessageContent, embeds = new List { new { title = caption != "" ? caption : "RaidCrawler Error", description = error, color = 0xf7262a, }, }, }; var content = new StringContent(JsonSerializer.Serialize(webhook), Encoding.UTF8, "application/json"); foreach (var url in DiscordWebhooks) await _client.PostAsync(url.Trim(), content, token).ConfigureAwait(false); } public async Task SendScreenshot(ISwitchConnectionAsync nx, CancellationToken token) { if (DiscordWebhooks is null || !config.EnableNotification) return; var data = await nx.PixelPeek(token).ConfigureAwait(false); var content = new MultipartFormDataContent(); var info = new { username = "RaidCrawler", avatar_url = "https://www.serebii.net/scarletviolet/ribbons/mightiestmark.png", content = "Switch Screenshot", }; var basic_info = new StringContent(JsonSerializer.Serialize(info), Encoding.UTF8, "application/json"); content.Add(basic_info, "payload_json"); content.Add(new ByteArrayContent(data), "screenshot.jpg", "screenshot.jpg"); foreach (var url in DiscordWebhooks) await _client.PostAsync(url.Trim(), content, token).ConfigureAwait(false); } private object GenerateWebhook(ITeraRaid encounter, Raid raid, RaidFilter filter, string time, IReadOnlyList<(int, int, int)> rewardsList, string hexColor, string spriteName) { var strings = GameInfo.GetStrings("en"); var param = encounter.GetParam(); var blank = new PK9 { Species = encounter.Species, Form = encounter.Form }; raid.GenerateDataPK9(blank, param, encounter.Shiny, raid.Seed); var form = Utils.GetFormString(blank.Species, blank.Form, strings); var species = $"{strings.Species[encounter.Species]}{form}"; var difficulty = Difficulty(encounter.Stars, raid.IsEvent); var nature = $"{strings.Natures[(int)blank.Nature]}"; var ability = $"{strings.Ability[blank.Ability]}"; var shiny = Shiny(raid.CheckIsShiny(encounter), ShinyExtensions.IsSquareShinyExist(blank)); var gender = GenderEmoji(blank.Gender); var teratype = raid.GetTeraType(encounter); var tera = $"{strings.types[teratype]}"; var teraemoji = TeraEmoji(strings.types[teratype]); Span _ivs = stackalloc int[6]; blank.GetIVs(_ivs); var ivs = IVsStringEmoji(ToSpeedLast(_ivs)); ushort[] moves = [ encounter.Move1, encounter.Move2, encounter.Move3, encounter.Move4, ]; var movestr = string.Concat(moves.Where(z => z != 0).Select(z => $"{strings.Move[z]}ㅤ\n")).Trim(); var extramoves = string.Concat(encounter.ExtraMoves.Where(z => z != 0).Select(z => $"{strings.Move[z]}ㅤ\n")).Trim(); var area = $"{Areas.GetArea((int)(raid.Area - 1), raid.MapParent)}" + (config.ToggleDen ? $" [Den {raid.Den}]ㅤ" : "ㅤ"); var rewards = GetRewards(rewardsList); var SuccessWebHook = new { username = "RaidCrawler " + config.InstanceName, avatar_url = "https://www.serebii.net/scarletviolet/ribbons/mightiestmark.png", content = config.DiscordMessageContent, embeds = new List { new { title = $"{shiny} {species} {gender} {teraemoji}", description = "", color = int.Parse(hexColor, NumberStyles.HexNumber), thumbnail = new { url = $"https://github.com/kwsch/PKHeX/blob/master/PKHeX.Drawing.PokeSprite/Resources/img/Artwork%20Pokemon%20Sprites/a{spriteName}.png?raw=true", }, fields = new List { new { name = "Difficultyㅤㅤㅤㅤㅤㅤ", value = difficulty, inline = true, }, new { name = "Natureㅤㅤㅤ", value = nature, inline = true, }, new { name = "Ability", value = ability, inline = true, }, new { name = "IVs", value = ivs, inline = true, }, new { name = "Moves", value = movestr, inline = true, }, new { name = "Extra Moves", value = extramoves.Length == 0 ? "None" : extramoves, inline = true, }, new { name = "Location󠀠󠀠󠀠", value = area, inline = true, }, new { name = "Search Time󠀠󠀠󠀠", value = time, inline = true, }, new { name = "Filter Name", value = filter.Name, inline = true, }, new { name = rewards != "" ? "Rewards" : "", value = rewards, inline = false, }, }, }, }, }; return SuccessWebHook; } private string Difficulty(byte stars, bool isEvent) { string emoji = GetGlyph(stars, isEvent); return string.Concat(Enumerable.Repeat(emoji, stars)); } private string GetGlyph(byte stars, bool isEvent) { if (!config.EnableEmoji) return ":star:"; if (stars == 7) return config.Emoji["7 Star"]; if (isEvent) return config.Emoji["Event Star"]; return config.Emoji["Star"]; } private string GenderEmoji(int genderInt) => genderInt switch { (int)Gender.Male => config.EnableEmoji ? config.Emoji["Male"] : ":male_sign:", (int)Gender.Female => config.EnableEmoji ? config.Emoji["Female"] : ":female_sign:", _ => "", }; private string GetRewards(IReadOnlyList<(int, int, int)> rewards) { string s = string.Empty; int abilitycapsule = 0; int bottlecap = 0; int abilitypatch = 0; int sweetherba = 0; int saltyherba = 0; int sourherba = 0; int bitterherba = 0; int spicyherba = 0; for (int i = 0; i < rewards.Count; i++) { switch (rewards[i].Item1) { case 0645: abilitycapsule++; break; case 0795: bottlecap++; break; case 1606: abilitypatch++; break; case 1904: sweetherba++; break; case 1905: saltyherba++; break; case 1906: sourherba++; break; case 1907: bitterherba++; break; case 1908: spicyherba++; break; } } bool emoji = config.EnableEmoji; s += (abilitycapsule <= 0) ? "" : (emoji ? $"`{abilitycapsule}`{config.Emoji["Ability Capsule"]} " : $"`{abilitycapsule}` Ability Capsule "); s += (bottlecap <= 0) ? "" : (emoji ? $"`{bottlecap}`{config.Emoji["Bottle Cap"]} " : $"`{bottlecap}` Bottle Cap "); s += (abilitypatch <= 0) ? "" : (emoji ? $"`{abilitypatch}`{config.Emoji["Ability Patch"]} " : $"`{abilitypatch}` Ability Patch "); s += (sweetherba <= 0) ? "" : (emoji ? $"`{sweetherba}`{config.Emoji["Sweet Herba"]} " : $"`{sweetherba}` Sweet Herba "); s += (saltyherba <= 0) ? "" : (emoji ? $"`{saltyherba}`{config.Emoji["Salty Herba"]} " : $"`{saltyherba}` Salty Herba "); s += (sourherba <= 0) ? "" : (emoji ? $"`{sourherba}`{config.Emoji["Sour Herba"]} " : $"`{sourherba}` Sour Herba "); s += (bitterherba <= 0) ? "" : (emoji ? $"`{bitterherba}`{config.Emoji["Bitter Herba"]} " : $"`{bitterherba}` Bitter Herba "); s += (spicyherba <= 0) ? "" : (emoji ? $"`{spicyherba}`{config.Emoji["Spicy Herba"]} " : $"`{spicyherba}` Spicy Herba "); return s; } private string IVsStringEmoji(ReadOnlySpan ivs) { string s = string.Empty; bool emoji = config.EnableEmoji; bool verbose = config.VerboseIVs; var stats = new[] { "HP", "Atk", "Def", "SpA", "SpD", "Spe" }; string[] iv0 = [ config.Emoji["Health 0"], config.Emoji["Attack 0"], config.Emoji["Defense 0"], config.Emoji["SpAttack 0"], config.Emoji["SpDefense 0"], config.Emoji["Speed 0"], ]; string[] iv31 = [ config.Emoji["Health 31"], config.Emoji["Attack 31"], config.Emoji["Defense 31"], config.Emoji["SpAttack 31"], config.Emoji["SpDefense 31"], config.Emoji["Speed 31"], ]; for (int i = 0; i < ivs.Length; i++) { switch (config.IVsStyle) { case 0: { s += ivs[i] switch { 00 => emoji ? $"{iv0 [i]}{(verbose ? " " + stats[i] : string.Empty)}" : $"`✓`{(verbose ? " " + stats[i] : string.Empty)}", 31 => emoji ? $"{iv31[i]}{(verbose ? " " + stats[i] : string.Empty)}" : $"`✓`{(verbose ? " " + stats[i] : string.Empty)}", _ => $"`{ivs[i]}`{(verbose ? " " + stats[i] : string.Empty)}", }; if (i < 5) s += " / "; break; } case 1: { s += $"`{ivs[i]:D}`{(verbose ? " " + stats[i] : string.Empty)}"; if (i < 5) s += " / "; break; } case 2: { s += $"{ivs[i]:D}{(verbose ? " " + stats[i] : string.Empty)}"; if (i < 5) s += " / "; break; } } } return s; } private string Shiny(bool shiny, bool square) { if (!shiny) return ""; bool emoji = config.EnableEmoji; if (square) return $"{(emoji ? config.Emoji["Square Shiny"] : "Square shiny")}"; return $"{(emoji ? config.Emoji["Shiny"] : "Shiny")}"; } private static int[] ToSpeedLast(ReadOnlySpan ivs) { var res = new int[6]; res[0] = ivs[0]; res[1] = ivs[1]; res[2] = ivs[2]; res[3] = ivs[4]; res[4] = ivs[5]; res[5] = ivs[3]; return res; } private string TeraEmoji(string tera) => config.EnableEmoji ? config.Emoji[tera] : tera; } ================================================ FILE: RaidCrawler.Core/Extensions/EncounterExtensions.cs ================================================ using PKHeX.Core; namespace RaidCrawler.Core.Structures; public static class EncounterExtensions { public static List<(int, int, int)> GetRewards(this ITeraRaid encounter, RaidContainer container, Raid raid, int sandwich_boost) => encounter switch { TeraDistribution d => TeraDistribution.GetRewards(d, raid.Seed, raid.GetTeraType(d), container.DeliveryRaidFixedRewards, container.DeliveryRaidLotteryRewards, sandwich_boost), TeraMight m => TeraMight.GetRewards(m, raid.Seed, raid.GetTeraType(m), container.DeliveryRaidFixedRewards, container.DeliveryRaidLotteryRewards, sandwich_boost), TeraEncounter e => TeraEncounter.GetRewards(e, raid.Seed, raid.GetTeraType(e), container.BaseFixedRewards, container.BaseLotteryRewards, sandwich_boost), _ => throw new NotImplementedException($"Unknown encounter for rewards: {encounter.GetType()}"), }; public static GenerateParam9 GetParam(this ITeraRaid encounter) { var gender = GetGender(encounter); if (encounter is TeraMight { Entity: { } em }) { return new GenerateParam9(em.Species, gender, em.FlawlessIVCount, 1, 0, 0, em.ScaleType, em.Scale, em.Ability, em.Shiny, em.Nature, em.IVs); } if (encounter is TeraDistribution dist) { return new GenerateParam9(dist.Species, gender, dist.FlawlessIVCount, 1, 0, 0, SizeType9.RANDOM, 0, dist.Ability, dist.Shiny, dist.Nature, dist.IVs); } return new GenerateParam9(encounter.Species, gender, encounter.FlawlessIVCount, 1, 0, 0, SizeType9.RANDOM, 0, encounter.Ability, encounter.Shiny); } private static byte GetGender(ISpeciesForm enc) => enc switch { TeraMight { Entity.Gender: < 2 } tm => tm.Entity.Gender switch { 0 => PersonalInfo.RatioMagicMale, 1 => PersonalInfo.RatioMagicFemale, _ => PersonalInfo.RatioMagicGenderless, }, _ => PersonalTable.SV.GetFormEntry(enc.Species, enc.Form).Gender, }; } ================================================ FILE: RaidCrawler.Core/Extensions/RaidExtensions.cs ================================================ using PKHeX.Core; using pkNX.Structures.FlatBuffers.Gen9; namespace RaidCrawler.Core.Structures; public static class RaidExtensions { public static ITeraRaid? GetTeraEncounter(this Raid raid, RaidContainer container, int progress, int id) { if (raid.IsEvent) return raid.GetDistributionEncounter(container, progress, raid.Flags == 3, id); return raid.MapParent switch { TeraRaidMapParent.Paldea => raid.GetEncounterBase(container, progress, raid.IsBlack), TeraRaidMapParent.Kitakami => raid.GetEncounterKitakami(container, progress, raid.IsBlack), _ => raid.GetEncounterBlueberry(container, progress, raid.IsBlack), }; } public static ITeraRaid? GetEncounterBase(this Raid raid, RaidContainer container, int progress, bool isBlack) { var clone = new Xoroshiro128Plus(raid.Seed); var starCount = isBlack ? 6 : raid.GetStarCount((uint)clone.NextInt(100), progress, false); var total = container.Game == "Scarlet" ? GetRateTotalBaseSL(starCount) : GetRateTotalBaseVL(starCount); var speciesRoll = clone.NextInt((ulong)total); if (container.GemTeraRaidsBase is not null) { foreach (TeraEncounter enc in container.GemTeraRaidsBase) { if (enc.Stars != starCount) continue; var minimum = container.Game == "Scarlet" ? enc.Entity.RandRateMinScarlet : enc.Entity.RandRateMinViolet; if (minimum >= 0 && (uint)((int)speciesRoll - minimum) < enc.Entity.RandRate) return enc; } } return null; } public static ITeraRaid? GetEncounterKitakami(this Raid raid, RaidContainer container, int progress, bool isBlack) { var clone = new Xoroshiro128Plus(raid.Seed); var starCount = isBlack ? 6 : raid.GetStarCount((uint)clone.NextInt(100), progress, false); var total = container.Game == "Scarlet" ? GetRateTotalKitakamiSL(starCount) : GetRateTotalKitakamiVL(starCount); var speciesRoll = clone.NextInt((ulong)total); if (container.GemTeraRaidsKitakami is not null) { foreach (TeraEncounter enc in container.GemTeraRaidsKitakami) { if (enc.Stars != starCount) continue; var minimum = container.Game == "Scarlet" ? enc.Entity.RandRateMinScarlet : enc.Entity.RandRateMinViolet; if (minimum >= 0 && (uint)((int)speciesRoll - minimum) < enc.Entity.RandRate) return enc; } } return null; } public static ITeraRaid? GetEncounterBlueberry(this Raid raid, RaidContainer container, int progress, bool isBlack) { var clone = new Xoroshiro128Plus(raid.Seed); var starCount = isBlack ? 6 : raid.GetStarCount((uint)clone.NextInt(100), progress, false); var total = GetRateTotalBlueberry(starCount); var speciesRoll = clone.NextInt((ulong)total); if (container.GemTeraRaidsBlueberry is not null) { foreach (TeraEncounter enc in container.GemTeraRaidsBlueberry) { if (enc.Stars != starCount) continue; var minimum = container.Game == "Scarlet" ? enc.Entity.RandRateMinScarlet : enc.Entity.RandRateMinViolet; if (minimum >= 0 && (uint)((int)speciesRoll - minimum) < enc.Entity.RandRate) return enc; } } return null; } public static ITeraRaid? GetDistributionEncounter(this Raid raid, RaidContainer container, int progress, bool isFixed, int groupID) { if (progress < 0) return null; if (!isFixed) { if (container.DistTeraRaids == null) return null; foreach (TeraDistribution enc in container.DistTeraRaids) { if (enc.DeliveryGroupID != groupID) continue; var total = container.Game == "Scarlet" ? enc.Entity.GetRandRateTotalScarlet(progress) : enc.Entity.GetRandRateTotalViolet(progress); if (total > 0) { var rand = new Xoroshiro128Plus(raid.Seed); _ = rand.NextInt(100); var val = rand.NextInt(total); var min = container.Game == "Scarlet" ? enc.Entity.GetRandRateMinScarlet(progress) : enc.Entity.GetRandRateMinViolet(progress); if ((uint)((int)val - min) < enc.RandRate) return enc; } } } else { if (container.MightTeraRaids == null) return null; foreach (TeraMight enc in container.MightTeraRaids) { if (enc.DeliveryGroupID != groupID) continue; var total = container.Game == "Scarlet" ? enc.Entity.GetRandRateTotalScarlet(progress) : enc.Entity.GetRandRateTotalViolet(progress); if (total > 0) return enc; } } return null; } public static (int delivery, int encounter) ReadAllRaids(this RaidContainer container, byte[] data, int storyPrg, int eventPrg, int boost, TeraRaidMapParent type) { var dbgFile = $"raid_dbg_{type}.txt"; if (File.Exists(dbgFile)) File.Delete(dbgFile); var count = data.Length / Raid.SIZE; List possibleGroups = []; if (container.DistTeraRaids is not null) { foreach (TeraDistribution e in container.DistTeraRaids) { if (TeraDistribution.AvailableInGame(e.Entity, container.Game) && !possibleGroups.Contains(e.DeliveryGroupID)) possibleGroups.Add(e.DeliveryGroupID); } } if (container.MightTeraRaids is not null) { foreach (TeraMight e in container.MightTeraRaids) { if (TeraMight.AvailableInGame(e.Entity, container.Game) && !possibleGroups.Contains(e.DeliveryGroupID)) possibleGroups.Add(e.DeliveryGroupID); } } (int delivery, int encounter) failed = (0, 0); List newRaids = []; List newTera = []; List> newRewards = []; int eventCount = 0; for (int i = 0; i < count; i++) { var slice = data.AsSpan(i * Raid.SIZE, Raid.SIZE); var raid = new Raid(slice, type); if (raid.Den == 0) { eventCount++; continue; } if (!raid.IsValid) continue; var progress = raid.IsEvent ? eventPrg : storyPrg; var raidDeliveryGroupID = -1; try { raidDeliveryGroupID = raid.GetDeliveryGroupID(container.DeliveryRaidPriority, possibleGroups, eventCount); } catch (Exception ex) { var extra = $"Group ID: {raidDeliveryGroupID}\nisFixed: {raid.Flags == 3}\nisBlack: {raid.IsBlack}\nisEvent: {raid.IsEvent}\n\n"; var msg = $"{ex.Message}\nDen: {raid.Den}\nProgress: {progress}\nDifficulty: {raid.Difficulty}\n{extra}"; File.AppendAllText(dbgFile, msg); failed.delivery++; continue; } var encounter = raid.GetTeraEncounter(container, progress, raidDeliveryGroupID); if (encounter is null) { var extra = $"Group ID: {raidDeliveryGroupID}\nisFixed: {raid.Flags == 3}\nisBlack: {raid.IsBlack}\nisEvent: {raid.IsEvent}\n\n"; var msg = $"No encounters found.\nDen: {raid.Den}\nProgress: {progress}\nDifficulty: {raid.Difficulty}\n{extra}"; File.AppendAllText(dbgFile, msg); failed.encounter++; continue; } if (raid.IsEvent) eventCount++; newRaids.Add(raid); newTera.Add(encounter); newRewards.Add(encounter.GetRewards(container, raid, boost)); } container.SetRaids(newRaids); container.SetEncounters(newTera); container.SetRewards(newRewards); return failed; } public static bool CheckIsShiny(this Raid raid, ITeraRaid? enc) { if (enc is null) return raid.IsShiny; if (enc.Shiny == Shiny.Never) return false; if (enc.Shiny.IsShiny()) return true; return raid.IsShiny; } public static int GetTeraType(this Raid raid, ITeraRaid? encounter) { if (encounter is null) return raid.TeraType; if (encounter is TeraDistribution { Entity: ITeraRaid9 d }) return (int)d.TeraType > 1 ? (int)d.TeraType - 2 : raid.TeraType; if (encounter is TeraMight { Entity: ITeraRaid9 m }) return (int)m.TeraType > 1 ? (int)m.TeraType - 2 : raid.TeraType; return raid.TeraType; } public static int GetStarCount(this Raid _, uint difficulty, int progress, bool isBlack) { if (isBlack) return 6; return GetStarCount(difficulty, progress); } private static int GetStarCount(uint difficulty, int progress) => progress switch { 0 => difficulty switch { > 80 => 2, _ => 1, }, 1 => difficulty switch { > 70 => 3, > 30 => 2, _ => 1, }, 2 => difficulty switch { > 70 => 4, > 40 => 3, > 20 => 2, _ => 1, }, 3 => difficulty switch { > 75 => 5, > 40 => 4, _ => 3, }, 4 => difficulty switch { > 70 => 5, > 30 => 4, _ => 3, }, _ => 1, }; public static int GetDeliveryGroupID(this Raid raid, DeliveryGroupID ids, List possibleGroups, int eventCount) { if (!raid.IsEvent) return -1; // WW/IL re-run has DeliveryGroupID = 3, having a Might7 alongside it conflicts. var groups = ids.GroupID; for (int i = 0; i < groups.Table_Length; i++) { var count = groups.Table(i); if (!possibleGroups.Contains(i + 1)) continue; if (eventCount < count) return i + 1; eventCount -= count; } throw new Exception("Found event out of priority range."); } private static short GetRateTotalBaseSL(int star) => star switch { 1 => 5800, 2 => 5300, 3 => 7400, 4 => 8800, // Scarlet has one more encounter. 5 => 9100, 6 => 6500, _ => 0, }; private static short GetRateTotalBaseVL(int star) => star switch { 1 => 5800, 2 => 5300, 3 => 7400, 4 => 8700, // Violet has one less encounter. 5 => 9100, 6 => 6500, _ => 0, }; private static short GetRateTotalKitakamiSL(int star) => star switch { 1 => 1500, 2 => 1500, 3 => 2500, 4 => 2100, 5 => 2250, 6 => 2475, // Scarlet has one less encounter _ => 0, }; private static short GetRateTotalKitakamiVL(int star) => star switch { 1 => 1500, 2 => 1500, 3 => 2500, 4 => 2100, 5 => 2250, 6 => 2574, // Violet has one more encounter _ => 0, }; private static short GetRateTotalBlueberry(int star) => star switch { // Both games have the same number of encounters 1 => 1100, 2 => 1100, 3 => 2000, 4 => 1900, 5 => 2100, 6 => 2600, _ => 0, }; } ================================================ FILE: RaidCrawler.Core/Interfaces/IDateAdvanceConfig.cs ================================================ namespace RaidCrawler.Core.Interfaces; public interface IDateAdvanceConfig { bool UseTouch { get; set; } bool UseOvershoot { get; set; } bool DodgeSystemUpdate { get; set; } bool UseSetStick { get; set; } bool UseMapTrick { get; set; } bool ZyroMethod { get; set; } int OpenHomeDelay { get; set; } int NavigateToSettingsDelay { get; set; } int OpenSettingsDelay { get; set; } int HoldDuration { get; set; } int SystemDownPresses { get; set; } int SystemOvershoot { get; set; } int Submenu { get; set; } int DateChange { get; set; } int DaysToSkip { get; set; } int ReturnHomeDelay { get; set; } int ReturnGameDelay { get; set; } int BaseDelay { get; set; } int SaveGameDelay { get; set; } int RelaunchDelay { get; set; } int ExtraOverworldWait { get; set; } } ================================================ FILE: RaidCrawler.Core/Interfaces/IWebhookConfig.cs ================================================ using SysBot.Base; namespace RaidCrawler.Core.Interfaces; public interface IWebhookConfig { SwitchProtocol Protocol { get; set; } bool EnableNotification { get; set; } bool ToggleDen { get; set; } string InstanceName { get; set; } string DiscordWebhook { get; set; } string DiscordMessageContent { get; set; } bool EnableEmoji { get; set; } Dictionary Emoji { get; set; } bool VerboseIVs { get; set; } int IVsStyle { get; set; } } ================================================ FILE: RaidCrawler.Core/RaidCrawler.Core.csproj ================================================  enable x64 all runtime; build; native; contentfiles; analyzers; buildtransitive deps\SysBot.Base.dll ================================================ FILE: RaidCrawler.Core/Resources/Base/den_locations_base.json ================================================ { "1-1-1": [ 2845.467, 36.614, -1038.485 ], "1-1-2": [ 2843.5623, 50.538624, -1155.899 ], "1-1-3": [ 2995.64, 50.029, -1044.8 ], "1-1-4": [ 3026.123, 59.19, -863.263 ], "1-1-5": [ 3027.5466, 47.98538, -828.203 ], "1-1-6": [ 2706.321, 38.522, -897.694 ], "1-1-7": [ 2756.0642, 53.07718, -947.225 ], "1-1-8": [ 2939.2195, 51.645695, -890.802 ], "1-1-9": [ 2901.67, 43.51155, -956.14 ], "1-1-10": [ 2758.1775, 28.147131, -885.512 ], "1-1-11": [ 2695.9585, 74.89077, -1059.758 ], "4-1-1": [ 1899.0006, 131.19034, -1733.894 ], "4-1-2": [ 1769.4475, 170.525, -1850.895 ], "4-1-3": [ 1790.6346, 170.37459, -1970.455 ], "4-1-4": [ 1637.4147, 150.9245, -1935.294 ], "4-1-5": [ 1553.4471, 102.529, -1471.282 ], "4-1-6": [ 1835.2953, 119.064, -1423.519 ], "4-1-7": [ 1629.2001, 123.859, -1500.295 ], "4-1-8": [ 1640.544, 122.431, -1662.441 ], "4-1-9": [ 1475.2063, 124.439, -1912.936 ], "4-1-10": [ 1812.5724, 137, -1500.554 ], "4-1-11": [ 1771.2521, 100.215, -1351.323 ], "4-1-12": [ 1982.5543, 125.65, -1594.889 ], "5-1-1": [ 1866.6323, 123.882, -1160.349 ], "5-1-2": [ 2002.1222, 122.804, -1165.878 ], "5-1-3": [ 2141.4495, 154.78429, -1306.902 ], "5-1-4": [ 1913.426, 102.891, -1263.081 ], "5-1-5": [ 1703.3937, 100.295, -1271.364 ], "5-1-6": [ 1513.5747, 102.454, -1339.542 ], "5-1-7": [ 1379.3215, 99.85946, -1414.994 ], "5-1-8": [ 1158.9136, 104.006, -1401.035 ], "5-1-9": [ 1356.9264, 125.62, -1445.842 ], "5-1-10": [ 1118.2214, 124.987, -1513.141 ], "5-1-11": [ 1385.0574, 182.036, -1206.406 ], "5-1-12": [ 1493.3928, 137.195, -1212.87 ], "5-1-13": [ 1571.0824, 119.819, -1123.577 ], "5-1-14": [ 1657.7124, 123.919716, -1120.022 ], "5-1-15": [ 1757.7255, 119.836, -1176.093 ], "5-1-16": [ 1897.7378, 77.31867, -1010.904 ], "5-1-17": [ 1933.3049, 62.684, -864.692 ], "5-1-18": [ 1817.5621, 50.726524, -1021.676 ], "5-1-19": [ 1712.4163, 51.856, -984.328 ], "5-1-20": [ 1741.8289, 27.366, -908.355 ], "5-1-21": [ 2310.3599, 102.35688, -867.754 ], "6-1-1": [ 1216.1168, 439.182, -1256.351 ], "6-1-2": [ 1135.6335, 408.106, -1138.885 ], "6-1-3": [ 1011.4375, 324.1062, -1120.552 ], "6-1-4": [ 793.2703, 304.927, -958.951 ], "6-1-5": [ 678.807, 303.461, -1164.414 ], "6-1-6": [ 851.7057, 300.354, -1259.222 ], "6-1-7": [ 697.38544, 289.631, -1281.583 ], "6-1-8": [ 1251.8801, 376.138, -1133.998 ], "6-1-9": [ 757.57587, 277.555, -1449.904 ], "6-1-10": [ 704.53284, 49.696716, -1508.669 ], "6-1-11": [ 618.2202, 30.289415, -1322.722 ], "7-1-1": [ 3260.4072, 139.058, -1666.307 ], "7-1-2": [ 3164.0479, 117.136, -1504.806 ], "7-1-3": [ 2902.9255, 126.495, -1408.005 ], "7-1-4": [ 3300.0713, 100.29469, -1387.432 ], "7-1-5": [ 3395.081, 301.49, -1423.474 ], "7-1-6": [ 3611.139, 313.481, -1467.221 ], "7-1-7": [ 3639.874, 295.442, -1282.592 ], "7-1-8": [ 2745.1975, 89.859, -1134.795 ], "7-1-9": [ 2726.992, 126.88671, -1355.929 ], "7-1-10": [ 3134.3804, 84.294914, -1131.999 ], "7-1-11": [ 3096.0142, 97.01546, -960.987 ], "7-1-12": [ 3232.408, 60.313, -958.541 ], "7-1-13": [ 3220.125, 50.347, -1204.109 ], "8-1-1": [ 2789.0913, 118.99999, -1643.126 ], "8-1-2": [ 2705.5635, 100.009, -1768.12 ], "8-1-3": [ 2827.2507, 110.617, -1629.134 ], "8-1-4": [ 2844.7065, 116.506, -1647.88 ], "8-1-5": [ 2897.6675, 135.298, -1628.299 ], "8-1-6": [ 2938.5251, 119.78288, -1624.612 ], "8-1-7": [ 2870.8196, 149.477, -1748.421 ], "8-1-8": [ 2857.5256, 153.582, -1713.734 ], "8-1-9": [ 2945.535, 144.44276, -1706.932 ], "8-1-10": [ 2778.236, 108.903, -1815.592 ], "8-1-11": [ 3044.518, 153.905, -1805.803 ], "8-1-12": [ 3112.402, 132.59032, -1872.252 ], "8-1-13": [ 3156.5232, 100.069, -1759.778 ], "8-1-14": [ 3329.499, 159.417, -1927.745 ], "8-1-15": [ 3119.92, 110.42, -1934.241 ], "8-1-16": [ 3227.864, 160.062, -1981.746 ], "8-1-17": [ 3450.6865, 156.95605, -1868.286 ], "8-1-18": [ 3603.3108, 159.98636, -1845 ], "8-1-19": [ 3543.5562, 125.17, -1749.021 ], "8-1-20": [ 3440.8494, 114.854, -1718.778 ], "9-1-1": [ 1136.7812, 150.49757, -2016.167 ], "9-1-2": [ 1198.0536, 160.16187, -1937.424 ], "9-1-3": [ 1160.7703, 156.032, -1682.58 ], "9-1-4": [ 1081.689, 191.825, -2092.869 ], "9-1-5": [ 947.6973, 205.406, -2092.656 ], "9-1-6": [ 1270.208, 274.854, -2192.344 ], "9-1-7": [ 1037.17, 158.25974, -1761.818 ], "9-1-8": [ 1698.0283, 299.58, -2470.444 ], "9-1-9": [ 1401.9097, 155.203, -1984.84 ], "9-1-10": [ 1854.1393, 153.98119, -2018.318 ], "9-1-11": [ 1518.1447, 202.65892, -2222.884 ], "9-1-12": [ 1049.826, 219.624, -1841.302 ], "9-1-13": [ 740.9347, 276.129, -1975.816 ], "9-1-14": [ 977.81, 231.772, -1448.517 ], "9-1-15": [ 902.24927, 202.204, -1486.805 ], "9-1-16": [ 552.87463, 310.0584, -2123.151 ], "9-1-17": [ 526.2075, 257.5541, -1978.386 ], "9-1-18": [ 516.06586, 258.93277, -1988.088 ], "9-1-19": [ 406.85233, 345.942, -2296.848 ], "9-1-20": [ 461.65933, 261.267, -2430.324 ], "9-1-21": [ 615.57446, 204.40112, -2567.678 ], "9-2-1": [ 703.6389, 317.623, -2203.918 ], "9-2-2": [ 904.748, 280.404, -2198.13 ], "9-2-3": [ 807.161, 261.463, -2294.684 ], "9-2-4": [ 726.8064, 250.554, -2313.824 ], "9-2-5": [ 1541.4001, 254.81822, -2677.292 ], "9-2-6": [ 1289.9803, 236.96513, -2473.336 ], "9-2-7": [ 1613.5505, 194.594, -3008.886 ], "9-2-8": [ 1091.2606, 283.35077, -2288.283 ], "9-2-9": [ 1121.5624, 247.51, -2441.588 ], "9-2-10": [ 1135.403, 200.28, -2657.236 ], "9-2-11": [ 1393.0848, 241.63, -2588.953 ], "10-1-1": [ 1355.4225, 154.228, -3070.513 ], "10-1-2": [ 932.8021, 154.328, -3069.857 ], "10-1-3": [ 1088.3599, 150.072, -3039.058 ], "10-1-4": [ 1168.1425, 165.906, -2810.181 ], "10-1-5": [ 967.2324, 154.021, -2574.592 ], "10-1-6": [ 969.512, 205.849, -2746.752 ], "10-1-7": [ 752.812, 149.851, -2982.663 ], "10-1-8": [ 708.866, 151.058, -2632.248 ], "10-1-9": [ 407.1229, 153.71, -2811.957 ], "10-1-10": [ 796.517, 206.454, -2833.264 ], "11-1-1": [ 680.07526, 72.338, -3022.125 ], "11-1-2": [ 758.8083, 97.049, -3209.514 ], "11-1-3": [ 457.581, 28.332, -3201.192 ], "11-1-4": [ 577.3071, 27.293, -3590.295 ], "11-1-5": [ 641.5924, 52.289223, -3604.116 ], "11-1-6": [ 914.7816, 69.557, -3469.828 ], "11-1-7": [ 1080.179, 68.4, -3506.444 ], "11-1-8": [ 980.33856, 100.343, -3298.26 ], "11-1-9": [ 1281.2114, 72.793, -3441.391 ], "11-1-10": [ 1404.0607, 106.93168, -3595.316 ], "11-1-11": [ 1420.5525, 108.026, -3379.739 ], "12-1-1": [ 1619.1842, 151.259, -3349.24 ], "12-1-2": [ 1491.2551, 126.809, -3376.43 ], "12-1-3": [ 1730.0283, 102.642, -3721.919 ], "12-1-4": [ 1842.9199, 100.34152, -3608.054 ], "12-1-5": [ 2055.4146, 150.636, -3465.063 ], "12-1-6": [ 1876.1418, 150.488, -3344.767 ], "12-1-7": [ 2240.985, 163.175, -3496.316 ], "12-1-8": [ 2155.9333, 153.8733, -3913.194 ], "12-1-9": [ 2256.0447, 181.19315, -3807.589 ], "12-1-10": [ 2204.459, 200.011, -3210.86 ], "12-1-11": [ 2104.338, 200.007, -3112.235 ], "12-1-12": [ 2155.035, 184.779, -3240.255 ], "12-1-13": [ 1967.685, 228.104, -2885.821 ], "12-1-14": [ 1788.2504, 198.625, -2889.617 ], "12-1-15": [ 1826.5359, 160.854, -3002.231 ], "12-1-16": [ 1691.5563, 155.739, -3033.022 ], "12-1-17": [ 1518.1082, 162.791, -3265.582 ], "13-1-1": [ 3528.1975, 165.69916, -3543.603 ], "13-1-2": [ 3416.95, 165.057, -3545.65 ], "13-1-3": [ 3213.6755, 164.828, -3475.689 ], "13-1-4": [ 3339.4155, 149.762, -3180.274 ], "13-1-5": [ 3116.5674, 139, -3315.564 ], "14-1-1": [ 4159.2573, 75.513, -2840.708 ], "14-1-2": [ 4236.472, 113.233, -2890.783 ], "14-1-3": [ 4254.321, 98.49, -3073.784 ], "14-1-4": [ 4556.84, 131.992, -3100.284 ], "14-1-5": [ 4473.559, 97.826, -3155.787 ], "14-1-6": [ 4079.3474, 151.717, -3083.227 ], "14-1-7": [ 4064.9348, 175.008, -3205.413 ], "14-1-8": [ 3910.8123, 110.285385, -2703.162 ], "14-1-9": [ 3733.5237, 152.13, -2828.176 ], "14-1-10": [ 3670.5334, 150.04924, -3302.292 ], "14-1-11": [ 3501.2812, 139.998, -3187.655 ], "14-1-12": [ 3494.993, 171.523, -2944.775 ], "14-1-13": [ 3425.9077, 154.61, -2858.815 ], "14-1-14": [ 3197.446, 139.996, -2965.349 ], "14-1-15": [ 3221.556, 137.094, -2717.948 ], "15-1-1": [ 3949.057, 128.4627, -1753.7886 ], "15-1-2": [ 3939.1145, 118.467, -1903.497 ], "15-1-3": [ 4222.742, 100.08929, -1788.447 ], "15-1-4": [ 3994.504, 106.69571, -2075.471 ], "15-1-5": [ 4091.4172, 78.9, -2141.472 ], "15-1-6": [ 4182.6772, 100.57541, -1999.694 ], "15-1-7": [ 4199.1963, 101.61066, -2063.68 ], "15-1-8": [ 4347.587, 101.947, -2055.755 ], "15-1-9": [ 4450.8774, 39.89622, -1995.672 ], "15-1-10": [ 4308.0854, 82.694, -2248.658 ], "15-2-1": [ 3507.103, 114.158, -2304.367 ], "15-2-2": [ 3371.768, 131.414, -2431.5 ], "15-2-3": [ 3315.8464, 136.56921, -2553.919 ], "15-2-4": [ 3286.927, 136.706, -2209.562 ], "15-2-5": [ 3210.6985, 200.413, -2638.92 ], "15-2-6": [ 3257.0085, 199.8879, -2352.739 ], "15-2-7": [ 3042.08, 200.078, -2326.545 ], "15-2-8": [ 3141.9746, 200.00513, -2207.734 ], "15-2-9": [ 3482.535, 150.15349, -2140.363 ], "15-2-10": [ 3382.6587, 175.42473, -2025.202 ], "15-2-11": [ 3075.128, 171.15794, -2083.704 ], "16-1-1": [ 3634.7349, 103.697, -2249.59 ], "16-1-2": [ 3913.9048, 87.313, -2159.184 ], "16-1-3": [ 3990.8743, 68.22058, -2368.99 ], "16-1-4": [ 4097.5396, 40.483, -2342.001 ], "16-1-5": [ 4283.13, 27.846, -2320.806 ], "16-1-6": [ 4022.277, 28.308, -2546.425 ], "16-1-7": [ 3662.312, 101.794, -2399.427 ], "16-1-8": [ 3548.7634, 116.26001, -2507.5374 ], "16-1-9": [ 3579.2812, 133.791, -2361.305 ], "16-1-10": [ 3465.717, 122.248, -2659.646 ], "17-1-1": [ 2902.689, 200.399, -3093.951 ], "17-1-2": [ 2720.5022, 280.556, -3201.56 ], "17-1-3": [ 2593.317, 350.688, -3282.014 ], "17-1-4": [ 2598.9983, 350.08722, -3411.557 ], "17-1-5": [ 2427.9685, 252.528, -3461.893 ], "17-1-6": [ 2286.5273, 273.911, -3154.17 ], "17-1-7": [ 2467.979, 307.236, -3187.504 ], "17-1-8": [ 3303.539, 457.404, -3817.721 ], "17-1-9": [ 3153.672, 549.903, -3887.176 ], "17-1-10": [ 3058.9521, 529.29065, -3661.263 ], "17-1-11": [ 2941.3628, 199.929, -2807.215 ], "17-1-12": [ 3018.6382, 200.228, -2661.028 ], "18-1-1": [ 583.49615, 51.777, -3722.577 ], "18-1-2": [ 762.9055, 83.263, -4136.542 ], "18-1-3": [ 538.15045, 59.128, -4297.462 ], "18-1-4": [ 841.52344, 72.244, -4295.059 ], "18-1-5": [ 789.033, 30.452, -4485.728 ], "18-1-6": [ 881.5492, 96.926, -4443.855 ], "18-1-7": [ 1156.5724, 105.646, -4630.291 ], "18-1-8": [ 1315.9452, 112.47854, -4411.718 ], "18-1-9": [ 1507.038, 107.434, -4404.618 ], "18-1-10": [ 1639.128, 134.847, -4364.72 ], "18-1-11": [ 2002.7728, 143.998, -4004.138 ], "18-1-12": [ 2070.937, 140.65634, -3938.287 ], "18-1-13": [ 1629.3771, 52.345, -3997.327 ], "18-1-14": [ 1061.734, 54.03, -4230.546 ], "18-1-15": [ 853.741, 57.159, -3998.338 ], "19-1-1": [ 1904.9739, 302.13, -4476.627 ], "19-1-2": [ 2075.4602, 196.94385, -4453.186 ], "19-1-3": [ 2175.288, 258.987, -3962.343 ], "19-1-4": [ 2357.263, 292.974, -4154.987 ], "19-1-5": [ 2517.7583, 312.382, -4327.555 ], "19-1-6": [ 2388.8801, 193.7364, -4379.883 ], "19-1-7": [ 2493.558, 380.4853, -4159.183 ], "19-1-8": [ 2539.19, 314.32626, -3934.373 ], "19-1-9": [ 2708.6387, 543.1926, -3815.269 ], "19-1-10": [ 2551.8943, 459.3, -3786.567 ], "19-1-11": [ 2636.6562, 474.08127, -4080.359 ], "19-1-12": [ 2079.422, 250.6066, -4261.153 ], "19-2-1": [ 2980.5945, 468.246, -4081.9 ], "19-2-2": [ 3065.717, 335.63928, -4264.309 ], "19-2-3": [ 3215.0225, 249.41417, -4426.817 ], "19-2-4": [ 3334.752, 290.42, -4284.607 ], "19-2-5": [ 3287.9968, 409.532, -4120.064 ], "19-2-6": [ 3185.0469, 124.804085, -4674.016 ], "19-2-7": [ 2925.784, 37.782, -4819.091 ], "19-2-8": [ 2934.2034, 294.876, -4491.229 ], "19-2-9": [ 2776.519, 166.26, -4744.95 ], "19-2-10": [ 2566.431, 113.238, -4671.11 ], "20-1-1": [ 2158.8896, 75.773, -4624.578 ], "20-1-2": [ 2095.613, 30.714, -4826.774 ], "20-1-3": [ 2266.1736, 27.36, -4888.04 ], "20-1-4": [ 2404.1516, 38.995, -4739.097 ], "20-1-5": [ 2636.8281, 31.877356, -4766.172 ], "20-1-6": [ 1967.109, 107.087, -4706.695 ], "20-1-7": [ 1888.2545, 27.66, -4804.205 ], "21-1-1": [ 3547.085, 248.378, -4267.11 ], "21-1-2": [ 3516.266, 27.53, -4551.839 ], "21-1-3": [ 3715.373, 30.22447, -4396.859 ], "21-1-4": [ 3664.97, 250.417, -3851.387 ], "21-1-5": [ 3782.5044, 215.215, -3940.288 ], "21-1-6": [ 4238.2163, 200.163, -4023.547 ], "21-1-7": [ 4037.2893, 308.365, -3874.302 ], "21-1-8": [ 3804.4255, 249.465, -3744.459 ], "21-1-9": [ 3681.3413, 250.90479, -3523.232 ], "21-1-10": [ 3438.491, 200.681, -3586.808 ], "21-1-11": [ 3528.0413, 252.9267, -3701.859 ], "21-1-12": [ 3611.6423, 302.471, -4050.048 ], "21-1-13": [ 3970.3142, 206.68, -4036.144 ], "22-1-1": [ 3862.4924, 220.02588, -3742.104 ], "22-1-2": [ 3949.528, 220.012, -3740.621 ], "22-1-3": [ 3997.943, 220.031, -3641.878 ], "22-1-4": [ 4003.7307, 248.957, -3800.467 ], "22-1-5": [ 4149.172, 249.902, -3794.919 ], "22-1-6": [ 4211.662, 309.788, -3789.485 ], "22-1-7": [ 4275.8936, 299.654, -3730.387 ], "22-1-8": [ 4209.848, 230.012, -3633.816 ], "22-1-9": [ 4233.2744, 230.314, -3483.836 ], "22-1-10": [ 4041.568, 250.111, -3479.939 ], "22-1-11": [ 3749.4216, 250.14, -3441.497 ], "22-1-12": [ 3870.1, 250.021, -3419.277 ], "22-1-13": [ 3945.9397, 250.30798, -3403.474 ], "22-1-14": [ 4040.2236, 302.19217, -3358.449 ], "22-1-15": [ 4109.605, 230.034, -3350.393 ], "22-1-16": [ 4250.147, 333.989, -3342.715 ], "22-1-17": [ 4200.3525, 250.453, -3387.742 ], "22-1-18": [ 4399.146, 294.83286, -3413.392 ], "22-1-19": [ 4382.4756, 318.88, -3327.004 ], "22-1-20": [ 4421.354, 250.189, -3664.857 ], "22-1-21": [ 4658.1436, 202.46548, -3247.712 ], "22-1-22": [ 4379.2666, 250.25455, -3478.503 ] } ================================================ FILE: RaidCrawler.Core/Resources/Base/raid_fixed_reward_item_array.json ================================================ [ { "TableName": 12665484173717205406, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 4, "Num": 1 }, "RewardItem01": { "Category": 1, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem02": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem03": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem04": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 971768233462174768, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1124, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 566, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 13967968057318937848, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1124, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 567, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 13964306683597752118, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1124, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 565, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 4079204644669103737, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1124, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 568, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 4461632780080010991, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1124, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 569, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 1453407049952680673, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1124, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 570, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 13962751043364178541, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 3 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 566, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 7425207459411916467, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 3 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 567, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 7413752747271484969, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 3 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 565, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 18330603432922962524, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 3 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 568, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 4252614494071568324, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 3 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 569, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 2509815283604296356, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 3 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 570, "Num": 1 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 1 }, "RewardItem05": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem06": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8835428215795829081, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 566, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8835424917260944448, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 567, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8835426016772572659, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 565, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8835431514330713714, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 568, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8835432613842341925, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 569, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8835429315307457292, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1125, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 570, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 1 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 6567691901553146942, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 4 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 566, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 6567690802041518731, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 4 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 567, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 6567689702529890520, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 4 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 565, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 6567697399111287997, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 4 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 568, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 6567696299599659786, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 4 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 569, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 6567695200088031575, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1126, "Num": 2 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 4 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 570, "Num": 2 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 2 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 1 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 11960178471819505075, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 566, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 11960179571331133286, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 567, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 11960180670842761497, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 565, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 11960181770354389708, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 568, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 11960182869866017919, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 569, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 11960183969377646130, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 1 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 570, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 2 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 2 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8092679411244492160, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 4 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 566, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 3 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8092682709779376793, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 4 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 567, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 3 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8092681610267748582, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 4 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 565, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 3 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8092684908802633215, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 4 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 568, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 3 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8092683809291005004, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 4 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 569, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 3 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } }, { "TableName": 8092687107825889637, "RewardItem00": { "Category": 0, "SubjectType": 0, "ItemID": 1127, "Num": 4 }, "RewardItem01": { "Category": 0, "SubjectType": 0, "ItemID": 1128, "Num": 1 }, "RewardItem02": { "Category": 1, "SubjectType": 0, "ItemID": 0, "Num": 5 }, "RewardItem03": { "Category": 0, "SubjectType": 0, "ItemID": 570, "Num": 3 }, "RewardItem04": { "Category": 1, "SubjectType": 2, "ItemID": 0, "Num": 3 }, "RewardItem05": { "Category": 2, "SubjectType": 0, "ItemID": 0, "Num": 3 }, "RewardItem06": { "Category": 2, "SubjectType": 1, "ItemID": 0, "Num": 3 }, "RewardItem07": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem08": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem09": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem10": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem11": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem12": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem13": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 }, "RewardItem14": { "Category": 0, "SubjectType": 0, "ItemID": 0, "Num": 0 } } ] ================================================ FILE: RaidCrawler.Core/Resources/Base/raid_lottery_reward_item_array.json ================================================ [ { "TableName": 12665484173717205406, "RewardItem00": { "Category": 0, "ItemID": 1124, "Num": 1, "Rate": 50, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 50, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 4, "Num": 100, "Rate": 500, "RareItemFlag": true }, "RewardItem03": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 12768795081099901129, "RewardItem00": { "Category": 0, "ItemID": 1124, "Num": 1, "Rate": 2200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 566, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 155, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 151, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 152, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 88, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 668479594417095103, "RewardItem00": { "Category": 0, "ItemID": 1124, "Num": 1, "Rate": 2200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 567, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 149, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 151, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 152, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 90, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 679833151487731189, "RewardItem00": { "Category": 0, "ItemID": 1124, "Num": 1, "Rate": 2200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 565, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 151, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 152, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 153, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 86, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 17668059097480846072, "RewardItem00": { "Category": 0, "ItemID": 1124, "Num": 1, "Rate": 2200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 568, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 152, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 153, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 150, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 88, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 16164448039046184704, "RewardItem00": { "Category": 0, "ItemID": 1124, "Num": 1, "Rate": 2200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 569, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 153, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 150, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 156, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 90, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 15162778972308788368, "RewardItem00": { "Category": 0, "ItemID": 1124, "Num": 1, "Rate": 2200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 570, "Num": 1, "Rate": 850, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 156, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 150, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 153, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 86, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 6127935918080434284, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 566, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 155, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 151, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 152, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 88, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 875344009101998740, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 567, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 149, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 151, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 152, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 90, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 863845316496438802, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 565, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 151, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 152, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 153, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 86, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 15677658920486028021, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 568, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 152, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 153, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 150, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 88, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 18349317780833198619, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 569, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 153, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 150, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 156, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 90, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 18274910994316513853, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 570, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 156, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 150, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 153, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 86, "Num": 1, "Rate": 3000, "RareItemFlag": false }, "RewardItem07": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8835428215795829081, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1400, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1126, "Num": 2, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 566, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 159, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 90, "Num": 1, "Rate": 2500, "RareItemFlag": false }, "RewardItem08": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8835424917260944448, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1400, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1126, "Num": 2, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 567, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 163, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 88, "Num": 1, "Rate": 2500, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem08": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8835426016772572659, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1400, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1126, "Num": 2, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 565, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 158, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 86, "Num": 1, "Rate": 2500, "RareItemFlag": false }, "RewardItem08": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8835431514330713714, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1400, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1126, "Num": 2, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 568, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 162, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 90, "Num": 1, "Rate": 2500, "RareItemFlag": false }, "RewardItem08": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8835432613842341925, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1400, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1126, "Num": 2, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 569, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 160, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 88, "Num": 1, "Rate": 2500, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem08": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8835429315307457292, "RewardItem00": { "Category": 0, "ItemID": 1125, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1400, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1126, "Num": 2, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 570, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 161, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 800, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 86, "Num": 1, "Rate": 2500, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem08": { "Category": 1, "ItemID": 0, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem09": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 6567691901553146942, "RewardItem00": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 566, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 159, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 170, "Num": 3, "Rate": 1000, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem09": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 900, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 6567690802041518731, "RewardItem00": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 567, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 163, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 171, "Num": 3, "Rate": 1000, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem09": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 900, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 6567689702529890520, "RewardItem00": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 565, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 158, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 169, "Num": 3, "Rate": 1000, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem09": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 900, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 6567697399111287997, "RewardItem00": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 568, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 160, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 172, "Num": 3, "Rate": 1000, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem09": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 900, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 6567696299599659786, "RewardItem00": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 569, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 162, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 173, "Num": 3, "Rate": 1000, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem09": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 900, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 6567695200088031575, "RewardItem00": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1126, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 570, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 161, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 157, "Num": 1, "Rate": 700, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 174, "Num": 3, "Rate": 1000, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem09": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 900, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem15": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem16": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 11960178471819505075, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 1100, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 566, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 170, "Num": 3, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 583, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1908, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1232, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1231, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1233, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1234, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 550, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 11960179571331133286, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 1100, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 567, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 171, "Num": 3, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 582, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1905, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1235, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1236, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1237, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1238, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 550, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 11960180670842761497, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 1100, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 565, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 169, "Num": 3, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 580, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1908, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1904, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem10": { "Category": 0, "ItemID": 1905, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem11": { "Category": 0, "ItemID": 1907, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem12": { "Category": 0, "ItemID": 1906, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 550, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 11960181770354389708, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 1100, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 568, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 172, "Num": 3, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 583, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1907, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1239, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1240, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1241, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1242, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 550, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 11960182869866017919, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 1100, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 569, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 173, "Num": 3, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 582, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1906, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1243, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1244, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1245, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1246, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 550, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 11960183969377646130, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 2300, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 1100, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 570, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 173, "Num": 3, "Rate": 800, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 580, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1904, "Num": 1, "Rate": 250, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1249, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1250, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1248, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1247, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 400, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 400, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 550, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8092679411244492160, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 566, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 1128, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 583, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1908, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1232, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1231, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1233, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1234, "Num": 1, "Rate": 250, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 400, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 1606, "Num": 1, "Rate": 100, "RareItemFlag": true }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8092682709779376793, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 567, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 1128, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 582, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1905, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1235, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1236, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1237, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1238, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 400, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 1606, "Num": 1, "Rate": 100, "RareItemFlag": true }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8092681610267748582, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 565, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 1128, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 580, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1908, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1904, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem10": { "Category": 0, "ItemID": 1905, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem11": { "Category": 0, "ItemID": 1907, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem12": { "Category": 0, "ItemID": 1906, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 400, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 1606, "Num": 1, "Rate": 100, "RareItemFlag": true }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8092684908802633215, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 568, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 1128, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 91, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 583, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1907, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1239, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1240, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1241, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1242, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 400, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 1606, "Num": 1, "Rate": 100, "RareItemFlag": true }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8092683809291005004, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 569, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 1128, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 89, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 582, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1906, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1243, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1244, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1245, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1246, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 400, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 1606, "Num": 1, "Rate": 100, "RareItemFlag": true }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } }, { "TableName": 8092687107825889637, "RewardItem00": { "Category": 0, "ItemID": 1127, "Num": 1, "Rate": 1200, "RareItemFlag": false }, "RewardItem01": { "Category": 0, "ItemID": 1127, "Num": 2, "Rate": 800, "RareItemFlag": false }, "RewardItem02": { "Category": 0, "ItemID": 50, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem03": { "Category": 0, "ItemID": 570, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem04": { "Category": 0, "ItemID": 1128, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem05": { "Category": 0, "ItemID": 87, "Num": 1, "Rate": 1000, "RareItemFlag": false }, "RewardItem06": { "Category": 0, "ItemID": 580, "Num": 1, "Rate": 200, "RareItemFlag": false }, "RewardItem07": { "Category": 0, "ItemID": 92, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem08": { "Category": 0, "ItemID": 1904, "Num": 1, "Rate": 300, "RareItemFlag": true }, "RewardItem09": { "Category": 0, "ItemID": 1249, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem10": { "Category": 0, "ItemID": 1250, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem11": { "Category": 0, "ItemID": 1248, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem12": { "Category": 0, "ItemID": 1247, "Num": 1, "Rate": 300, "RareItemFlag": false }, "RewardItem13": { "Category": 0, "ItemID": 51, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem14": { "Category": 0, "ItemID": 795, "Num": 1, "Rate": 400, "RareItemFlag": true }, "RewardItem15": { "Category": 2, "ItemID": 0, "Num": 1, "Rate": 500, "RareItemFlag": false }, "RewardItem16": { "Category": 1, "ItemID": 0, "Num": 2, "Rate": 1000, "RareItemFlag": false }, "RewardItem17": { "Category": 0, "ItemID": 645, "Num": 1, "Rate": 200, "RareItemFlag": true }, "RewardItem18": { "Category": 0, "ItemID": 1606, "Num": 1, "Rate": 100, "RareItemFlag": true }, "RewardItem19": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem20": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem21": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem22": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem23": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem24": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem25": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem26": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem27": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem28": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false }, "RewardItem29": { "Category": 0, "ItemID": 0, "Num": 0, "Rate": 0, "RareItemFlag": false } } ] ================================================ FILE: RaidCrawler.Core/Resources/Blueberry/den_locations_blueberry.json ================================================ { "1-1-1": [ 1419.0885, 148.04196, -392.419 ], "1-1-2": [ 1423.5548, 148.04231, -424.686 ], "1-1-3": [ 1410.7599, 148.04143, -405.8 ], "1-1-4": [ 1436.2668, 148.04524, -363.392 ], "1-1-5": [ 1474.9999, 148.89914, -374.137 ], "1-1-6": [ 1520.5872, 149.44374, -411.826 ], "1-1-7": [ 1501.5801, 149.63086, -367.817 ], "1-1-8": [ 1557.1927, 150.11078, -360.717 ], "1-1-9": [ 1551.4225, 150.02913, -425.722 ], "1-1-10": [ 1519.4225, 148.06494, -451.194 ], "1-2-1": [ 1252.0518, 207.55095, -221.877 ], "1-2-2": [ 1313.0358, 204.323, -241.057 ], "1-2-3": [ 1290.7479, 203.124, -301.168 ], "1-2-4": [ 1201.3002, 204.66898, -183.835 ], "1-2-5": [ 1097.1854, 203.698, -188.816 ], "1-2-6": [ 1065.7256, 201.902, -191.272 ], "1-2-7": [ 1040.294, 201.90895, -187.294 ], "1-2-8": [ 1148.3553, 209.452, -199.242 ], "1-2-9": [ 1226.7849, 214.984, -265.716 ], "1-2-10": [ 1170.309, 205.28, -254.834 ], "1-3-1": [ 1071.7174, 158.448, -537.391 ], "1-3-2": [ 1068.6727, 157.11052, -559.047 ], "1-3-3": [ 1045.4989, 157.17328, -587.088 ], "1-3-4": [ 1042.2764, 148.613, -650.751 ], "1-3-5": [ 1081.3931, 148.90382, -653.637 ], "1-3-6": [ 1097.4799, 151.877, -609.471 ], "1-3-7": [ 1117.448, 155.383, -556.081 ], "1-3-8": [ 1129.0808, 152.026, -597.758 ], "1-3-9": [ 1142.7708, 148.772, -648.766 ], "1-3-10": [ 1170.9624, 151.894, -600.95 ], "2-1-1": [ 1016.33624, 177.33165, -1203.594 ], "2-1-2": [ 1017.16254, 176.99893, -1232.061 ], "2-1-3": [ 1015.6817, 176.396, -1283.585 ], "2-1-4": [ 1019.1868, 176.9319, -1366.998 ], "2-1-5": [ 1067.5999, 177.03183, -1307.764 ], "2-1-6": [ 1080.762, 176.45879, -1299.979 ], "2-1-7": [ 1084.4038, 175.94942, -1292.7058 ], "2-1-8": [ 1080.5182, 177.6765, -1212.065 ], "2-1-9": [ 1071.9427, 177.73576, -1205.551 ], "2-1-10": [ 1062.274, 177.99489, -1203.383 ], "2-2-1": [ 1279.485, 164.97044, -1339.863 ], "2-2-2": [ 1291.714, 164.386, -1329.968 ], "2-2-3": [ 1310.1156, 159.7946, -1352.672 ], "2-2-4": [ 1337.0566, 160.20302, -1343.9703 ], "2-2-5": [ 1423.9888, 163.9035, -1330.431 ], "2-2-6": [ 1325.1428, 199.81642, -1261.2911 ], "2-2-7": [ 1372.0631, 202.06894, -1274.734 ], "2-2-8": [ 1416.4108, 200.187, -1259.088 ], "2-2-9": [ 1349.3671, 198.255, -1218.78 ], "2-2-10": [ 1405.794, 199.52132, -1219.589 ], "2-3-1": [ 1327.8322, 259.53726, -1075.392 ], "2-3-2": [ 1307.8423, 275.27484, -1067.1046 ], "2-3-3": [ 1290.0579, 275.1577, -1051.824 ], "2-3-4": [ 1277.651, 275.18298, -1076.735 ], "2-3-5": [ 1246.5325, 265.143, -1065.547 ], "2-3-6": [ 1123.7737, 286.91684, -1069.353 ], "2-3-7": [ 1096.5541, 286.84732, -1093.816 ], "2-3-8": [ 1094.2689, 286.9964, -1141.195 ], "2-3-9": [ 1117.3457, 268.95337, -1171.502 ], "2-3-10": [ 1156.5371, 269.36856, -1174.2267 ], "3-1-1": [ 828.9771, 149.972, -784.436 ], "3-1-2": [ 831.9324, 151.004, -756.284 ], "3-1-3": [ 884.82874, 149.97223, -750.833 ], "3-1-4": [ 898.41235, 158.10477, -686.125 ], "3-1-5": [ 902.8407, 163.03687, -620.0809 ], "3-1-6": [ 981.9706, 188.56688, -750.6608 ], "3-1-7": [ 932.3204, 142.118, -898.17 ], "3-1-8": [ 981.9546, 188.48013, -811.596 ], "3-1-9": [ 890.2766, 150.784, -985.77 ], "3-1-10": [ 912.5114, 150.193, -988.018 ], "3-2-1": [ 878.6087, 155.1415, -576.183 ], "3-2-2": [ 951.52997, 150.0134, -546.3993 ], "3-2-3": [ 903.09827, 149.94165, -544.509 ], "3-2-4": [ 866.2156, 150.29373, -523.223 ], "3-2-5": [ 942.8039, 169.0707, -513.136 ], "3-2-6": [ 934.25195, 149.98552, -485.86 ], "3-2-7": [ 922.212, 151.06136, -429.567 ], "3-2-8": [ 882.4181, 157.063, -444.072 ], "3-2-9": [ 850.69867, 165.334, -445.865 ], "3-2-10": [ 818.0774, 165.782, -474.72 ], "3-3-1": [ 356.08408, 301.2941, -877.756 ], "3-3-2": [ 348.9274, 298.0795, -829.235 ], "3-3-3": [ 517.80237, 266.99832, -918.032 ], "3-3-4": [ 469.88144, 267.063, -869.483 ], "3-3-5": [ 522.4888, 238.50424, -805.429 ], "3-3-6": [ 551.46576, 255.54094, -785.36536 ], "3-3-7": [ 607.04755, 260.4361, -740.397 ], "3-3-8": [ 271.7786, 300.326, -833.105 ], "3-3-9": [ 226.70793, 300.56793, -867.474 ], "3-3-10": [ 228.09012, 300.0921, -835.308 ], "4-1-1": [ 752.41907, 230.08, -1106.215 ], "4-1-2": [ 772.03986, 228.604, -1146.407 ], "4-1-3": [ 723.7713, 233.19969, -1101.199 ], "4-1-4": [ 734.70514, 231.57997, -1165.252 ], "4-1-5": [ 664.11035, 248.67715, -1136.347 ], "4-1-6": [ 716.94745, 238.61479, -1145.314 ], "4-1-7": [ 826.9544, 202.50842, -1119.797 ], "4-1-8": [ 856.4173, 206.696, -1174.174 ], "4-1-9": [ 856.0273, 206.48924, -1200.9009 ], "4-1-10": [ 803.82336, 205.7457, -1216.426 ], "4-2-1": [ 435.86853, 325.98355, -1231.285 ], "4-2-2": [ 458.79648, 326.27008, -1219.4116 ], "4-2-3": [ 586.4578, 286.57764, -1056.789 ], "4-2-4": [ 563.712, 289.362, -1070.082 ], "4-2-5": [ 579.3643, 289.27164, -1128.282 ], "4-2-6": [ 536.32513, 278.26904, -1020.43 ], "4-2-7": [ 513.385, 281.471, -1031.214 ], "4-2-8": [ 573.46356, 288.49515, -1102.983 ], "4-2-9": [ 453.9, 337.06, -1202.554 ], "4-2-10": [ 428.5264, 322.2193, -1267.844 ], "4-3-1": [ 922.1982, 189.046, -1274.857 ], "4-3-2": [ 902.9876, 192.69, -1233.6 ], "4-3-3": [ 951.04846, 175.43738, -1232.478 ], "4-3-4": [ 952.11365, 179.21931, -1288.004 ], "4-3-5": [ 943.5256, 183.9302, -1306.7241 ], "4-3-6": [ 936.4061, 186.04524, -1335.4731 ], "4-3-7": [ 868.5423, 188.25282, -1316.318 ], "4-3-8": [ 949.6805, 159.84758, -1211.751 ], "4-3-9": [ 952.7789, 150.00853, -1122.505 ], "4-3-10": [ 852.7681, 151.34383, -1026.714 ], "5-1-1": [ 1488.781, 151.268, -605.567 ], "5-1-2": [ 1496.3743, 154.41519, -643.133 ], "5-1-3": [ 1494.8785, 153.89922, -707.701 ], "5-1-4": [ 1465.9845, 149.88274, -765.671 ], "5-1-5": [ 1560.1207, 147.83495, -632.298 ], "5-1-6": [ 1555.1918, 151.00336, -686.377 ], "5-1-7": [ 1528.208, 145.2794, -755.519 ], "5-1-8": [ 1581.8339, 142.91824, -738.862 ], "5-1-9": [ 1626.1547, 144.838, -711.239 ], "5-1-10": [ 1613.0289, 148.751, -600.219 ], "5-2-1": [ 1818.1382, 154.51, -921.299 ], "5-2-2": [ 1806.861, 147.04924, -879.711 ], "5-2-3": [ 1754.8514, 146.68506, -822.536 ], "5-2-4": [ 1712.112, 153.27354, -979.225 ], "5-2-5": [ 1658.7676, 144.423, -955.149 ], "5-2-6": [ 1599.0187, 141.47139, -949.046 ], "5-2-7": [ 1522.9104, 142.667, -964.225 ], "5-2-8": [ 1495.181, 138.68, -827.96 ], "5-2-9": [ 1583.8597, 138.77013, -853.764 ], "5-2-10": [ 1668.9205, 140.844, -857.105 ], "5-3-1": [ 1171.5894, 171.371, -913.42 ], "5-3-2": [ 1226.1235, 163.196, -949.511 ], "5-3-3": [ 1266.9213, 160.249, -964.4659 ], "5-3-4": [ 1355.5631, 157.00957, -976.2744 ], "5-3-5": [ 1320.5306, 158.74039, -891.13043 ], "5-3-6": [ 1110.9374, 183.92676, -842.42413 ], "5-3-7": [ 1124.6, 182.922, -797.35 ], "5-3-8": [ 1022.9764, 188.03319, -824.599 ], "5-3-9": [ 1010.551, 189.744, -792.887 ], "5-3-10": [ 1060.2122, 187.44077, -755.21924 ], "6-1-1": [ 1640.813, 177.504, -1168.25 ], "6-1-2": [ 1566.0693, 169.84149, -1232.911 ], "6-1-3": [ 1553.0303, 167.162, -1189.424 ], "6-1-4": [ 1700.7095, 175.17484, -1270.924 ], "6-1-5": [ 1652.9579, 171.59784, -1301.27 ], "6-1-6": [ 1712.0559, 176.58649, -1373.716 ], "6-1-7": [ 1676.6033, 178.59967, -1447.577 ], "6-1-8": [ 1565.9803, 168.40674, -1401.225 ], "6-1-9": [ 1626.0497, 176.55571, -1412.6875 ], "6-1-10": [ 1658.0721, 175.1234, -1373.4296 ], "6-2-1": [ 1515.5121, 152.71, -1136.583 ], "6-2-2": [ 1497.4498, 150.74547, -1140.476 ], "6-2-3": [ 1498.6233, 153.0068, -1123.891 ], "6-2-4": [ 1514.0331, 150.34961, -1013.60394 ], "6-2-5": [ 1535.1559, 151.73198, -1012.4256 ], "6-2-6": [ 1571.1969, 150.95287, -1029.7358 ], "6-2-7": [ 1590.8354, 151.5817, -1014.967 ], "6-2-8": [ 1649.1296, 152.2982, -1017.839 ], "6-2-9": [ 1730.375, 149.97003, -1139.147 ], "6-2-10": [ 1839.7775, 149.97003, -1075.984 ], "6-3-1": [ 1521.7024, 158.815, -1514.101 ], "6-3-2": [ 1445.68, 158.98189, -1432.262 ], "6-3-3": [ 1533.4103, 158.75304, -1573.623 ], "6-3-4": [ 1501.8605, 162.70634, -1640.544 ], "6-3-5": [ 1466.3531, 166.29079, -1603.804 ], "6-3-6": [ 1411.2712, 170.78725, -1617.362 ], "6-3-7": [ 1290.3329, 150.95445, -1472.374 ], "6-3-8": [ 1224.2115, 151.07108, -1554.768 ], "6-3-9": [ 1126.4038, 152.242, -1638.164 ], "6-3-10": [ 1111.8031, 163.462, -1571.71 ], "7-1-1": [ 239.6862, 258.06702, -622.386 ], "7-1-2": [ 245.34721, 257.8467, -574.1572 ], "7-1-3": [ 322.7471, 238.47914, -593.8611 ], "7-1-4": [ 312.4859, 238.48666, -617.1511 ], "7-1-5": [ 333.91785, 238.46484, -664.4716 ], "7-1-6": [ 303.20178, 241.53632, -701.8762 ], "7-1-7": [ 195.6599, 261.94934, -725.6698 ], "7-1-8": [ 220.44046, 261.41174, -667.9975 ], "7-1-9": [ 206.73293, 261.53763, -678.0357 ], "7-1-10": [ 350.08594, 238.60786, -761.537 ], "7-2-1": [ 585.0683, 238.97029, -482.1728 ], "7-2-2": [ 624.2185, 238.98775, -509.208 ], "7-2-3": [ 514.82117, 257.4524, -549.074 ], "7-2-4": [ 463.77765, 256.69345, -487.876 ], "7-2-5": [ 368.81537, 151.0362, -485.055 ], "7-2-6": [ 374.50946, 150.368, -448.315 ], "7-2-7": [ 509.8159, 151.84164, -301.394 ], "7-2-8": [ 424.72958, 149.96648, -405.124 ], "7-2-9": [ 684.9533, 223.99881, -509.931 ], "7-2-10": [ 677.82477, 223.95534, -363.269 ], "7-3-1": [ 844.1056, 173.52843, -239.12384 ], "7-3-2": [ 791.419, 176.2921, -183.033 ], "7-3-3": [ 897.9364, 194.5656, -253.06 ], "7-3-4": [ 957.76135, 207.36443, -164.149 ], "7-3-5": [ 913.6737, 161.4973, -399.677 ], "7-3-6": [ 901.59863, 227.77214, -357.697 ], "7-3-7": [ 745.5921, 160.97404, -269.934 ], "7-3-8": [ 745.57275, 150.27386, -344.184 ], "7-3-9": [ 821.0334, 161.97406, -268.31 ], "7-3-10": [ 943.302, 193.71007, -282.376 ], "8-1-1": [ 538.42633, 167.8033, -1378.938 ], "8-1-2": [ 612.51685, 150.4303, -1382.6678 ], "8-1-3": [ 652.19775, 153.03133, -1330.6787 ], "8-1-4": [ 685.297, 149.99834, -1379.689 ], "8-1-5": [ 688.0585, 151.9933, -1279.951 ], "8-1-6": [ 657.89044, 150.05792, -1242.422 ], "8-1-7": [ 731.4747, 149.98692, -1262.316 ], "8-1-8": [ 776.7358, 150.51617, -1360.141 ], "8-1-9": [ 792.3379, 150.00835, -1433.337 ], "8-1-10": [ 842.3579, 149.98993, -1381.0255 ], "8-2-1": [ 798.84247, 157.74162, -1752.454 ], "8-2-2": [ 793.8582, 157.3892, -1740.4077 ], "8-2-3": [ 779.18176, 156.68509, -1760.1102 ], "8-2-4": [ 732.7907, 162.955, -1732.335 ], "8-2-5": [ 708.20764, 164.59695, -1729.043 ], "8-2-6": [ 779.96204, 150.024, -1675.608 ], "8-2-7": [ 900.15857, 150.14003, -1844.203 ], "8-2-8": [ 944.8461, 150.1558, -1853.898 ], "8-2-9": [ 962.88, 152.25775, -1837.121 ], "8-2-10": [ 929.7773, 153.294, -1799.902 ], "8-3-1": [ 467.30118, 151.15369, -1578.599 ], "8-3-2": [ 451.2206, 151.45712, -1546.153 ], "8-3-3": [ 481.1984, 150.89993, -1534.525 ], "8-3-4": [ 499.5463, 151.02528, -1549.534 ], "8-3-5": [ 514.4543, 153.36147, -1473.543 ], "8-3-6": [ 547.09705, 151.63441, -1480.276 ], "8-3-7": [ 553.9428, 149.59, -1551.925 ], "8-3-8": [ 530.1102, 149.60109, -1613.781 ], "8-3-9": [ 470.6657, 170.76, -1597.273 ], "8-3-10": [ 563.5199, 157.24396, -1660.241 ] } ================================================ FILE: RaidCrawler.Core/Resources/Kitakami/den_locations_kitakami.json ================================================ { "1-1-1": [ 846.22974, 114.42846, -373.968 ], "1-1-2": [ 798.17694, 102.75056, -313.234 ], "1-1-3": [ 855.7787, 106.48179, -311.674 ], "1-1-4": [ 955.532, 111.424126, -366.255 ], "1-1-5": [ 913.2011, 112.501, -356.487 ], "1-1-6": [ 960.9623, 101.56054, -285.189 ], "1-1-7": [ 805.8575, 103.86321, -354.653 ], "1-1-8": [ 846.04346, 113.85453, -287.311 ], "1-1-9": [ 1105.3696, 106.750145, -323.601 ], "1-1-10": [ 1148.1714, 100.16275, -332.825 ], "1-2-1": [ 1179.6296, 101.030785, -382.894 ], "1-2-2": [ 1268.2388, 108.53412, -330.397 ], "1-2-3": [ 1246.5443, 104.10581, -384.231 ], "1-2-4": [ 1191.881, 102.28596, -402.861 ], "1-2-5": [ 1240.0948, 101.69444, -410.854 ], "1-2-6": [ 1290.227, 104.82199, -330.201 ], "1-2-7": [ 1365.0533, 101.67295, -338.251 ], "1-2-8": [ 1462.4418, 101.502815, -313.63 ], "1-2-9": [ 1476.6232, 101.814926, -305.544 ], "1-2-10": [ 1205.9265, 108.37691, -360.001 ], "2-1-1": [ 1030.3679, 150.07591, -623.21606 ], "2-1-2": [ 1018.43555, 140.467, -602.084 ], "2-1-3": [ 998.1105, 137.87343, -537.874 ], "2-1-4": [ 968.794, 145.48723, -532.609 ], "2-1-5": [ 980.14075, 149.76472, -572.076 ], "2-1-6": [ 927.0305, 154.8074, -525.698 ], "2-1-7": [ 868.3758, 161.64398, -540.436 ], "2-1-8": [ 826.0617, 169.97195, -622.549 ], "2-1-9": [ 791.4233, 169.97707, -605.06 ], "2-1-10": [ 808.4578, 167.98035, -561.419 ], "2-1-11": [ 777.91656, 165.38742, -513.138 ], "2-1-12": [ 755.0171, 152.91103, -477.354 ], "2-1-13": [ 819.39417, 160.01215, -449.342 ], "2-1-14": [ 896.1016, 145.6066, -476.972 ], "2-1-15": [ 935.18195, 133.67989, -402.373 ], "2-1-16": [ 889.71594, 146.00702, -415.899 ], "2-1-17": [ 955.3469, 129.68285, -466.468 ], "2-1-18": [ 1013.7858, 120.823044, -437.832 ], "2-1-19": [ 1048.2728, 113.41807, -454.329 ], "2-1-20": [ 1041.8424, 115.785736, -399.116 ], "3-1-1": [ 1166.2239, 148.64473, -621.404 ], "3-1-2": [ 1172.457, 162.74866, -660.805 ], "3-1-3": [ 1223.5143, 136.7581, -586.718 ], "3-1-4": [ 1368.7694, 109.872635, -455.703 ], "3-1-5": [ 1239.3713, 109.246826, -521.259 ], "3-1-6": [ 1317.0145, 121.572, -521.628 ], "3-1-7": [ 1250.6053, 175.478, -630.383 ], "3-1-8": [ 1252.2467, 136.92429, -549.994 ], "3-1-9": [ 1229.5754, 178.855, -665.744 ], "3-1-10": [ 1304.6097, 148.9432, -622.814 ], "3-1-11": [ 1280.2036, 158.64078, -672.833 ], "3-1-12": [ 1349.3269, 162.84607, -664.68 ], "3-1-13": [ 1377.0212, 137.46648, -587.322 ], "3-1-14": [ 1422.3616, 138.84416, -532.106 ], "3-1-15": [ 1335.6522, 118.480675, -740.591 ], "3-1-16": [ 1355.4738, 118.01001, -742.209 ], "3-1-17": [ 1398.3975, 127.01507, -769.613 ], "3-2-1": [ 1268.6038, 107.83134, -457.391 ], "3-2-2": [ 1284.0038, 107.09443, -414.334 ], "3-2-3": [ 1317.0428, 106.87741, -425.788 ], "3-2-4": [ 1312.3889, 106.8793, -453.98 ], "3-2-5": [ 1338.2208, 106.874664, -397.197 ], "3-2-6": [ 1387.3527, 106.87425, -423.341 ], "3-2-7": [ 1446.9364, 107.79708, -401.536 ], "3-2-8": [ 1438.5587, 122.18235, -467.95 ], "3-2-9": [ 1423.8807, 124.54978, -481.438 ], "3-2-10": [ 1483.9543, 115.96129, -446.092 ], "3-2-11": [ 1547.9482, 113.54719, -485.21 ], "3-2-12": [ 1533.3644, 135.355, -523.593 ], "3-2-13": [ 1489.3297, 139.802, -524.129 ], "3-2-14": [ 1580.447, 110.89938, -495.994 ], "3-2-15": [ 1403.1288, 163.38531, -672.494 ], "3-3-1": [ 1637.1284, 111.57947, -586.188 ], "3-3-2": [ 1599.1449, 111.20168, -604.992 ], "3-3-3": [ 1579.2415, 109.625404, -626.118 ], "3-3-4": [ 1608.6857, 112.41428, -624.816 ], "3-3-5": [ 1636.4196, 111.6, -603.747 ], "3-3-6": [ 1640.0033, 114.10015, -618.526 ], "3-3-7": [ 1631.7852, 113.83738, -642.011 ], "3-3-8": [ 1627.748, 113.97639, -681.149 ], "3-3-9": [ 1564.9512, 109.265236, -667.666 ], "3-3-10": [ 1598.6761, 113.272575, -655.203 ], "3-3-11": [ 1567.2847, 109.39358, -683.849 ], "3-3-12": [ 1516.51, 110.807556, -754.435 ], "3-3-13": [ 1543.0148, 107.68, -677.908 ], "3-3-14": [ 1529.3859, 110.63602, -766.657 ], "3-3-15": [ 1528.384, 107.65499, -680.014 ], "3-3-16": [ 1557.0208, 109.42456, -711.285 ], "3-3-17": [ 1579.5963, 109.45525, -727.466 ], "3-3-18": [ 1558.6086, 110.810776, -750.397 ], "3-3-19": [ 1581.0404, 109.75419, -765.358 ], "3-3-20": [ 1577.7737, 108.51887, -786.112 ], "3-3-21": [ 1567.3444, 109.25985, -773.443 ], "3-4-1": [ 1557.9932, 148.49863, -573.779 ], "3-4-2": [ 1542.5685, 150.396, -602.9 ], "3-4-3": [ 1510.425, 159.1086, -627.165 ], "3-4-4": [ 1504.174, 156.82823, -610.742 ], "3-4-5": [ 1518.4513, 152.58159, -600.178 ], "4-1-1": [ 1326.0043, 191.05098, -789.476 ], "4-1-2": [ 1313.2537, 187.21994, -800.739 ], "4-1-3": [ 1258.6984, 232.99533, -798.872 ], "4-1-4": [ 1398.1449, 259.9759, -948.958 ], "4-1-5": [ 1254.5764, 231.94565, -867.306 ], "4-1-6": [ 1263.686, 231.26201, -887.833 ], "4-1-7": [ 1225.5981, 239.51578, -835.693 ], "4-1-8": [ 1430.4899, 221.46411, -893.678 ], "4-2-1": [ 1186.2485, 255.95497, -714.115 ], "4-2-2": [ 980.532, 324.29407, -790.475 ], "4-2-3": [ 891.632, 290.7475, -726.974 ], "4-2-4": [ 870.5291, 292.76895, -759.284 ], "4-2-5": [ 847.737, 294.261, -760.171 ], "4-2-6": [ 798.2488, 295.3543, -775.654 ], "5-1-1": [ 765.95526, 297.598, -775.314 ], "5-1-2": [ 738.2669, 304.09116, -824.64 ], "5-1-3": [ 651.2396, 336.581, -990.302 ], "5-1-4": [ 722.3125, 301.796, -788.843 ], "5-1-5": [ 619.52386, 342.035, -1032.077 ], "5-1-6": [ 730.72144, 304.3952, -826.80194 ], "5-1-7": [ 728.76013, 313.474, -844.992 ], "5-1-8": [ 661.1661, 343.0235, -1013.18 ], "5-1-9": [ 689.47614, 308.95673, -823.834 ], "5-1-10": [ 722.8817, 314.38535, -862.055 ], "5-1-11": [ 670.3366, 352.486, -1102.322 ], "5-1-12": [ 699.7691, 315.1623, -873.444 ], "5-1-13": [ 592.914, 346.45, -1069.327 ], "5-1-14": [ 655.0146, 311.145, -837.386 ], "5-1-15": [ 661.17773, 315.225, -856.022 ], "5-1-16": [ 678.3368, 316.86, -873.519 ], "5-1-17": [ 685.0733, 324.221, -897.534 ], "5-1-18": [ 659.46326, 322.611, -902.889 ], "5-1-19": [ 654.4056, 326.352, -933.8 ], "5-1-20": [ 612.98004, 331.624, -946.922 ], "5-2-1": [ 641.0928, 361.6279, -1119.441 ], "5-2-2": [ 683.27325, 364.33542, -1152.442 ], "5-2-3": [ 652.9494, 361.70752, -1186.411 ], "5-2-4": [ 621.7926, 368.18106, -1207.534 ], "5-2-5": [ 647.7449, 372.94666, -1244.846 ], "5-2-6": [ 684.0408, 375.7238, -1233.234 ], "5-2-7": [ 729.71515, 366.01486, -1211.88 ], "5-2-8": [ 721.07025, 358.82217, -1128.209 ], "5-2-9": [ 709.3635, 360.61716, -1157.045 ], "5-2-10": [ 736.06866, 363.856, -1164.882 ], "5-2-11": [ 750.29114, 371.1398, -1167.331 ], "5-2-12": [ 744.8277, 365.95038, -1189.159 ], "5-2-13": [ 741.97107, 375.57123, -1123.141 ], "5-2-14": [ 776.38226, 375.52618, -1139.789 ], "5-2-15": [ 796.93665, 378.48047, -1183.039 ], "5-2-16": [ 775.4524, 373.86682, -1211.284 ], "5-2-17": [ 750.82416, 375.2538, -1231.052 ], "5-2-18": [ 782.8879, 385.35385, -1250.207 ], "5-2-19": [ 815.03577, 387.32285, -1242.429 ], "5-2-20": [ 828.946, 387.173, -1217.107 ], "5-2-21": [ 846.39886, 391.44836, -1216.813 ], "5-2-22": [ 843.39026, 390.8575, -1241.585 ], "5-2-23": [ 865.3236, 399.19443, -1275.509 ], "5-2-24": [ 877.3149, 396.91818, -1240.418 ], "5-2-25": [ 902.2001, 401.30612, -1253.411 ], "5-2-26": [ 898.1883, 401.94745, -1285.14 ], "5-3-1": [ 997.987, 396.41617, -1240.59 ], "5-3-2": [ 1055.2811, 394.511, -1218.197 ], "5-3-3": [ 1057.0312, 396.1446, -1267.314 ], "5-3-4": [ 1082.6277, 394.909, -1298.119 ], "5-3-5": [ 1126.372, 394.87918, -1257.996 ], "5-3-6": [ 1110.8551, 393.87692, -1228.992 ], "5-3-7": [ 1146.7217, 395.55356, -1214.02 ], "5-3-8": [ 1070.4153, 396.07645, -1181.78 ], "5-3-9": [ 1106.8676, 399.80942, -1180.257 ], "5-3-10": [ 1248.1694, 319.829, -1079.226 ], "5-3-11": [ 957.5488, 401.17807, -1260.109 ], "5-3-12": [ 985.62994, 399.9053, -1289.229 ], "5-3-13": [ 1017.34155, 403.57, -1293.179 ], "5-3-14": [ 926.9026, 404.90158, -1288.843 ], "6-1-1": [ 864.757, 456.2357, -1008.809 ], "6-1-2": [ 873.2546, 448.95782, -1042.361 ], "6-1-3": [ 921.7229, 448.78796, -1064.561 ], "6-1-4": [ 898.4309, 451.01025, -1043.246 ], "6-1-5": [ 927.648, 450.26147, -946.941 ], "6-1-6": [ 911.9989, 450.29236, -973.686 ], "6-2-1": [ 976.18933, 453.37, -922.029 ], "6-2-2": [ 991.1592, 451.4779, -954.83 ], "6-2-3": [ 1036.5323, 449.75388, -957.164 ], "6-2-4": [ 1029.8392, 449.92612, -1008.871 ], "6-2-5": [ 1047.2432, 454.553, -1030.271 ], "7-1-1": [ 707.7987, 139.10295, -390.592 ], "7-1-2": [ 707.1355, 136.63344, -439.529 ], "7-1-3": [ 667.399, 134.95134, -365.918 ], "7-1-4": [ 661.81665, 135.03069, -425.384 ], "7-1-5": [ 633.237, 132.92201, -408.488 ], "7-1-6": [ 563.8754, 134.02281, -414.988 ], "7-1-7": [ 644.5717, 140.54465, -543.403 ], "7-1-8": [ 677.98395, 136.95573, -402.74 ], "7-1-9": [ 538.0679, 161.875, -577.022 ], "7-1-10": [ 596.0277, 153.03377, -656.538 ], "7-1-11": [ 516.3441, 147.59729, -497.962 ], "7-1-12": [ 410.9617, 138.84058, -545.376 ], "7-1-13": [ 466.82968, 145.364, -392.768 ], "7-1-14": [ 502.85052, 168.20988, -614.72 ], "7-1-15": [ 453.0873, 153.91959, -669.536 ], "7-1-16": [ 528.23987, 158.44182, -687.773 ], "7-1-17": [ 525.1523, 152.47316, -524.9303 ], "7-1-18": [ 554.7286, 154.89615, -485.269 ], "7-1-19": [ 621.6161, 151.8455, -499.451 ], "7-1-20": [ 631.5874, 142.45407, -437.723 ], "7-2-1": [ 369.8985, 158.82059, -911.846 ], "7-2-2": [ 399.74078, 163.86128, -999.486 ], "7-2-3": [ 344.6998, 166.23573, -965.888 ], "7-2-4": [ 288.0577, 169.31651, -1015.487 ], "7-2-5": [ 280.67697, 174.83067, -1055.033 ], "7-2-6": [ 320.61887, 177.6219, -1063.001 ], "7-2-7": [ 337.09232, 179.85603, -1077.462 ], "7-2-8": [ 359.27032, 169.58286, -1040.055 ], "7-2-9": [ 386.61865, 171.6276, -1062.528 ], "7-2-10": [ 427.97385, 176.25217, -1031.294 ], "7-2-11": [ 443.15656, 176.65547, -1103.988 ], "7-2-12": [ 415.3937, 178.8055, -1106.969 ], "7-2-13": [ 398.0623, 177.64043, -1097.182 ], "7-2-14": [ 363.10443, 183.07512, -1107.879 ], "7-2-15": [ 313.65442, 187.49307, -1131.615 ], "7-2-16": [ 277.72003, 184.11307, -1132.776 ], "7-2-17": [ 298.78662, 194.51111, -1186.072 ], "7-2-18": [ 350.87668, 198.44693, -1187.13 ], "7-2-19": [ 379.2678, 198.948, -1206.917 ], "7-2-20": [ 422.49075, 196.098, -1199.341 ], "7-2-21": [ 409.48438, 207.64, -1245.686 ], "7-2-22": [ 278.84842, 208.42476, -1255.184 ], "7-2-23": [ 331.18723, 213.1209, -1285.619 ], "7-2-24": [ 363.42596, 212.64319, -1309.486 ], "7-2-25": [ 389.21204, 211.91435, -1267.414 ], "7-3-1": [ 535.1756, 188.06117, -810.239 ], "7-3-2": [ 480.3213, 198.75916, -848.698 ], "7-3-3": [ 462.09497, 198.59908, -1016.36 ], "7-3-4": [ 457.4317, 193.74342, -1043.073 ], "7-3-5": [ 463.0531, 217.31798, -950.98 ], "7-3-6": [ 509.00867, 215.44481, -880.257 ], "7-3-7": [ 559.1606, 164.69261, -733.974 ], "7-3-8": [ 500.93512, 167.76015, -793.335 ], "7-3-9": [ 485.68698, 162.62012, -752.379 ], "7-3-10": [ 406.30353, 153.9614, -748.303 ], "7-3-11": [ 368.1815, 155.64052, -754.78 ], "7-3-12": [ 376.59338, 154.67438, -819.663 ], "7-3-13": [ 415.3626, 158.39568, -868.925 ], "8-1-1": [ 1555.1887, 106.99688, -294.945 ], "8-1-2": [ 1548.08, 107.4315, -341.72 ], "8-1-3": [ 1530.7975, 107.9003, -363.469 ], "8-1-4": [ 1575.3815, 107.8586, -319.375 ], "8-1-5": [ 1596.5104, 107.77778, -309.866 ], "8-1-6": [ 1595.3533, 108.94459, -331.636 ], "8-1-7": [ 1589.355, 111.04423, -362.351 ], "8-1-8": [ 1584.065, 112.557365, -426.743 ], "8-1-9": [ 1639.5199, 110.241264, -451.476 ], "8-1-10": [ 1615.0238, 111.04204, -453.546 ], "8-1-11": [ 1649.6805, 109.049614, -330.269 ], "8-1-12": [ 1666.4412, 109.42118, -344.406 ], "8-1-13": [ 1712.6609, 109.47252, -355.267 ], "8-1-14": [ 1716.4537, 109.50023, -397.155 ], "8-1-15": [ 1699.4832, 110.03478, -434.094 ], "8-1-16": [ 1715.7345, 110.38658, -453.72 ], "8-2-1": [ 1657.4487, 111.902214, -493.887 ], "8-2-2": [ 1704.7128, 111.14012, -496.467 ], "8-2-3": [ 1706.7322, 111.206375, -524.444 ], "8-2-4": [ 1703.4409, 112.30228, -563.071 ], "8-2-5": [ 1667.1761, 114.55351, -575.227 ], "8-2-6": [ 1681.0483, 114.02905, -601.418 ], "8-2-7": [ 1723.7335, 113.554276, -627.764 ], "8-2-8": [ 1712.9492, 113.76922, -639.996 ], "8-2-9": [ 1684.1245, 114.1375, -654.181 ], "8-2-10": [ 1663.762, 116.224846, -672.756 ], "8-2-11": [ 1703.3634, 114.23006, -682.909 ], "8-2-12": [ 1706.4171, 114.00804, -663.672 ], "8-3-1": [ 1676.9973, 114.936165, -701.10364 ], "8-3-2": [ 1744.0432, 112.00452, -747.16 ], "8-3-3": [ 1762.6487, 110.999, -788.2 ], "8-3-4": [ 1675.5552, 113.877205, -786.291 ], "8-3-5": [ 1663.4901, 113.64603, -761.073 ], "9-1-1": [ 1504.1533, 135.6679, -790.095 ], "9-1-2": [ 1579.2461, 135.7955, -810.102 ], "9-1-3": [ 1578.0872, 154.85283, -838.029 ], "9-1-4": [ 1523.4652, 164.95158, -845.217 ], "9-1-5": [ 1490.4625, 182.53535, -850.239 ], "9-1-6": [ 1670.8663, 134.951, -863.564 ], "9-1-7": [ 1686.7887, 134.9513, -820.049 ], "9-1-8": [ 1669.9598, 135.86174, -798.882 ], "9-1-9": [ 1770.5015, 135.855, -817.562 ], "9-1-10": [ 1718.8726, 165.40875, -868.039 ], "9-1-11": [ 1758.3578, 139.27536, -897.189 ], "9-1-12": [ 1679.7844, 163.36784, -918.774 ], "9-1-13": [ 1617.7446, 179.31053, -944.424 ], "9-1-14": [ 1597.6184, 162.26648, -1014.642 ], "9-1-15": [ 1735.7505, 134.46364, -1000.308 ], "9-1-16": [ 1678.8804, 134.89429, -1087.773 ], "9-1-17": [ 1586.1365, 175.14705, -1102.41 ], "9-1-18": [ 1615.7922, 135.92929, -1129.803 ], "9-1-19": [ 1591.52, 136.0671, -1163.238 ], "9-1-20": [ 1695.6937, 136.29211, -1163.76 ], "9-1-21": [ 1574.0894, 159.7138, -1191.205 ], "9-1-22": [ 1503.1017, 136.05283, -1223.222 ], "9-1-23": [ 1475.9567, 136.69885, -1183.543 ], "9-1-24": [ 1435.348, 136.1803, -1147.136 ], "9-1-25": [ 1445.3005, 135.87, -1106.021 ], "10-1-1": [ 669.2722, 182.77, -1692.935 ], "10-1-2": [ 708.2694, 190.38007, -1584.594 ], "10-1-3": [ 755.2973, 186.80806, -1591.727 ], "10-1-4": [ 841.6826, 183.48526, -1466.513 ], "10-1-5": [ 780.34595, 185.27036, -1492.687 ], "10-1-6": [ 773.492, 188.45854, -1459.688 ], "10-1-7": [ 705.46655, 185.27, -1423.438 ], "10-1-8": [ 593.47565, 188.5799, -1663.523 ], "10-1-9": [ 717.5562, 183.84134, -1508.371 ], "10-1-10": [ 654.8929, 183.24605, -1578.562 ], "10-1-11": [ 630.7513, 177.74345, -1539.095 ], "10-1-12": [ 572.3651, 185.05518, -1628.113 ], "10-1-13": [ 529.055, 188.8755, -1663.241 ], "10-1-14": [ 473.07568, 185.06699, -1615.032 ], "10-1-15": [ 419.01776, 189.51976, -1641.168 ], "10-1-16": [ 353.521, 184.48824, -1631.146 ], "10-1-17": [ 378.69937, 203.79393, -1692.141 ], "10-2-1": [ 382.40912, 192.04659, -1655.473 ], "10-2-2": [ 436.93774, 190.95218, -1555.921 ], "10-2-3": [ 357.44885, 183.822, -1559.655 ], "10-2-4": [ 552.33344, 191.54659, -1535.022 ], "10-2-5": [ 557.4272, 185.10689, -1479.699 ], "10-2-6": [ 626.69086, 184.96893, -1419.323 ], "10-2-7": [ 581.90485, 186.1944, -1381.223 ], "10-2-8": [ 528.37946, 185.47147, -1423.236 ], "10-2-9": [ 498.9816, 184.89848, -1358.385 ], "10-2-10": [ 481.32437, 198.6911, -1288.875 ], "10-2-11": [ 343.01382, 186.22382, -1464.158 ], "10-2-12": [ 352.13977, 191.32964, -1364.287 ], "10-2-13": [ 384.45575, 180.01268, -1406.858 ], "10-2-14": [ 415.4119, 182.81897, -1512.64 ], "10-2-15": [ 468.5659, 183.861, -1480.801 ], "11-1-1": [ 904.8035, 191.84674, -1472.809 ], "11-1-2": [ 888.94727, 192.06335, -1509.557 ], "11-1-3": [ 930.9065, 187.54407, -1535.127 ], "11-1-4": [ 868.38586, 190.35971, -1554.811 ], "11-1-5": [ 949.6296, 184.22351, -1603.84 ], "11-1-6": [ 907.0732, 185.12164, -1621.015 ], "11-1-7": [ 799.0595, 203.90375, -1627.241 ], "11-1-8": [ 847.8456, 190.65326, -1670.272 ], "11-1-9": [ 931.8259, 184.6732, -1652.769 ], "11-1-10": [ 956.12054, 189.44838, -1691.245 ], "11-1-11": [ 976.6099, 184.81346, -1652.737 ], "11-1-12": [ 1031.6913, 185.62062, -1624.439 ], "11-1-13": [ 1125.1874, 184.22322, -1633.238 ], "11-1-14": [ 1176.729, 184.153, -1508.272 ], "11-1-15": [ 1172.0875, 184.62653, -1618.838 ], "11-1-16": [ 1221.5781, 184.22395, -1652.276 ], "11-1-17": [ 1265.6476, 184.3437, -1679.449 ], "11-1-18": [ 1298.7477, 184.22313, -1646.433 ], "11-1-19": [ 1321.9968, 190.632, -1650.338 ], "11-1-20": [ 1207.2268, 185.084, -1550.199 ], "11-1-21": [ 1241.2039, 184.64323, -1475.407 ], "11-1-22": [ 1192.6494, 184.894, -1438.851 ], "11-1-23": [ 1236.7352, 204.88625, -1417.898 ], "11-1-24": [ 1263.7279, 204.9939, -1444.988 ], "11-1-25": [ 1219.0742, 264.54733, -1341.863 ], "11-1-26": [ 1056.0354, 264.832, -1420.904 ], "11-1-27": [ 1006.7584, 227.71002, -1485.031 ], "11-1-28": [ 1040.4497, 184.223, -1555.138 ], "11-1-29": [ 1127.3389, 184.38539, -1509.865 ], "11-2-1": [ 1339.0238, 158.88576, -1391.738 ], "11-2-2": [ 1416.4022, 151.073, -1459.796 ], "11-2-3": [ 1381.5237, 154.732, -1388.307 ], "11-2-4": [ 1323.5999, 158.77534, -1419.645 ], "11-2-5": [ 1285.411, 149.6697, -1508.172 ], "11-2-6": [ 1348.785, 149.82632, -1566.319 ], "11-2-7": [ 1340.0052, 151.081, -1459.918 ], "11-2-8": [ 1344.0778, 149.78392, -1510.286 ], "11-2-9": [ 1294.3138, 149.78809, -1568.56 ], "11-2-10": [ 1455.397, 157.13982, -1519.702 ], "11-2-11": [ 1396.2888, 150.56128, -1567.269 ], "11-2-12": [ 1375.0669, 159.43933, -1600.436 ], "11-2-13": [ 1480.5106, 147.07672, -1654.515 ], "11-2-14": [ 1483.9135, 146.22993, -1587.261 ], "11-2-15": [ 1528.5228, 154.74026, -1551.909 ], "11-2-16": [ 1572.5388, 162.41393, -1521.592 ], "11-2-17": [ 1563.5168, 156.35912, -1711.251 ], "11-2-18": [ 1614.7557, 160.38036, -1669.059 ], "11-2-19": [ 1567.6913, 166.59479, -1635.359 ], "11-2-20": [ 1698.3314, 165.62724, -1656.547 ], "11-2-21": [ 1711.5253, 164.236, -1616.213 ], "11-2-22": [ 1647.1498, 159.64148, -1607.39 ], "11-2-23": [ 1628.6115, 159.0479, -1545.598 ], "11-2-24": [ 1657.4407, 164.0309, -1521.895 ], "11-2-25": [ 1338.3695, 149.78305, -1614.628 ], "11-3-1": [ 1468.5099, 186.826, -1405.306 ], "11-3-2": [ 1426.0383, 187.40314, -1338.052 ], "11-3-3": [ 1357.8121, 202.73274, -1304.231 ], "11-3-4": [ 1327.475, 201.63109, -1335.284 ], "11-3-5": [ 1353.486, 203.59282, -1213.616 ], "11-3-6": [ 1409.9791, 183.78714, -1247.936 ], "11-3-7": [ 1502.0653, 184.242, -1278.927 ], "11-3-8": [ 1534.4829, 203.0619, -1432.727 ], "11-3-9": [ 1598.4512, 193.348, -1393.876 ], "11-3-10": [ 1674.4226, 185.39008, -1481.686 ], "11-3-11": [ 1637.6041, 186.43036, -1326.174 ], "11-3-12": [ 1651.385, 187.087, -1232.28 ], "11-3-13": [ 1551.782, 204.06793, -1351.94 ], "11-3-14": [ 1602.7625, 201.18614, -1334.228 ], "11-3-15": [ 1613.6155, 203.35764, -1241.687 ], "11-3-16": [ 1366.9633, 198.361, -1339.564 ] } ================================================ FILE: RaidCrawler.Core/Schemas/raids.fbs ================================================ namespace pkNX.Structures.FlatBuffers.Gen9; attribute "fs_vector"; attribute "fs_serializer"; attribute "fs_valueStruct"; attribute "fs_nonVirtual"; attribute "fs_unsafeStructVector"; enum RaidRomType : short { BOTH = 0, TYPE_A = 1, TYPE_B = 2, } table RaidEnemyTableArray (fs_serializer:"Greedy") { Table:[RaidEnemyTable] (required); } table RaidEnemyTable { Info:RaidEnemyInfo (required); } table DeliveryRaidEnemyTableArray (fs_serializer:"Greedy") { Table:[DeliveryRaidEnemyTable] (required); } table DeliveryRaidEnemyTable { Info:RaidEnemyInfo (required); } table RaidTimeData { IsActive:bool; GameLimit:int; ClientLimit:int; CommandLimit:int; PokeReviveTime:int; AiIntervalTime:int; AiIntervalRand:int; } table RaidEnemyInfo { RomVer:RaidRomType; No:int; DeliveryGroupID:byte; Difficulty:int; Rate:byte; DropTableFix:ulong; DropTableRandom:ulong; CaptureRate:byte; CaptureLv:byte; BossPokePara:PokeDataBattle (required); BossPokeSize:RaidBossSizeData (required); BossDesc:RaidBossData (required); TimeData:RaidTimeData (required); } table RaidBossSizeData { HeightType:int; HeightValue:short; WeightType:int; WeightValue:short; ScaleType:int; ScaleValue:short; } table RaidBossExtraData { Timing:short; Action:short; Value:short; Wazano:ushort; } table RaidBossData { HpCoef:short; PowerChargeTrigerHp:byte; PowerChargeTrigerTime:byte; PowerChargeLimitTime:short; PowerChargeCancelDamage:byte; PowerChargePenaltyTime:short; PowerChargePenaltyAction:ushort; PowerChargeDamageRate:byte; PowerChargeGemDamageRate:byte; PowerChargeChangeGemDamageRate:byte; ExtraAction1:RaidBossExtraData (required); ExtraAction2:RaidBossExtraData (required); ExtraAction3:RaidBossExtraData (required); ExtraAction4:RaidBossExtraData (required); ExtraAction5:RaidBossExtraData (required); ExtraAction6:RaidBossExtraData (required); DoubleActionTriggerHp:byte; DoubleActionTriggerTime:byte; DoubleActionRate:byte; } table DeliveryRaidPriorityArray (fs_serializer:"Greedy") { Table:[DeliveryRaidPriority] (required); } table DeliveryRaidPriority { VersionNo:int; GroupID:DeliveryGroupID (required); } table DeliveryGroupID { GroupID:GroupIDSet (required); } struct GroupIDSet (fs_valueStruct) { Table:[byte:10] (fs_unsafeStructVector); } table WazaSet { WazaId:ushort = 0; PointUp:byte = 0; } table ParamSet { HP :int; ATK:int; DEF:int; SPA:int; SPD:int; SPE:int; } table PokeDataBattle { DevId:ushort; FormId:short; Sex:int; Item:int; Level:int; BallId:int; WazaType:int; Waza1:WazaSet (required); Waza2:WazaSet (required); Waza3:WazaSet (required); Waza4:WazaSet (required); GemType:int; Seikaku:int; Tokusei:int; TalentType:int; TalentValue:ParamSet (required); TalentVnum:byte; EffortValue:ParamSet (required); RareType:int; ScaleType:int; ScaleValue:short; } table DeliveryRaidLotteryRewardItemArray (fs_serializer:"Greedy") { Table:[DeliveryRaidLotteryRewardItem] (required); } table DeliveryRaidLotteryRewardItem { TableName:ulong; RewardItem00:RaidLotteryRewardItemInfo (required); RewardItem01:RaidLotteryRewardItemInfo (required); RewardItem02:RaidLotteryRewardItemInfo (required); RewardItem03:RaidLotteryRewardItemInfo (required); RewardItem04:RaidLotteryRewardItemInfo (required); RewardItem05:RaidLotteryRewardItemInfo (required); RewardItem06:RaidLotteryRewardItemInfo (required); RewardItem07:RaidLotteryRewardItemInfo (required); RewardItem08:RaidLotteryRewardItemInfo (required); RewardItem09:RaidLotteryRewardItemInfo (required); RewardItem10:RaidLotteryRewardItemInfo (required); RewardItem11:RaidLotteryRewardItemInfo (required); RewardItem12:RaidLotteryRewardItemInfo (required); RewardItem13:RaidLotteryRewardItemInfo (required); RewardItem14:RaidLotteryRewardItemInfo (required); RewardItem15:RaidLotteryRewardItemInfo (required); RewardItem16:RaidLotteryRewardItemInfo (required); RewardItem17:RaidLotteryRewardItemInfo (required); RewardItem18:RaidLotteryRewardItemInfo (required); RewardItem19:RaidLotteryRewardItemInfo (required); RewardItem20:RaidLotteryRewardItemInfo (required); RewardItem21:RaidLotteryRewardItemInfo (required); RewardItem22:RaidLotteryRewardItemInfo (required); RewardItem23:RaidLotteryRewardItemInfo (required); RewardItem24:RaidLotteryRewardItemInfo (required); RewardItem25:RaidLotteryRewardItemInfo (required); RewardItem26:RaidLotteryRewardItemInfo (required); RewardItem27:RaidLotteryRewardItemInfo (required); RewardItem28:RaidLotteryRewardItemInfo (required); RewardItem29:RaidLotteryRewardItemInfo (required); } table DeliveryRaidFixedRewardItemArray (fs_serializer:"Greedy") { Table:[DeliveryRaidFixedRewardItem] (required); } table DeliveryRaidFixedRewardItem { TableName:ulong; RewardItem00:RaidFixedRewardItemInfo (required); RewardItem01:RaidFixedRewardItemInfo (required); RewardItem02:RaidFixedRewardItemInfo (required); RewardItem03:RaidFixedRewardItemInfo (required); RewardItem04:RaidFixedRewardItemInfo (required); RewardItem05:RaidFixedRewardItemInfo (required); RewardItem06:RaidFixedRewardItemInfo (required); RewardItem07:RaidFixedRewardItemInfo (required); RewardItem08:RaidFixedRewardItemInfo (required); RewardItem09:RaidFixedRewardItemInfo (required); RewardItem10:RaidFixedRewardItemInfo (required); RewardItem11:RaidFixedRewardItemInfo (required); RewardItem12:RaidFixedRewardItemInfo (required); RewardItem13:RaidFixedRewardItemInfo (required); RewardItem14:RaidFixedRewardItemInfo (required); } table RaidLotteryRewardItemInfo { Category:int; ItemID:int; Num:byte; Rate:int; RareItemFlag:bool; } table RaidFixedRewardItemInfo { Category:int; SubjectType:int; ItemID:int; Num:byte; } ================================================ FILE: RaidCrawler.Core/Structures/Areas.cs ================================================ using PKHeX.Core; namespace RaidCrawler.Core.Structures; public static class Areas { private static readonly string[] AreaList = [ "South Province (Area 1)", "", // Unused "", // Unused "South Province (Area 2)", "South Province (Area 4)", "South Province (Area 6)", "South Province (Area 5)", "South Province (Area 3)", "West Province (Area 1)", "Asado Desert", "West Province (Area 2)", "West Province (Area 3)", "Tagtree Thicket", "East Province (Area 3)", "East Province (Area 1)", "East Province (Area 2)", "Dalizapa Passage", "Casseroya Lake", "Glaseado Mountain", "North Province (Area 3)", "North Province (Area 1)", "North Province (Area 2)", ]; private static readonly string[] AreaListKitakami = [ "Kitakami Road", "Apple Hills", "Reveler's Road", "Oni Mountain", "Infernal Pass", "Crystal Pool", "Wistful Fields", "Mossfell Confluence", "Fellhorn Gorge", "Paradise Barrens", "Timeless Woods", ]; private static readonly string[] AreaListBlueberry = [ "Savanna Biome", "Coastal Biome", "Canyon Biome", "Polar Biome", "Savanna Biome", "Coastal Biome", "Canyon Biome", "Polar Biome", ]; public static string GetArea(int index, TeraRaidMapParent type) => type switch { TeraRaidMapParent.Kitakami => AreaListKitakami[index], TeraRaidMapParent.Blueberry => AreaListBlueberry[index], _ => AreaList[index], }; } ================================================ FILE: RaidCrawler.Core/Structures/FlatBufferStructures/DeliveryRaidFixedRewardItem.cs ================================================ namespace pkNX.Structures.FlatBuffers.Gen9; // ReSharper disable once ClassNeverInstantiated.Global public partial class DeliveryRaidFixedRewardItem { public const int Count = 15; public RaidFixedRewardItemInfo GetReward(int index) => index switch { 00 => RewardItem00, 01 => RewardItem01, 02 => RewardItem02, 03 => RewardItem03, 04 => RewardItem04, 05 => RewardItem05, 06 => RewardItem06, 07 => RewardItem07, 08 => RewardItem08, 09 => RewardItem09, 10 => RewardItem10, 11 => RewardItem11, 12 => RewardItem12, 13 => RewardItem13, 14 => RewardItem14, _ => throw new ArgumentOutOfRangeException(nameof(index), index, null), }; } ================================================ FILE: RaidCrawler.Core/Structures/FlatBufferStructures/DeliveryRaidLotteryRewardItem.cs ================================================ namespace pkNX.Structures.FlatBuffers.Gen9; // ReSharper disable once ClassNeverInstantiated.Global public partial class DeliveryRaidLotteryRewardItem { public const int RewardItemCount = 30; // Get reward item from index public RaidLotteryRewardItemInfo GetRewardItem(int index) => index switch { 00 => RewardItem00, 01 => RewardItem01, 02 => RewardItem02, 03 => RewardItem03, 04 => RewardItem04, 05 => RewardItem05, 06 => RewardItem06, 07 => RewardItem07, 08 => RewardItem08, 09 => RewardItem09, 10 => RewardItem10, 11 => RewardItem11, 12 => RewardItem12, 13 => RewardItem13, 14 => RewardItem14, 15 => RewardItem15, 16 => RewardItem16, 17 => RewardItem17, 18 => RewardItem18, 19 => RewardItem19, 20 => RewardItem20, 21 => RewardItem21, 22 => RewardItem22, 23 => RewardItem23, 24 => RewardItem24, 25 => RewardItem25, 26 => RewardItem26, 27 => RewardItem27, 28 => RewardItem28, 29 => RewardItem29, _ => throw new ArgumentOutOfRangeException(nameof(index), index, null), }; } ================================================ FILE: RaidCrawler.Core/Structures/FlatBufferStructures/PokeDataBattle.cs ================================================ using PKHeX.Core; namespace pkNX.Structures.FlatBuffers.Gen9; // ReSharper disable once ClassNeverInstantiated.Global public partial class PokeDataBattle { public void SerializePKHeX(BinaryWriter bw, sbyte captureLv, RaidSerializationFormat format) { if (format == RaidSerializationFormat.BaseROM) AssertRegularFormat(); // If any PointUp for a move is nonzero, throw an exception. if (Waza1.PointUp != 0 || Waza2.PointUp != 0 || Waza3.PointUp != 0 || Waza4.PointUp != 0) throw new ArgumentOutOfRangeException(nameof(WazaSet.PointUp), $"No {nameof(WazaSet.PointUp)} allowed!"); // flag BallId if not none if (BallId != 0) throw new ArgumentOutOfRangeException(nameof(BallId), BallId, $"No {nameof(BallId)} allowed!"); bw.Write(SpeciesConverter.GetNational9(DevId)); bw.Write((byte)FormId); bw.Write((byte)Sex); bw.Write((byte)Tokusei); bw.Write((byte)(TalentType == 1 ? TalentVnum : 0)); bw.Write((byte)RareType); bw.Write((byte)captureLv); // Write moves bw.Write(Waza1.WazaId); bw.Write(Waza2.WazaId); bw.Write(Waza3.WazaId); bw.Write(Waza4.WazaId); // ROM raids with 5 stars have a few entries that are defined as DEFAULT // If the type is not {specified}, the game will assume it is RANDOM. // Thus, DEFAULT behaves like RANDOM. // Let's clean up this mistake and make it explicit so we don't have to program this workaround in other tools. var gem = GemType is 0 ? 1 : GemType; bw.Write((byte)gem); } private void AssertRegularFormat() { if (TalentType != 1) throw new ArgumentOutOfRangeException(nameof(TalentType), TalentType, "Invalid talent type."); if (TalentVnum == 0 && DevId != (ushort)Species.Pachirisu && Level != 35) // nice mistake gamefreak -- 3star Pachirisu is 0 IVs. throw new ArgumentOutOfRangeException(nameof(TalentVnum), TalentVnum, "No min flawless IVs?"); if (Seikaku != 0) throw new ArgumentOutOfRangeException(nameof(Seikaku), Seikaku, $"No {nameof(Seikaku)} allowed!"); } } ================================================ FILE: RaidCrawler.Core/Structures/FlatBufferStructures/RaidBossData.cs ================================================ namespace pkNX.Structures.FlatBuffers.Gen9; // ReSharper disable once ClassNeverInstantiated.Global public partial class RaidBossData { public void SerializePKHeX(BinaryWriter bw) { bw.Write(ExtraAction1.Wazano); bw.Write(ExtraAction2.Wazano); bw.Write(ExtraAction3.Wazano); bw.Write(ExtraAction4.Wazano); bw.Write(ExtraAction5.Wazano); bw.Write(ExtraAction6.Wazano); } } ================================================ FILE: RaidCrawler.Core/Structures/FlatBufferStructures/RaidBossSizeData.cs ================================================ namespace pkNX.Structures.FlatBuffers.Gen9; // ReSharper disable once ClassNeverInstantiated.Global public partial class RaidBossSizeData { public void SerializePKHeX() { // If any property is not zero, throw an exception. // if (HeightType != 0 || HeightValue != 0 || WeightType != 0 || WeightValue != 0 || ScaleType != 0 || ScaleValue != 0) // throw new ArgumentException("Expected default sizes."); } } ================================================ FILE: RaidCrawler.Core/Structures/FlatBufferStructures/RaidEnemyInfo.cs ================================================ namespace pkNX.Structures.FlatBuffers.Gen9; // ReSharper disable once ClassNeverInstantiated.Global public partial class RaidEnemyInfo { public void SerializePKHeX( BinaryWriter bw, byte star, sbyte rate, RaidSerializationFormat format ) { BossPokePara.SerializePKHeX(bw, CaptureLv, format); BossPokeSize.SerializePKHeX(); bw.Write(DeliveryGroupID); // Append RNG details. bw.Write(star); bw.Write(rate); } public void SerializeDistribution(BinaryWriter bw) { var b = BossPokePara; if (b.TalentType > 2) throw new InvalidDataException($"Invalid talent type for {nameof(SerializeDistribution)}."); bw.Write(b.Seikaku == 0 ? (byte)25 : (byte)(b.Seikaku - 1)); bw.Write((byte)b.TalentValue.HP); bw.Write((byte)b.TalentValue.ATK); bw.Write((byte)b.TalentValue.DEF); bw.Write((byte)b.TalentValue.SPE); bw.Write((byte)b.TalentValue.SPA); bw.Write((byte)b.TalentValue.SPD); bw.Write((byte)(b.TalentType == 2 ? 1 : 0)); bw.Write((byte)b.ScaleType); bw.Write((byte)b.ScaleValue); } public void SerializeMight(BinaryWriter bw) { // Fixed Nature, fixed IVs, fixed Scale var b = BossPokePara; if (b.TalentType > 2) throw new InvalidDataException($"Invalid talent type for {nameof(SerializeMight)}."); bw.Write(b.Seikaku == 0 ? (byte)25 : (byte)(b.Seikaku - 1)); bw.Write((byte)b.TalentValue.HP); bw.Write((byte)b.TalentValue.ATK); bw.Write((byte)b.TalentValue.DEF); bw.Write((byte)b.TalentValue.SPE); bw.Write((byte)b.TalentValue.SPA); bw.Write((byte)b.TalentValue.SPD); bw.Write((byte)(b.TalentType == 2 ? 1 : 0)); bw.Write((byte)b.ScaleType); bw.Write((byte)b.ScaleValue); } } ================================================ FILE: RaidCrawler.Core/Structures/FlatBufferStructures/RaidSerializationFormat.cs ================================================ namespace pkNX.Structures.FlatBuffers.Gen9; public enum RaidSerializationFormat { /// /// Base ROM Raids /// BaseROM, /// /// Regular Distribution Raids /// Distribution, /// /// 7 Star Distribution Raids /// Might, } ================================================ FILE: RaidCrawler.Core/Structures/FlatbufferDumper.cs ================================================ using FlatSharp; using pkNX.Structures.FlatBuffers.Gen9; using System.Diagnostics; namespace RaidCrawler.Core.Structures; public static class FlatbufferDumper { public static byte[][] DumpBaseROMRaids(ReadOnlySpan paths) { var list = new List(); var rateTotal = new (int Scarlet, int Violet)[8]; for (int i = 0; i < paths.Length; i++) { var path = paths[i]; var data = Utils.GetBinaryResource(path); var fb = RaidEnemyTableArray.Serializer.Parse(data); var table = fb.Table; int totalRateScarlet = 0; int totalRateViolet = 0; foreach (var enc in table) { var wrap = new RaidStorage(enc, i); if (enc.Info.RomVer != RaidRomType.TYPE_B) { wrap.RandRateStartScarlet = totalRateScarlet; totalRateScarlet += enc.Info.Rate; } if (enc.Info.RomVer != RaidRomType.TYPE_A) { wrap.RandRateStartViolet = totalRateViolet; totalRateViolet += enc.Info.Rate; } list.Add(wrap); } rateTotal[i + 1] = (totalRateScarlet, totalRateViolet); } //var all = list.OrderBy(z => z.Species) // .ThenBy(z => z.Form) // .ThenByDescending(z => z.Stars) // .ThenByDescending(z => z.Delivery) // .ToList(); using var ms = new MemoryStream(); using var bw = new BinaryWriter(ms); using var ms2 = new MemoryStream(); using var bw2 = new BinaryWriter(ms2); using var ms3 = new MemoryStream(); using var bw3 = new BinaryWriter(ms3); foreach (var enc in list) { var rmS = enc.GetScarletRandMinScarlet(); var rmV = enc.GetVioletRandMinViolet(); enc.Enemy.Info.SerializePKHeX( bw, (byte)enc.Stars, enc.Rate, RaidSerializationFormat.BaseROM ); bw.Write(rmS); bw.Write(rmV); enc.Enemy.Info.BossDesc.SerializePKHeX(bw2); bw3.Write(enc.Enemy.Info.DropTableFix); bw3.Write(enc.Enemy.Info.DropTableRandom); } var pickle = ms.ToArray(); var extra_moves = ms2.ToArray(); var rewards = ms3.ToArray(); return [pickle, extra_moves, rewards]; } public static byte[][] DumpDistributionRaids(ReadOnlyMemory encounters) { var type2 = new List(); var type3 = new List(); if (encounters.Length == 0) return []; var tableEncounters = DeliveryRaidEnemyTableArray.Serializer.Parse(encounters); var byGroupID = tableEncounters.Table .Where(z => z.Info.Rate != 0) .GroupBy(z => z.Info.DeliveryGroupID); foreach (var group in byGroupID) { var items = group.ToArray(); if (items.Any(z => z.Info.Difficulty > 7)) continue; if (items.All(z => z.Info.Difficulty == 7)) { AddToList(items, type3, RaidSerializationFormat.Might, group.Key); continue; } if (items.Any(z => z.Info.Difficulty == 7)) throw new Exception($"Mixed difficulty {items.First(z => z.Info.Difficulty > 7).Info.Difficulty}"); AddToList(items, type2, RaidSerializationFormat.Distribution, group.Key); } return [ type2.SelectMany(z => z.SkipLast(16 + 12 + 1)).ToArray(), type3.SelectMany(z => z.SkipLast(16 + 12 + 1)).ToArray(), type2.SelectMany(z => z.TakeLast(16 + 12 + 1).Take(16)).ToArray(), type3.SelectMany(z => z.TakeLast(16 + 12 + 1).Take(16)).ToArray(), type2.SelectMany(z => z.TakeLast(12 + 1).Take(12)).ToArray(), type3.SelectMany(z => z.TakeLast(12 + 1).Take(12)).ToArray(), type2.SelectMany(z => z.TakeLast(1)).ToArray(), type3.SelectMany(z => z.TakeLast(1)).ToArray(), ]; } public static List DumpLotteryRewards(ReadOnlyMemory rewards) { var tableRewards = DeliveryRaidLotteryRewardItemArray.Serializer.Parse(rewards); return [.. tableRewards.Table]; } public static List DumpFixedRewards(ReadOnlyMemory rewards) { var tableRewards = DeliveryRaidFixedRewardItemArray.Serializer.Parse(rewards); return [.. tableRewards.Table]; } public static (DeliveryGroupID, int) DumpDeliveryPriorities(ReadOnlyMemory flatbuffer) { try { var prios = DeliveryRaidPriorityArray.Serializer.Parse(flatbuffer); return (prios.Table[0].GroupID, prios.Table[0].VersionNo); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return (new DeliveryGroupID { GroupID = new GroupIDSet() }, 0); } } private static readonly int[][] StageStars = [ [1, 2], [1, 2, 3], [1, 2, 3, 4], [3, 4, 5, 6, 7], ]; private static void AddToList(IReadOnlyCollection table, List list, RaidSerializationFormat format, sbyte group) { // Get the total weight for each stage of star count Span weightTotalS = stackalloc ushort[StageStars.Length]; Span weightTotalV = stackalloc ushort[StageStars.Length]; foreach (var enc in table) { var info = enc.Info; if (info.Rate == 0) continue; var difficulty = info.Difficulty; for (int stage = 0; stage < StageStars.Length; stage++) { if (!StageStars[stage].Contains(difficulty)) continue; if (info.RomVer != RaidRomType.TYPE_B) weightTotalS[stage] += (ushort)info.Rate; if (info.RomVer != RaidRomType.TYPE_A) weightTotalV[stage] += (ushort)info.Rate; } } Span weightMinS = stackalloc ushort[StageStars.Length]; Span weightMinV = stackalloc ushort[StageStars.Length]; foreach (var enc in table) { var info = enc.Info; if (info.Rate == 0) continue; var difficulty = info.Difficulty; TryAddToPickle(info, list, format, weightTotalS, weightTotalV, weightMinS, weightMinV, group); for (int stage = 0; stage < StageStars.Length; stage++) { if (!StageStars[stage].Contains(difficulty)) continue; if (info.RomVer != RaidRomType.TYPE_B) weightMinS[stage] += (ushort)info.Rate; if (info.RomVer != RaidRomType.TYPE_A) weightMinV[stage] += (ushort)info.Rate; } } } private static void TryAddToPickle(RaidEnemyInfo enc, ICollection list, RaidSerializationFormat format, ReadOnlySpan totalS, ReadOnlySpan totalV, ReadOnlySpan minS, ReadOnlySpan minV, sbyte group) { using var ms = new MemoryStream(); using var bw = new BinaryWriter(ms); enc.SerializePKHeX(bw, (byte)enc.Difficulty, enc.Rate, format); for (int stage = 0; stage < StageStars.Length; stage++) { bool noTotal = !StageStars[stage].Contains(enc.Difficulty); ushort mS = minS[stage]; ushort mV = minV[stage]; bw.Write(noTotal ? (ushort)0 : mS); bw.Write(noTotal ? (ushort)0 : mV); bw.Write(noTotal || enc.RomVer == RaidRomType.TYPE_B ? (ushort)0 : totalS[stage]); bw.Write(noTotal || enc.RomVer == RaidRomType.TYPE_A ? (ushort)0 : totalV[stage]); } if (format == RaidSerializationFormat.Distribution) enc.SerializeDistribution(bw); if (format == RaidSerializationFormat.Might) enc.SerializeMight(bw); // drop table reference bw.Write(enc.DropTableFix); bw.Write(enc.DropTableRandom); // extra moves reference enc.BossDesc.SerializePKHeX(bw); // group id reference bw.Write(group); var bin = ms.ToArray(); if (!list.Any(z => z.SequenceEqual(bin))) list.Add(bin); } private record RaidStorage(RaidEnemyTable Enemy, int File) { private PokeDataBattle Poke => Enemy.Info.BossPokePara; public int Stars => Enemy.Info.Difficulty == 0 ? File + 1 : Enemy.Info.Difficulty; public ushort Species => Poke.DevId; public short Form => Poke.FormId; public int Delivery => Enemy.Info.DeliveryGroupID; public sbyte Rate => Enemy.Info.Rate; public int RandRateStartScarlet { get; set; } public int RandRateStartViolet { get; set; } public short GetScarletRandMinScarlet() { if (Enemy.Info.RomVer == RaidRomType.TYPE_B) return -1; return (short)RandRateStartScarlet; } public short GetVioletRandMinViolet() { if (Enemy.Info.RomVer == RaidRomType.TYPE_A) return -1; return (short)RandRateStartViolet; } } } ================================================ FILE: RaidCrawler.Core/Structures/ITeraRaid.cs ================================================ using PKHeX.Core; namespace RaidCrawler.Core.Structures; public interface ITeraRaid : ISpeciesForm { ushort[] ExtraMoves { get; } byte Gender { get; } AbilityPermission Ability { get; } byte FlawlessIVCount { get; } Shiny Shiny { get; } byte Level { get; } ushort Move1 { get; } ushort Move2 { get; } ushort Move3 { get; } ushort Move4 { get; } byte Stars { get; } byte RandRate { get; } } ================================================ FILE: RaidCrawler.Core/Structures/MapMagic.cs ================================================ using PKHeX.Core; namespace RaidCrawler.Core.Structures { public class MapMagic { private double ScaleX { get; init; } private double ScaleZ { get; init; } private double OffsetZ { get; init; } public double ConvertWidth(double s) => (512 / ScaleX) * s; public double ConvertHeight(double s) => (512 / ScaleZ) * s; public double ConvertX(double x) => (512 / ScaleX) * x; public double ConvertZ(double z) => (512 / ScaleZ) * (z + OffsetZ); public static MapMagic GetMapMagic(TeraRaidMapParent parent) => parent switch { TeraRaidMapParent.Blueberry => Blueberry, TeraRaidMapParent.Kitakami => Kitakami, _ => Base, }; private static readonly MapMagic Base = new() { ScaleX = 5000, ScaleZ = 5000, OffsetZ = 5500, }; private static readonly MapMagic Kitakami = new() { ScaleX = 2000, ScaleZ = 2000, OffsetZ = 2000, }; private static readonly MapMagic Blueberry = new() { ScaleX = 2000, ScaleZ = 2000, OffsetZ = 2000, }; } } ================================================ FILE: RaidCrawler.Core/Structures/Offsets.cs ================================================ namespace RaidCrawler.Core.Structures; public abstract class Offsets { public const string ScarletID = "0100A3D008C5C000"; public const string VioletID = "01008F6008C5E000"; public static ReadOnlySpan RaidBlockPointerBase => [0x4741FA0, 0x198, 0x88, 0x40]; public static ReadOnlySpan RaidBlockPointerKitakami => [0x4741FA0, 0x198, 0x88, 0xCD8]; public static ReadOnlySpan RaidBlockPointerBlueberry => [0x4741FA0, 0x198, 0x88, 0x1958]; public static ReadOnlySpan BlockKeyPointer => [0x47350D8, 0xD8, 0x0, 0x0, 0x30, 0x0]; public static ReadOnlySpan DifficultyFlags => [0xEC95D8EF, 0xA9428DFE, 0x9535F471, 0x6E7F8220]; public const uint BCATRaidBinaryLocation = 0x520A1B0; // Thanks Lincoln-LM! public const uint BCATRaidPriorityLocation = 0x95451E4; // Thanks Lincoln-LM! public const uint BCATRaidFixedRewardLocation = 0x7D6C2B82; public const uint BCATRaidLotteryRewardLocation = 0xA52B4811; } ================================================ FILE: RaidCrawler.Core/Structures/Raid.cs ================================================ using PKHeX.Core; using static System.Buffers.Binary.BinaryPrimitives; namespace RaidCrawler.Core.Structures; /// /// See also https://github.com/kwsch/PKHeX/blob/master/PKHeX.Core/Saves/Substructures/Gen9/RaidSpawnList9.cs /// public class Raid(Span Data, TeraRaidMapParent MapParent = TeraRaidMapParent.Paldea) { public const byte SIZE = 0x20; private readonly byte[] Data = Data.ToArray(); // Raw data public readonly TeraRaidMapParent MapParent = MapParent; public bool IsValid => Validate(); public bool IsActive => ReadUInt32LittleEndian(Data.AsSpan(0x00)) == 1; public uint Area => ReadUInt32LittleEndian(Data.AsSpan(0x04)); public uint LotteryGroup => ReadUInt32LittleEndian(Data.AsSpan(0x08)); public uint Den => ReadUInt32LittleEndian(Data.AsSpan(0x0C)); public uint Seed => ReadUInt32LittleEndian(Data.AsSpan(0x10)); public uint Flags => ReadUInt32LittleEndian(Data.AsSpan(0x18)); public bool IsBlack => Flags == 1; public bool IsEvent => Flags >= 2; public int TeraType => GetTeraType(Seed); public uint Difficulty => GetDifficulty(Seed); public uint EC => GenericRaidData[0]; public uint PID => GenericRaidData[2]; public bool IsShiny => GenericRaidData[3] == 1; private uint[] GenericRaidData => GenerateGenericRaidData(Seed); public byte[] GetData() => Data; private bool Validate() { if (Seed == 0 || !IsActive) return false; if (!IsValidMap()) return false; GenerateGenericRaidData(Seed); return true; } private bool IsValidMap() { return MapParent switch { TeraRaidMapParent.Paldea => Area <= 22, TeraRaidMapParent.Kitakami => Area <= 11, TeraRaidMapParent.Blueberry => Area <= 8, _ => false }; } private static int GetTeraType(uint Seed) { var rng = new Xoroshiro128Plus(Seed); return (int)rng.NextInt(18); } private static uint[] GenerateGenericRaidData(uint Seed) { var rng = new Xoroshiro128Plus(Seed); uint EC = (uint)rng.NextInt(); uint TIDSID = (uint)rng.NextInt(); uint PID = (uint)rng.NextInt(); bool IsShiny = ((PID >> 16) ^ (PID & 0xFFFF)) >> 4 == ((TIDSID >> 16) ^ (TIDSID & 0xFFFF)) >> 4; var Shiny = IsShiny ? 1u : 0; return [EC, TIDSID, PID, Shiny]; } private static uint GetDifficulty(uint Seed) { var rng = new Xoroshiro128Plus(Seed); return (uint)rng.NextInt(100); } public void GenerateDataPK9(PK9 pk, GenerateParam9 param, Shiny isShiny, uint seed) { var criteria = new EncounterCriteria { Shiny = isShiny }; bool check = Encounter9RNG.GenerateData(pk, param, criteria, seed); if (!check) { criteria = new EncounterCriteria { Shiny = pk.IsShiny ? Shiny.Always : Shiny.Random }; Encounter9RNG.GenerateData(pk, param, criteria, seed); } } } ================================================ FILE: RaidCrawler.Core/Structures/RaidBlock.cs ================================================ namespace RaidCrawler.Core.Structures; public static class RaidBlock { public const uint HEADER_SIZE = 0x10; public const uint MAX_COUNT_BASE = 72; public const uint SIZE_BASE = Raid.SIZE * MAX_COUNT_BASE; public const uint MAX_COUNT_KITAKAMI = 100; public const uint SIZE_KITAKAMI = Raid.SIZE * MAX_COUNT_KITAKAMI; public const uint MAX_COUNT_BLUEBERRY = 80; public const uint SIZE_BLUEBERRY = Raid.SIZE * MAX_COUNT_BLUEBERRY; } ================================================ FILE: RaidCrawler.Core/Structures/RaidContainer.cs ================================================ using PKHeX.Core; using pkNX.Structures.FlatBuffers.Gen9; using System.Text.Json; namespace RaidCrawler.Core.Structures; public record RaidContainer { public readonly TeraEncounter[]? GemTeraRaidsBase; public readonly TeraEncounter[]? GemTeraRaidsKitakami; public readonly TeraEncounter[]? GemTeraRaidsBlueberry; public TeraDistribution[]? DistTeraRaids; public TeraMight[]? MightTeraRaids; public readonly IReadOnlyList? BaseFixedRewards; public readonly IReadOnlyList? BaseLotteryRewards; public IReadOnlyList? DeliveryRaidFixedRewards; public IReadOnlyList? DeliveryRaidLotteryRewards; public DeliveryGroupID DeliveryRaidPriority = new() { GroupID = new() }; public IReadOnlyList Raids { get; private set; } = new List(); public IReadOnlyList Encounters { get; private set; } = new List(); public IReadOnlyList> Rewards { get; private set; } = new List>(); public string Game { get; private set; } = "Scarlet"; public GameStrings Strings { get; private set; } // Files containing serialized data for all possible 1 through 6 star raids private readonly string[] RaidDataBase = [ "raid_enemy_01_array.bin", "raid_enemy_02_array.bin", "raid_enemy_03_array.bin", "raid_enemy_04_array.bin", "raid_enemy_05_array.bin", "raid_enemy_06_array.bin", ]; private readonly string[] RaidDataKitakami = [ "su1_raid_enemy_01_array.bin", "su1_raid_enemy_02_array.bin", "su1_raid_enemy_03_array.bin", "su1_raid_enemy_04_array.bin", "su1_raid_enemy_05_array.bin", "su1_raid_enemy_06_array.bin", ]; private readonly string[] RaidDataBlueberry = [ "su2_raid_enemy_01_array.bin", "su2_raid_enemy_02_array.bin", "su2_raid_enemy_03_array.bin", "su2_raid_enemy_04_array.bin", "su2_raid_enemy_05_array.bin", "su2_raid_enemy_06_array.bin", ]; public RaidContainer(string game) { Game = game; Strings = GameInfo.GetStrings("en"); GemTeraRaidsBase = TeraEncounter.GetAllEncounters(RaidDataBase, TeraRaidMapParent.Paldea); GemTeraRaidsKitakami = TeraEncounter.GetAllEncounters(RaidDataKitakami, TeraRaidMapParent.Kitakami); GemTeraRaidsBlueberry = TeraEncounter.GetAllEncounters(RaidDataBlueberry, TeraRaidMapParent.Blueberry); BaseFixedRewards = JsonSerializer.Deserialize>(Utils.GetStringResource("raid_fixed_reward_item_array.json") ?? "[]"); BaseLotteryRewards = JsonSerializer.Deserialize>(Utils.GetStringResource("raid_lottery_reward_item_array.json") ?? "[]"); } public int GetRaidCount() => Raids.Count; public void ClearRaids() => Raids = new List(); public void SetRaids(IReadOnlyList raids) => Raids = raids; public int GetEncounterCount() => Encounters.Count; public void ClearEncounters() => Encounters = new List(); public void SetEncounters(IReadOnlyList encs) => Encounters = encs; public int GetRewardsCount() => Rewards.Count; public void ClearRewards() => Rewards = new List>(); public void SetRewards(IReadOnlyList> rewards) => Rewards = rewards; public void SetGame(string game) => Game = game; } ================================================ FILE: RaidCrawler.Core/Structures/RaidFilter.cs ================================================ using PKHeX.Core; using System.Diagnostics.Metrics; namespace RaidCrawler.Core.Structures; public class RaidFilter { public string? Name { get; set; } public int? Species { get; set; } public int? Form { get; set; } public int? Stars { get; set; } public int StarsComp { get; set; } public bool Shiny { get; set; } public bool Square { get; set; } public bool RareEC { get; set; } public int? Nature { get; set; } public int? TeraType { get; set; } public int? Gender { get; set; } public int IVBin { get; set; } public int IVComps { get; set; } public int IVVals { get; set; } public bool Enabled { get; set; } public int[]? RewardItems { get; set; } public int RewardsComp { get; set; } public int RewardsCount { get; set; } public string[]? BatchFilters { get; set; } public bool IsFilterSet() => Species != null || Form != null || Stars != null || Shiny || Square || RareEC || Nature != null || TeraType != null || Gender != null || IVBin != 0 || (RewardItems != null && RewardsCount != 0) || BatchFilters != null; public bool IsSpeciesSatisfied(ushort species) { if (Species is null) return true; return species == (ushort)Species; } public bool IsFormSatisfied(byte form) { if (Form is null) return true; return form == Form; } public bool IsStarsSatisfied(ITeraRaid enc) { if (Stars is null) return true; return StarsComp switch { 0 => enc.Stars == Stars, 1 => enc.Stars > Stars, 2 => enc.Stars >= Stars, 3 => enc.Stars <= Stars, 4 => enc.Stars < Stars, _ => false, }; } public bool IsRewardsSatisfied(RaidContainer container, ITeraRaid enc, Raid raid, int sandwichBoost) { if (RewardItems is null || RewardsCount == 0) return true; var rewards = enc.GetRewards(container, raid, sandwichBoost); var count = rewards.Where(z => RewardItems.Contains(z.Item1)).Sum(o => o.Item2); return RewardsComp switch { 0 => count == RewardsCount, 1 => count > RewardsCount, 2 => count >= RewardsCount, 3 => count <= RewardsCount, 4 => count < RewardsCount, _ => false, }; } public bool IsShinySatisfied(PK9 blank) { if (!Shiny) return true; return blank.IsShiny; } public bool IsSquareSatisfied(PK9 blank) { if (!Square) return true; return blank.IsShiny && ShinyExtensions.IsSquareShinyExist(blank); } public bool IsRareECSatisfied(PK9 blank) { if (!RareEC) return true; return blank.EncryptionConstant % 100 == 0; } public bool IsTeraTypeSatisfied(Raid raid, ITeraRaid enc) { if (TeraType is null) return true; return raid.GetTeraType(enc) == TeraType; } public bool IsNatureSatisfied(int nature) { if (Nature is null) return true; return nature == Nature; } public bool IsIVsSatisfied(PK9 blank) { if (IVBin == 0) return true; Span _ivs = stackalloc int[6]; blank.GetIVs(_ivs); var ivs = Utils.ToSpeedLast(_ivs); for (int i = 0; i < 6; i++) { var iv = IVVals >> i * 5 & 31; var ivbin = IVBin >> i & 1; var ivcomp = IVComps >> i * 3 & 7; if (ivbin != 1) continue; if (!IsValidIV(ivcomp, ivs, i, iv)) return false; } return true; } private static bool IsValidIV(int ivcomp, ReadOnlySpan ivs, int index, int iv) => ivcomp switch { 0 => ivs[index] == iv, 1 => ivs[index] > iv, 2 => ivs[index] >= iv, 3 => ivs[index] <= iv, 4 => ivs[index] < iv, _ => true, }; public bool IsGenderSatisfied(ITeraRaid encounter, int gender) { if (Gender is null || (encounter.Gender <= 2 && encounter.Gender == Gender)) return true; return gender == Gender; } public bool IsBatchFilterSatisfied(PK9 blank) { if (BatchFilters is null) return true; var filters = StringInstruction.GetFilters(BatchFilters.AsSpan()); if (filters.Count == 0) return true; BatchEditing.ScreenStrings(filters); return BatchEditing.IsFilterMatch(filters, blank); } public bool FilterSatisfied( RaidContainer container, ITeraRaid enc, Raid raid, int SandwichBoost ) { var param = enc.GetParam(); var blank = new PK9 { Species = enc.Species, Form = enc.Form }; raid.GenerateDataPK9(blank, param, enc.Shiny, raid.Seed); return Enabled && IsIVsSatisfied(blank) && IsShinySatisfied(blank) && IsSquareSatisfied(blank) && IsRareECSatisfied(blank) && IsSpeciesSatisfied(blank.Species) && IsFormSatisfied(blank.Form) && IsNatureSatisfied((int)blank.Nature) && IsStarsSatisfied(enc) && IsTeraTypeSatisfied(raid, enc) && IsRewardsSatisfied(container, enc, raid, SandwichBoost) && IsGenderSatisfied(enc, blank.Gender) && IsBatchFilterSatisfied(blank); } public bool FilterSatisfied( RaidContainer container, IReadOnlyList encounters, IReadOnlyList raids, int sandwichBoost ) { if (raids.Count != encounters.Count) throw new Exception("Raid count does not match Encounter count"); for (int i = 0; i < raids.Count; i++) { if (FilterSatisfied(container, encounters[i], raids[i], sandwichBoost)) return true; } return false; } } ================================================ FILE: RaidCrawler.Core/Structures/RaidRewards.cs ================================================ using FlatSharp.Attributes; using PKHeX.Core; using System.ComponentModel; using System.Text.Json.Serialization; namespace RaidCrawler.Core.Structures; public static class Rewards { private static readonly int[][] RewardSlots = [ [4, 5, 6, 7, 8], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9], [5, 6, 7, 8, 9], [6, 7, 8, 9, 10], [7, 8, 9, 10, 11], [7, 8, 9, 10, 11], ]; public static ReadOnlySpan RareRewards => [ 4, 645, 1606, 1904, 1905, 1906, 1907, 1908, 795, ]; public static ReadOnlySpan TMIndexes => [ 005, 036, 204, 313, 097, 189, 184, 182, 424, 422, 423, 352, 067, 491, 512, 522, 060, 109, 168, 574, 885, 884, 886, 451, 083, 263, 342, 332, 523, 506, 555, 232, 129, 345, 196, 341, 317, 577, 488, 490, 314, 500, 101, 374, 525, 474, 419, 203, 521, 241, 240, 201, 883, 684, 473, 091, 331, 206, 280, 428, 369, 421, 492, 706, 339, 403, 034, 007, 009, 008, 214, 402, 486, 409, 115, 113, 350, 127, 337, 605, 118, 447, 086, 398, 707, 156, 157, 269, 014, 776, 191, 390, 286, 430, 399, 141, 598, 019, 285, 442, 349, 408, 441, 164, 334, 404, 529, 261, 242, 271, 710, 202, 396, 366, 247, 406, 446, 304, 257, 412, 094, 484, 227, 057, 861, 053, 085, 583, 133, 347, 270, 676, 226, 414, 179, 058, 604, 580, 678, 581, 417, 126, 056, 059, 519, 518, 520, 528, 188, 089, 444, 566, 416, 307, 308, 338, 200, 315, 411, 437, 542, 433, 405, 063, 413, 394, 087, 370, 076, 434, 796, 851, ]; public static int GetRewardCount(int random, int stars) => random switch { < 10 => RewardSlots[stars - 1][0], < 40 => RewardSlots[stars - 1][1], < 70 => RewardSlots[stars - 1][2], < 90 => RewardSlots[stars - 1][3], _ => RewardSlots[stars - 1][4], }; public static List<(int, int, int)> ReorderRewards(List<(int, int, int)> rewards) { var rares = new List<(int, int, int)>(); var commons = new List<(int, int, int)>(); for (int i = 0; i < rewards.Count; i++) { if (RareRewards.Contains(rewards[i].Item1)) rares.Add(rewards[i]); else commons.Add(rewards[i]); } rares.AddRange(commons); return rares; } public static bool IsTM(int item) => item switch { >= 328 and <= 419 => true, // TM001 to TM092, skip TM000 Mega Punch 618 or 619 or 620 => true, // TM093 to TM095 690 or 691 or 692 or 693 => true, // TM096 to TM099 >= 2160 and <= 2289 => true, // TM100 to TM229 _ => false, }; public static string GetNameTM(int item, IReadOnlyList items, IReadOnlyList moves, ReadOnlySpan tm) => item switch { >= 328 and <= 419 => $"{items[item]} {moves[tm[001 + item - 328]]}", // TM001 to TM092, skip TM000 Mega Punch 618 or 619 or 620 => $"{items[item]} {moves[tm[093 + item - 618]]}", // TM093 to TM095 690 or 691 or 692 or 693 => $"{items[item]} {moves[tm[096 + item - 690]]}", // TM096 to TM099 _ => $"{items[item]} {moves[tm[100 + item - 2160]]}", // TM100 to TM229 }; public static int GetTeraShard(int type) => (MoveType)type switch { MoveType.Normal => 1862, MoveType.Fighting => 1868, MoveType.Flying => 1871, MoveType.Poison => 1869, MoveType.Ground => 1870, MoveType.Rock => 1874, MoveType.Bug => 1873, MoveType.Ghost => 1875, MoveType.Steel => 1878, MoveType.Fire => 1863, MoveType.Water => 1864, MoveType.Grass => 1866, MoveType.Electric => 1865, MoveType.Psychic => 1872, MoveType.Ice => 1867, MoveType.Dragon => 1876, MoveType.Dark => 1877, MoveType.Fairy => 1879, _ => 20000, }; public static int GetMaterial(int species) => (Species)species switch { Species.Venonat or Species.Venomoth => 1956, Species.Diglett or Species.Dugtrio => 1957, Species.Meowth or Species.Persian => 1958, Species.Psyduck or Species.Golduck => 1959, Species.Mankey or Species.Primeape or Species.Annihilape => 1960, Species.Growlithe or Species.Arcanine => 1961, Species.Slowpoke or Species.Slowbro or Species.Slowking => 1962, Species.Magnemite or Species.Magneton or Species.Magnezone => 1963, Species.Grimer or Species.Muk => 1964, Species.Shellder or Species.Cloyster => 1965, Species.Gastly or Species.Haunter or Species.Gengar => 1966, Species.Drowzee or Species.Hypno => 1967, Species.Voltorb or Species.Electrode => 1968, Species.Scyther or Species.Scizor or Species.Kleavor => 1969, Species.Tauros => 1970, Species.Magikarp or Species.Gyarados => 1971, Species.Ditto => 1972, Species.Eevee or Species.Vaporeon or Species.Jolteon or Species.Flareon or Species.Espeon or Species.Umbreon or Species.Leafeon or Species.Glaceon or Species.Sylveon => 1973, Species.Dratini or Species.Dragonair or Species.Dragonite => 1974, Species.Pichu or Species.Pikachu or Species.Raichu => 1975, Species.Igglybuff or Species.Jigglypuff or Species.Wigglytuff => 1976, Species.Mareep or Species.Flaaffy or Species.Ampharos => 1977, Species.Hoppip or Species.Skiploom or Species.Jumpluff => 1978, Species.Sunkern or Species.Sunflora => 1979, Species.Murkrow or Species.Honchkrow => 1980, Species.Misdreavus or Species.Mismagius => 1981, Species.Girafarig or Species.Farigiraf => 1982, Species.Pineco or Species.Forretress => 1983, Species.Dunsparce or Species.Dudunsparce => 1984, Species.Qwilfish or Species.Overqwil => 1985, Species.Heracross => 1986, Species.Sneasel or Species.Weavile or Species.Sneasler => 1987, Species.Teddiursa or Species.Ursaring or Species.Ursaluna => 1988, Species.Delibird => 1989, Species.Houndour or Species.Houndoom => 1990, Species.Phanpy or Species.Donphan => 1991, Species.Stantler or Species.Wyrdeer => 1992, Species.Larvitar or Species.Pupitar or Species.Tyranitar => 1993, Species.Wingull or Species.Pelipper => 1994, Species.Ralts or Species.Kirlia or Species.Gardevoir or Species.Gallade => 1995, Species.Surskit or Species.Masquerain => 1996, Species.Shroomish or Species.Breloom => 1997, Species.Slakoth or Species.Vigoroth or Species.Slaking => 1998, Species.Makuhita or Species.Hariyama => 1999, Species.Azurill or Species.Marill or Species.Azumarill => 2000, Species.Sableye => 2001, Species.Meditite or Species.Medicham => 2002, Species.Gulpin or Species.Swalot => 2003, Species.Numel or Species.Camerupt => 2004, Species.Torkoal => 2005, Species.Spoink or Species.Grumpig => 2006, Species.Cacnea or Species.Cacturne => 2007, Species.Swablu or Species.Altaria => 2008, Species.Zangoose => 2009, Species.Seviper => 2010, Species.Barboach or Species.Whiscash => 2011, Species.Shuppet or Species.Banette => 2012, Species.Tropius => 2013, Species.Snorunt or Species.Glalie or Species.Froslass => 2014, Species.Luvdisc => 2015, Species.Bagon or Species.Shelgon or Species.Salamence => 2016, Species.Starly or Species.Staravia or Species.Staraptor => 2017, Species.Kricketot or Species.Kricketune => 2018, Species.Shinx or Species.Luxio or Species.Luxray => 2019, Species.Combee or Species.Vespiquen => 2020, Species.Pachirisu => 2021, Species.Buizel or Species.Floatzel => 2022, Species.Shellos or Species.Gastrodon => 2023, Species.Drifloon or Species.Drifblim => 2024, Species.Stunky or Species.Skuntank => 2025, Species.Bronzor or Species.Bronzong => 2026, Species.Bonsly or Species.Sudowoodo => 2027, Species.Happiny or Species.Chansey or Species.Blissey => 2028, Species.Spiritomb => 2029, Species.Gible or Species.Gabite or Species.Garchomp => 2030, Species.Riolu or Species.Lucario => 2031, Species.Hippopotas or Species.Hippowdon => 2032, Species.Croagunk or Species.Toxicroak => 2033, Species.Finneon or Species.Lumineon => 2034, Species.Snover or Species.Abomasnow => 2035, Species.Rotom => 2036, Species.Petilil or Species.Lilligant => 2037, Species.Basculin or Species.Basculegion => 2038, Species.Sandile or Species.Krokorok or Species.Krookodile => 2039, Species.Zorua or Species.Zoroark => 2040, Species.Gothita or Species.Gothorita or Species.Gothitelle => 2041, Species.Deerling or Species.Sawsbuck => 2042, Species.Foongus or Species.Amoonguss => 2043, Species.Alomomola => 2044, Species.Tynamo or Species.Eelektrik or Species.Eelektross => 2045, Species.Axew or Species.Fraxure or Species.Haxorus => 2046, Species.Cubchoo or Species.Beartic => 2047, Species.Cryogonal => 2048, Species.Pawniard or Species.Bisharp or Species.Kingambit => 2049, Species.Rufflet or Species.Braviary => 2050, Species.Deino or Species.Zweilous or Species.Hydreigon => 2051, Species.Larvesta or Species.Volcarona => 2052, Species.Fletchling or Species.Fletchinder or Species.Talonflame => 2053, Species.Scatterbug or Species.Spewpa or Species.Vivillon => 2054, Species.Litleo or Species.Pyroar => 2055, Species.Flabébé or Species.Floette or Species.Florges => 2056, Species.Skiddo or Species.Gogoat => 2057, Species.Skrelp or Species.Dragalge => 2058, Species.Clauncher or Species.Clawitzer => 2059, Species.Hawlucha => 2060, Species.Dedenne => 2061, Species.Goomy or Species.Sliggoo or Species.Goodra => 2062, Species.Klefki => 2063, Species.Bergmite or Species.Avalugg => 2064, Species.Noibat or Species.Noivern => 2065, Species.Yungoos or Species.Gumshoos => 2066, Species.Crabrawler or Species.Crabominable => 2067, Species.Oricorio => 2068, Species.Rockruff or Species.Lycanroc => 2069, Species.Mareanie or Species.Toxapex => 2070, Species.Mudbray or Species.Mudsdale => 2071, Species.Fomantis or Species.Lurantis => 2072, Species.Salandit or Species.Salazzle => 2073, Species.Bounsweet or Species.Steenee or Species.Tsareena => 2074, Species.Oranguru => 2075, Species.Passimian => 2076, Species.Sandygast or Species.Palossand => 2077, Species.Komala => 2078, Species.Mimikyu => 2079, Species.Bruxish => 2080, Species.Chewtle or Species.Drednaw => 2081, Species.Skwovet or Species.Greedent => 2082, Species.Arrokuda or Species.Barraskewda => 2083, Species.Rookidee or Species.Corvisquire or Species.Corviknight => 2084, Species.Toxel or Species.Toxtricity => 2085, Species.Falinks => 2086, Species.Cufant or Species.Copperajah => 2087, Species.Rolycoly or Species.Carkol or Species.Coalossal => 2088, Species.Silicobra or Species.Sandaconda => 2089, Species.Indeedee => 2090, Species.Pincurchin => 2091, Species.Snom or Species.Frosmoth => 2092, Species.Impidimp or Species.Morgrem or Species.Grimmsnarl => 2093, Species.Applin or Species.Flapple or Species.Appletun => 2094, Species.Sinistea or Species.Polteageist => 2095, Species.Hatenna or Species.Hattrem or Species.Hatterene => 2096, Species.Stonjourner => 2097, Species.Eiscue => 2098, Species.Dreepy or Species.Drakloak or Species.Dragapult => 2099, Species.Lechonk or Species.Oinkologne => 2103, Species.Tarountula or Species.Spidops => 2104, Species.Nymble or Species.Lokix => 2105, Species.Rellor or Species.Rabsca => 2106, Species.Greavard or Species.Houndstone => 2107, Species.Flittle or Species.Espathra => 2108, Species.Wiglett or Species.Wugtrio => 2109, Species.Dondozo => 2110, Species.Veluza => 2111, Species.Finizen or Species.Palafin => 2112, Species.Smoliv or Species.Dolliv or Species.Arboliva => 2113, Species.Capsakid or Species.Scovillain => 2114, Species.Tadbulb or Species.Bellibolt => 2115, Species.Varoom or Species.Revavroom => 2116, Species.Orthworm => 2117, Species.Tandemaus or Species.Maushold => 2118, Species.Cetoddle or Species.Cetitan => 2119, Species.Frigibax or Species.Arctibax or Species.Baxcalibur => 2120, Species.Tatsugiri => 2121, Species.Cyclizar => 2122, Species.Pawmi or Species.Pawmo or Species.Pawmot => 2123, Species.Wattrel or Species.Kilowattrel => 2126, Species.Bombirdier => 2127, Species.Squawkabilly => 2128, Species.Flamigo => 2129, Species.Klawf => 2130, Species.Nacli or Species.Naclstack or Species.Garganacl => 2131, Species.Glimmet or Species.Glimmora => 2132, Species.Shroodle or Species.Grafaiai => 2133, Species.Fidough or Species.Dachsbun => 2134, Species.Maschiff or Species.Mabosstiff => 2135, Species.Bramblin or Species.Brambleghast => 2136, Species.Gimmighoul or Species.Gholdengo => 2137, Species.Tinkatink or Species.Tinkatuff or Species.Tinkaton => 2156, Species.Charcadet or Species.Armarouge or Species.Ceruledge => 2157, Species.Toedscool or Species.Toedscruel => 2158, Species.Wooper or Species.Quagsire or Species.Clodsire => 2159, Species.Ekans or Species.Arbok => 2438, Species.Sandshrew or Species.Sandslash => 2439, Species.Cleffa or Species.Clefairy or Species.Clefable => 2440, Species.Vulpix or Species.Ninetales => 2441, Species.Poliwag or Species.Poliwhirl or Species.Poliwrath or Species.Politoed => 2442, Species.Bellsprout or Species.Weepinbell or Species.Victreebel => 2443, Species.Geodude or Species.Graveler or Species.Golem => 2444, Species.Koffing or Species.Weezing => 2445, Species.Munchlax or Species.Snorlax => 2446, Species.Sentret or Species.Furret => 2447, Species.Hoothoot or Species.Noctowl => 2448, Species.Spinarak or Species.Ariados => 2449, Species.Aipom or Species.Ambipom => 2450, Species.Yanma or Species.Yanmega => 2451, Species.Gligar or Species.Gliscor => 2452, Species.Slugma or Species.Magcargo => 2453, Species.Swinub or Species.Piloswine or Species.Mamoswine => 2454, Species.Poochyena or Species.Mightyena => 2455, Species.Lotad or Species.Lombre or Species.Ludicolo => 2456, Species.Seedot or Species.Nuzleaf or Species.Shiftry => 2457, Species.Nosepass or Species.Probopass => 2458, Species.Volbeat => 2459, Species.Illumise => 2460, Species.Corphish or Species.Crawdaunt => 2461, Species.Feebas or Species.Milotic => 2462, Species.Duskull or Species.Dusclops or Species.Dusknoir => 2463, Species.Chingling or Species.Chimecho => 2464, Species.Timburr or Species.Gurdurr or Species.Conkeldurr => 2465, Species.Sewaddle or Species.Swadloon or Species.Leavanny => 2466, Species.Ducklett or Species.Swanna => 2467, Species.Litwick or Species.Lampent or Species.Chandelure => 2468, Species.Mienfoo or Species.Mienshao => 2469, Species.Vullaby or Species.Mandibuzz => 2470, Species.Carbink => 2471, Species.Phantump or Species.Trevenant => 2472, Species.Grubbin or Species.Charjabug or Species.Vikavolt => 2473, Species.Cutiefly or Species.Ribombee => 2474, Species.Jangmoo or Species.Hakamoo or Species.Kommoo => 2475, Species.Cramorant => 2476, Species.Morpeko => 2477, Species.Poltchageist or Species.Sinistcha => 2478, _ => 10000, }; } public class RaidFixedRewards { public ulong TableName { get; set; } public RaidFixedRewardItemInfo? RewardItem00 { get; set; } public RaidFixedRewardItemInfo? RewardItem01 { get; set; } public RaidFixedRewardItemInfo? RewardItem02 { get; set; } public RaidFixedRewardItemInfo? RewardItem03 { get; set; } public RaidFixedRewardItemInfo? RewardItem04 { get; set; } public RaidFixedRewardItemInfo? RewardItem05 { get; set; } public RaidFixedRewardItemInfo? RewardItem06 { get; set; } public RaidFixedRewardItemInfo? RewardItem07 { get; set; } public RaidFixedRewardItemInfo? RewardItem08 { get; set; } public RaidFixedRewardItemInfo? RewardItem09 { get; set; } public RaidFixedRewardItemInfo? RewardItem10 { get; set; } public RaidFixedRewardItemInfo? RewardItem11 { get; set; } public RaidFixedRewardItemInfo? RewardItem12 { get; set; } public RaidFixedRewardItemInfo? RewardItem13 { get; set; } public RaidFixedRewardItemInfo? RewardItem14 { get; set; } public const int Count = 15; public RaidFixedRewardItemInfo? GetReward(int index) => index switch { 00 => RewardItem00, 01 => RewardItem01, 02 => RewardItem02, 03 => RewardItem03, 04 => RewardItem04, 05 => RewardItem05, 06 => RewardItem06, 07 => RewardItem07, 08 => RewardItem08, 09 => RewardItem09, 10 => RewardItem10, 11 => RewardItem11, 12 => RewardItem12, 13 => RewardItem13, 14 => RewardItem14, _ => throw new ArgumentOutOfRangeException(nameof(index)), }; } public class RaidLotteryRewards { public ulong TableName { get; set; } public RaidLotteryRewardItemInfo? RewardItem00 { get; set; } public RaidLotteryRewardItemInfo? RewardItem01 { get; set; } public RaidLotteryRewardItemInfo? RewardItem02 { get; set; } public RaidLotteryRewardItemInfo? RewardItem03 { get; set; } public RaidLotteryRewardItemInfo? RewardItem04 { get; set; } public RaidLotteryRewardItemInfo? RewardItem05 { get; set; } public RaidLotteryRewardItemInfo? RewardItem06 { get; set; } public RaidLotteryRewardItemInfo? RewardItem07 { get; set; } public RaidLotteryRewardItemInfo? RewardItem08 { get; set; } public RaidLotteryRewardItemInfo? RewardItem09 { get; set; } public RaidLotteryRewardItemInfo? RewardItem10 { get; set; } public RaidLotteryRewardItemInfo? RewardItem11 { get; set; } public RaidLotteryRewardItemInfo? RewardItem12 { get; set; } public RaidLotteryRewardItemInfo? RewardItem13 { get; set; } public RaidLotteryRewardItemInfo? RewardItem14 { get; set; } public RaidLotteryRewardItemInfo? RewardItem15 { get; set; } public RaidLotteryRewardItemInfo? RewardItem16 { get; set; } public RaidLotteryRewardItemInfo? RewardItem17 { get; set; } public RaidLotteryRewardItemInfo? RewardItem18 { get; set; } public RaidLotteryRewardItemInfo? RewardItem19 { get; set; } public RaidLotteryRewardItemInfo? RewardItem20 { get; set; } public RaidLotteryRewardItemInfo? RewardItem21 { get; set; } public RaidLotteryRewardItemInfo? RewardItem22 { get; set; } public RaidLotteryRewardItemInfo? RewardItem23 { get; set; } public RaidLotteryRewardItemInfo? RewardItem24 { get; set; } public RaidLotteryRewardItemInfo? RewardItem25 { get; set; } public RaidLotteryRewardItemInfo? RewardItem26 { get; set; } public RaidLotteryRewardItemInfo? RewardItem27 { get; set; } public RaidLotteryRewardItemInfo? RewardItem28 { get; set; } public RaidLotteryRewardItemInfo? RewardItem29 { get; set; } public const int RewardItemCount = 30; // Get reward item from index public RaidLotteryRewardItemInfo? GetRewardItem(int index) => index switch { 00 => RewardItem00, 01 => RewardItem01, 02 => RewardItem02, 03 => RewardItem03, 04 => RewardItem04, 05 => RewardItem05, 06 => RewardItem06, 07 => RewardItem07, 08 => RewardItem08, 09 => RewardItem09, 10 => RewardItem10, 11 => RewardItem11, 12 => RewardItem12, 13 => RewardItem13, 14 => RewardItem14, 15 => RewardItem15, 16 => RewardItem16, 17 => RewardItem17, 18 => RewardItem18, 19 => RewardItem19, 20 => RewardItem20, 21 => RewardItem21, 22 => RewardItem22, 23 => RewardItem23, 24 => RewardItem24, 25 => RewardItem25, 26 => RewardItem26, 27 => RewardItem27, 28 => RewardItem28, 29 => RewardItem29, _ => throw new ArgumentOutOfRangeException(nameof(index), index, null), }; } [JsonSerializable(typeof(RaidLotteryRewardItemInfo))] [FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] public class RaidLotteryRewardItemInfo { [FlatBufferItem(0)] public int Category { get; set; } [FlatBufferItem(1)] public int ItemID { get; set; } [FlatBufferItem(2)] public sbyte Num { get; set; } [FlatBufferItem(3)] public int Rate { get; set; } [FlatBufferItem(4)] public bool RareItemFlag { get; set; } } [JsonSerializable(typeof(RaidFixedRewardItemInfo))] [FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] public class RaidFixedRewardItemInfo { [FlatBufferItem(0)] public int Category { get; set; } [FlatBufferItem(1)] public int SubjectType { get; set; } [FlatBufferItem(2)] public int ItemID { get; set; } [FlatBufferItem(3)] public sbyte Num { get; set; } } ================================================ FILE: RaidCrawler.Core/Structures/TeraDistribution.cs ================================================ using PKHeX.Core; using pkNX.Structures.FlatBuffers.Gen9; using System.Diagnostics; using static System.Buffers.Binary.BinaryPrimitives; namespace RaidCrawler.Core.Structures; public class TeraDistribution : ITeraRaid { public readonly EncounterDist9 Entity; // Raw data public readonly ulong DropTableFix; public readonly ulong DropTableRandom; public readonly ushort[] ExtraMoves; public readonly sbyte DeliveryGroupID; public ushort Species => Entity.Species; public byte Form => Entity.Form; public byte Gender => Entity.Gender; public AbilityPermission Ability => Entity.Ability; public byte FlawlessIVCount => Entity.FlawlessIVCount; public Shiny Shiny => Entity.Shiny; public Nature Nature => Entity.Nature; public byte Level => Entity.Level; public IndividualValueSet IVs => Entity.IVs; public ushort Move1 => Entity.Moves.Move1; public ushort Move2 => Entity.Moves.Move2; public ushort Move3 => Entity.Moves.Move3; public ushort Move4 => Entity.Moves.Move4; public byte Stars => Entity.Stars; public byte RandRate => Entity.RandRate; ushort[] ITeraRaid.ExtraMoves => ExtraMoves; public static bool AvailableInGame(ITeraRaid9 enc, string game) => enc switch { EncounterDist9 encd => game switch { "Scarlet" => encd.RandRate0TotalScarlet + encd.RandRate1TotalScarlet + encd.RandRate2TotalScarlet + encd.RandRate3TotalScarlet != 0, "Violet" => encd.RandRate0TotalViolet + encd.RandRate1TotalViolet + encd.RandRate2TotalViolet + encd.RandRate3TotalViolet != 0, _ => false, }, EncounterMight9 encm => game switch { "Scarlet" => encm.RandRate0TotalScarlet + encm.RandRate1TotalScarlet + encm.RandRate2TotalScarlet + encm.RandRate3TotalScarlet != 0, "Violet" => encm.RandRate0TotalViolet + encm.RandRate1TotalViolet + encm.RandRate2TotalViolet + encm.RandRate3TotalViolet != 0, _ => false, }, _ => false, }; public TeraDistribution(EncounterDist9 enc, ulong fixedRewards, ulong lotteryRewards, ushort[] extras, sbyte group) { Entity = enc; DropTableFix = fixedRewards; DropTableRandom = lotteryRewards; ExtraMoves = extras .Where(z => z != 0 && !Entity.Moves.Contains(z)) .Distinct() .ToArray(); DeliveryGroupID = group; if (ExtraMoves.Length > 4) Debug.WriteLine(ExtraMoves); } public static TeraDistribution[] GetAllEncounters(ReadOnlyMemory encounters) { var all = FlatbufferDumper.DumpDistributionRaids(encounters); var type2 = EncounterDist9.GetArray(all[0]); var rewards2 = GetRewardTables(all[2]); var extra2 = all[4]; var group2 = all[6]; var result = new TeraDistribution[type2.Length]; for (int i = 0; i < result.Length; i++) { var i1 = rewards2[i].Item1; var i2 = rewards2[i].Item2; var extras = extra2[(12 * i)..]; result[i] = new TeraDistribution(type2[i], i1, i2, GetExtraMoves(extras), (sbyte)group2[i]); } return result; } public static (ulong, ulong)[] GetRewardTables(ReadOnlySpan rewards) { var count = rewards.Length / 0x10; var result = new (ulong, ulong)[count]; for (int i = 0; i < result.Length; i++) { var reward1 = ReadUInt64LittleEndian(rewards[(0x10 * i)..]); var reward2 = ReadUInt64LittleEndian(rewards[((0x10 * i) + 0x8)..]); result[i] = (reward1, reward2); } return result; } public static ushort[] GetExtraMoves(ReadOnlySpan extra) { var result = new ushort[6]; for (int i = 0; i < result.Length; i++) result[i] = ReadUInt16LittleEndian(extra[(0x2 * i)..]); return result; } public static List<(int, int, int)> GetRewards( TeraDistribution enc, uint seed, int teraType, IReadOnlyList? fixedRewards, IReadOnlyList? lotteryRewards, int boost ) { List<(int, int, int)> result = []; if (lotteryRewards is null) return result; if (fixedRewards is null) return result; var fixedTable = fixedRewards.FirstOrDefault(z => z.TableName == enc.DropTableFix); if (fixedTable is null) return result; var lotteryTable = lotteryRewards.FirstOrDefault(z => z.TableName == enc.DropTableRandom); if (lotteryTable is null) return result; // fixed reward for (int i = 0; i < DeliveryRaidFixedRewardItem.Count; i++) { var item = fixedTable.GetReward(i); if (item is { Category: 0, ItemID: 0 }) continue; var itemID = GetActualItemID(enc, teraType, item); result.Add((itemID, item.Num, item.SubjectType)); } // lottery reward var total = 0; for (int i = 0; i < DeliveryRaidLotteryRewardItem.RewardItemCount; i++) total += lotteryTable.GetRewardItem(i).Rate; var rand = new Xoroshiro128Plus(seed); var count = (int)rand.NextInt(100); count = Rewards.GetRewardCount(count, enc.Stars) + boost; for (int i = 0; i < count; i++) { var roll = (int)rand.NextInt((ulong)total); for (int j = 0; j < DeliveryRaidLotteryRewardItem.RewardItemCount; j++) { var item = lotteryTable.GetRewardItem(j); if (roll < item.Rate) { if (item.Category == 0) result.Add((item.ItemID, item.Num, 0)); else if (item.Category == 1) result.Add(item.ItemID == 0 ? (Rewards.GetMaterial(enc.Species), item.Num, 0) : (item.ItemID, item.Num, 0)); else result.Add(item.ItemID == 0 ? (Rewards.GetTeraShard(teraType), item.Num, 0) : (item.ItemID, item.Num, 0)); break; } roll -= item.Rate; } } return Rewards.ReorderRewards(result); } private static int GetActualItemID(ISpeciesForm enc, int teraType, pkNX.Structures.FlatBuffers.Gen9.RaidFixedRewardItemInfo item) { if (item.ItemID != 0) return item.ItemID; if (item.Category == 2) return Rewards.GetTeraShard(teraType); return Rewards.GetMaterial(enc.Species); } } public class TeraMight : ITeraRaid { public readonly EncounterMight9 Entity; // Raw data public readonly ulong DropTableFix; public readonly ulong DropTableRandom; public readonly ushort[] ExtraMoves; public readonly sbyte DeliveryGroupID; public ushort Species => Entity.Species; public byte Form => Entity.Form; public byte Gender => Entity.Gender; public AbilityPermission Ability => Entity.Ability; public byte FlawlessIVCount => Entity.FlawlessIVCount; public Shiny Shiny => Entity.Shiny; public Nature Nature => Entity.Nature; public byte Level => Entity.Level; public IndividualValueSet IVs => Entity.IVs; public ushort Move1 => Entity.Moves.Move1; public ushort Move2 => Entity.Moves.Move2; public ushort Move3 => Entity.Moves.Move3; public ushort Move4 => Entity.Moves.Move4; public byte Stars => Entity.Stars; public byte RandRate => Entity.RandRate; ushort[] ITeraRaid.ExtraMoves => ExtraMoves; public static bool AvailableInGame(ITeraRaid9 enc, string game) => enc switch { EncounterDist9 encd => game switch { "Scarlet" => encd.RandRate0TotalScarlet + encd.RandRate1TotalScarlet + encd.RandRate2TotalScarlet + encd.RandRate3TotalScarlet != 0, "Violet" => encd.RandRate0TotalViolet + encd.RandRate1TotalViolet + encd.RandRate2TotalViolet + encd.RandRate3TotalViolet != 0, _ => false, }, EncounterMight9 encm => game switch { "Scarlet" => encm.RandRate0TotalScarlet + encm.RandRate1TotalScarlet + encm.RandRate2TotalScarlet + encm.RandRate3TotalScarlet != 0, "Violet" => encm.RandRate0TotalViolet + encm.RandRate1TotalViolet + encm.RandRate2TotalViolet + encm.RandRate3TotalViolet != 0, _ => false, }, _ => false, }; public TeraMight(EncounterMight9 enc, ulong fixedRewards, ulong lotteryRewards, ushort[] extras, sbyte group) { Entity = enc; DropTableFix = fixedRewards; DropTableRandom = lotteryRewards; ExtraMoves = extras .Where(z => z != 0 && !Entity.Moves.Contains(z)) .Distinct() .ToArray(); DeliveryGroupID = group; if (ExtraMoves.Length > 4) Debug.WriteLine(ExtraMoves); } public static TeraMight[] GetAllEncounters(ReadOnlyMemory encounters) { var all = FlatbufferDumper.DumpDistributionRaids(encounters); var type3 = EncounterMight9.GetArray(all[1]); var rewards3 = GetRewardTables(all[3]); var extra3 = all[5]; var group3 = all[7]; var result = new TeraMight[type3.Length]; for (int i = 0; i < result.Length; i++) { var item1 = rewards3[i].Item1; var item2 = rewards3[i].Item2; var extra = GetExtraMoves(extra3[(12 * i)..]); result[i] = new TeraMight(type3[i], item1, item2, extra, (sbyte)group3[i]); } return result; } public static (ulong, ulong)[] GetRewardTables(ReadOnlySpan rewards) { var count = rewards.Length / 0x10; var result = new (ulong, ulong)[count]; for (int i = 0; i < result.Length; i++) { var item1 = ReadUInt64LittleEndian(rewards[(0x10 * i)..]); var item2 = ReadUInt64LittleEndian(rewards[((0x10 * i) + 0x8)..]); result[i] = (item1, item2); } return result; } public static ushort[] GetExtraMoves(ReadOnlySpan extra) { var result = new ushort[6]; for (int i = 0; i < result.Length; i++) result[i] = ReadUInt16LittleEndian(extra[(0x2 * i)..]); return result; } public static List<(int, int, int)> GetRewards(TeraMight enc, uint seed, int teraType, IReadOnlyList? fixedRewards, IReadOnlyList? lotteryRewards, int boost) { List<(int, int, int)> result = []; if (lotteryRewards is null) return result; if (fixedRewards is null) return result; var fixedTable = fixedRewards.FirstOrDefault(z => z.TableName == enc.DropTableFix); if (fixedTable is null) return result; var lotteryTable = lotteryRewards.FirstOrDefault(z => z.TableName == enc.DropTableRandom); if (lotteryTable is null) return result; // fixed reward for (int i = 0; i < DeliveryRaidFixedRewardItem.Count; i++) { var item = fixedTable.GetReward(i); if (item is { Category: 0, ItemID: 0 }) continue; var itemID = GetActualItemID(enc, teraType, item); result.Add((itemID, item.Num, item.SubjectType)); } // lottery reward var total = 0; for (int i = 0; i < DeliveryRaidLotteryRewardItem.RewardItemCount; i++) total += lotteryTable.GetRewardItem(i).Rate; var rand = new Xoroshiro128Plus(seed); var count = (int)rand.NextInt(100); count = Rewards.GetRewardCount(count, enc.Stars) + boost; for (int i = 0; i < count; i++) { var roll = (int)rand.NextInt((ulong)total); for (int j = 0; j < DeliveryRaidLotteryRewardItem.RewardItemCount; j++) { var item = lotteryTable.GetRewardItem(j); if (roll < item.Rate) { if (item.Category == 0) result.Add((item.ItemID, item.Num, 0)); else if (item.Category == 1) result.Add(item.ItemID == 0 ? (Rewards.GetMaterial(enc.Species), item.Num, 0) : (item.ItemID, item.Num, 0)); else result.Add(item.ItemID == 0 ? (Rewards.GetTeraShard(teraType), item.Num, 0) : (item.ItemID, item.Num, 0)); break; } roll -= item.Rate; } } return Rewards.ReorderRewards(result); } private static int GetActualItemID(ISpeciesForm enc, int teraType, pkNX.Structures.FlatBuffers.Gen9.RaidFixedRewardItemInfo item) { if (item.ItemID != 0) return item.ItemID; if (item.Category == 2) return Rewards.GetTeraShard(teraType); return Rewards.GetMaterial(enc.Species); } } ================================================ FILE: RaidCrawler.Core/Structures/TeraEncounter.cs ================================================ using PKHeX.Core; using pkNX.Structures.FlatBuffers.Gen9; using System.Diagnostics; namespace RaidCrawler.Core.Structures; public class TeraEncounter : ITeraRaid { public readonly EncounterTera9 Entity; // Raw data public readonly ulong DropTableFix; public readonly ulong DropTableRandom; public readonly ushort[] ExtraMoves; public ushort Species => Entity.Species; public byte Form => Entity.Form; public byte Gender => Entity.Gender; public AbilityPermission Ability => Entity.Ability; public byte FlawlessIVCount => Entity.FlawlessIVCount; public Shiny Shiny => Entity.Shiny; public byte Level => Entity.Level; public ushort Move1 => Entity.Moves.Move1; public ushort Move2 => Entity.Moves.Move2; public ushort Move3 => Entity.Moves.Move3; public ushort Move4 => Entity.Moves.Move4; public byte Stars => Entity.Stars; public byte RandRate => Entity.RandRate; ushort[] ITeraRaid.ExtraMoves => ExtraMoves; public TeraEncounter( EncounterTera9 enc, ulong fixedRewards, ulong lotteryRewards, ushort[] extras ) { Entity = enc; DropTableFix = fixedRewards; DropTableRandom = lotteryRewards; ExtraMoves = extras .Where(z => z != 0 && !Entity.Moves.Contains(z)) .Distinct() .ToArray(); if (ExtraMoves.Length > 4) Debug.WriteLine(ExtraMoves); } public static TeraEncounter[] GetAllEncounters(string[] resources, TeraRaidMapParent map) { var data = FlatbufferDumper.DumpBaseROMRaids(resources); var encs = EncounterTera9.GetArray(data[0], map); var extras = data[1].AsSpan(); var rewards = TeraDistribution.GetRewardTables(data[2]); var result = new TeraEncounter[encs.Length]; for (int i = 0; i < encs.Length; i++) { var item1 = rewards[i].Item1; var item2 = rewards[i].Item2; var extra = TeraDistribution.GetExtraMoves(extras[(12 * i)..]); result[i] = new TeraEncounter(encs[i], item1, item2, extra); } return result; } public static List<(int, int, int)> GetRewards(TeraEncounter enc, uint seed, int teraType, IReadOnlyList? fixedRewards, IReadOnlyList? lotteryRewards, int boost) { List<(int, int, int)> result = []; if (lotteryRewards is null || fixedRewards is null) return result; var fixedTable = fixedRewards.FirstOrDefault(z => z.TableName == enc.DropTableFix); if (fixedTable is null) return result; var lotteryTable = lotteryRewards.FirstOrDefault(z => z.TableName == enc.DropTableRandom); if (lotteryTable is null) return result; // fixed reward for (int i = 0; i < RaidFixedRewards.Count; i++) { var item = fixedTable.GetReward(i); if (item is null or { Category: 0, ItemID: 0 }) continue; result.Add( ( item.ItemID == 0 ? item.Category == 2 ? Rewards.GetTeraShard(teraType) : Rewards.GetMaterial(enc.Species) : item.ItemID, item.Num, item.SubjectType ) ); } // lottery reward var total = 0; for (int i = 0; i < RaidLotteryRewards.RewardItemCount; i++) total += lotteryTable.GetRewardItem(i)!.Rate; var rand = new Xoroshiro128Plus(seed); var count = (int)rand.NextInt(100); // sandwich = extra rolls? how does this work? is this even 100? count = Rewards.GetRewardCount(count, enc.Stars) + boost; for (int i = 0; i < count; i++) { var roll = (int)rand.NextInt((ulong)total); for (int j = 0; j < DeliveryRaidLotteryRewardItem.RewardItemCount; j++) { var item = lotteryTable.GetRewardItem(j)!; if (roll < item.Rate) { if (item.Category == 0) result.Add((item.ItemID, item.Num, 0)); else if (item.Category == 1) result.Add(item.ItemID == 0 ? (Rewards.GetMaterial(enc.Species), item.Num, 0) : (item.ItemID, item.Num, 0)); else result.Add(item.ItemID == 0 ? (Rewards.GetTeraShard(teraType), item.Num, 0) : (item.ItemID, item.Num, 0)); break; } roll -= item.Rate; } } return Rewards.ReorderRewards(result); } } ================================================ FILE: RaidCrawler.Core/Structures/Utils.cs ================================================ using PKHeX.Core; using System.Numerics; using System.Reflection; namespace RaidCrawler.Core.Structures; public static class Utils { private static readonly Assembly thisAssembly; private static readonly Dictionary resourceNameMap; static Utils() { thisAssembly = Assembly.GetExecutingAssembly(); resourceNameMap = BuildLookup(thisAssembly.GetManifestResourceNames()); } private static Dictionary BuildLookup(IReadOnlyCollection manifestNames) { var result = new Dictionary(manifestNames.Count); foreach (var resName in manifestNames) { var fileName = GetFileName(resName); result.TryAdd(fileName, resName); } return result; } private static string GetFileName(string resName) { var period = resName.LastIndexOf('.', resName.Length - 6); var start = period + 1; System.Diagnostics.Debug.Assert(start != 0); // text file fetch excludes ".txt" (mixed case...); other extensions are used (all lowercase). return resName.EndsWith(".txt", StringComparison.Ordinal) ? resName[start..^4].ToLowerInvariant() : resName[start..]; } public static byte[] GetBinaryResource(string name) { if (!resourceNameMap.TryGetValue(name, out var resName)) return []; using var resource = thisAssembly.GetManifestResourceStream(resName); if (resource is null) return []; var buffer = new byte[resource.Length]; _ = resource.Read(buffer, 0, (int)resource.Length); return buffer; } public static string? GetStringResource(string name) { if (!resourceNameMap.TryGetValue(name.ToLowerInvariant(), out var resourceName)) return null; using var resource = thisAssembly.GetManifestResourceStream(resourceName); if (resource is null) return null; using var reader = new StreamReader(resource); return reader.ReadToEnd(); } public static Version? GetLatestVersion() { const string endpoint = "https://api.github.com/repos/LegoFigure11/RaidCrawler/releases/latest"; var response = NetUtil.GetStringFromURL(new Uri(endpoint)); if (response is null) return null; const string tag = "tag_name"; var index = response.IndexOf(tag, StringComparison.Ordinal); if (index == -1) return null; var first = response.IndexOf('"', index + tag.Length + 1) + 1; if (first == 0) return null; var second = response.IndexOf('"', first); if (second == -1) return null; var tagString = response.AsSpan()[first..second].TrimStart('v'); var patchIndex = tagString.IndexOf('-'); if (patchIndex != -1) tagString = tagString.ToString().Remove(patchIndex).AsSpan(); return !Version.TryParse(tagString, out var latestVersion) ? null : latestVersion; } public static string GetFormString(ushort species, byte form, GameStrings formStrings, EntityContext context = EntityContext.Gen9) { var result = ShowdownParsing.GetStringFromForm(form, formStrings, species, context); if (result.Length > 0 && result[0] != '-') return result.Insert(0, "-"); return result; } public static int[] ToSpeedLast(ReadOnlySpan ivs) => [ivs[0], ivs[1], ivs[2], ivs[4], ivs[5], ivs[3]]; } ================================================ FILE: RaidCrawler.Tests/FilterTests.cs ================================================ using FluentAssertions; using System.ComponentModel; using Xunit; namespace RaidCrawler.Tests; public class FilterTests : TestUtil { private const string SennaDitto = "RaidCrawler.Tests.Blocks.senna_9_132_Modest_31_0_31_31_31_31_SL"; // Progress: 4 story private const string SennaDittoFilterAtk = "RaidCrawler.Tests.Filters.Ditto0Atk.json"; private const string SennaDittoFilterSpe = "RaidCrawler.Tests.Filters.Ditto0Spe.json"; private const string NewtShinyBounsweet = "RaidCrawler.Tests.Blocks.newt_56_761_Calm_4_7_4_3_31_25_VL"; // Progress: 0 story private const string NewtBounsweetFilter = "RaidCrawler.Tests.Filters.BounsweetShiny.json"; private const string IVControlFilter = "RaidCrawler.Tests.Filters.IVControl.json"; [Theory] [InlineData(SennaDitto, SennaDittoFilterAtk, IVControlFilter, 4)] [InlineData(SennaDitto, SennaDittoFilterSpe, IVControlFilter, 4)] [InlineData(NewtShinyBounsweet, NewtBounsweetFilter, IVControlFilter, 0)] [Description("Test various stat filters.")] public void FilterTest(string path, string filterPath, string controlPath, int storyPrg) { var raid = GetRaidContainer(path, storyPrg); raid.Item1.delivery.Should().Be(0); raid.Item1.enc.Should().Be(0); var container = raid.Item2; container.Should().NotBeNull(); var filter = GetRaidFilter(filterPath)[0]; filter.Should().NotBeNull(); var raids = container!.Raids; var encounters = container.Encounters; var satisfied = 0; for (int i = 0; i < raids.Count; i++) { if (filter.FilterSatisfied(container, encounters[i], raids[i], 0)) satisfied++; } satisfied.Should().NotBe(0); var controlFilter = GetRaidFilter(controlPath)[0]; filter.IVBin = controlFilter.IVBin; filter.IVComps = controlFilter.IVComps; filter.IVVals = controlFilter.IVVals; satisfied = 0; for (int i = 0; i < raids.Count; i++) { if (filter.FilterSatisfied(container, encounters[i], raids[i], 0)) satisfied++; } satisfied.Should().Be(0); } } ================================================ FILE: RaidCrawler.Tests/Filters/BounsweetShiny.json ================================================ [{"Name":"BounsweetShiny","Species":761,"Form":null,"Stars":null,"StarsComp":0,"Shiny":true,"Square":false,"Nature":20,"TeraType":null,"Gender":null,"IVBin":0,"IVComps":0,"IVVals":1073740831,"Enabled":true,"RewardItems":null,"RewardsComp":-1,"RewardsCount":0,"BatchFilters":null}] ================================================ FILE: RaidCrawler.Tests/Filters/Ditto0Atk.json ================================================ [{"Name":"Ditto0Atk","Species":132,"Form":null,"Stars":null,"StarsComp":0,"Shiny":false,"Square":false,"Nature":15,"TeraType":null,"Gender":null,"IVBin":63,"IVComps":0,"IVVals":1073740831,"Enabled":true,"RewardItems":null,"RewardsComp":-1,"RewardsCount":0,"BatchFilters":null}] ================================================ FILE: RaidCrawler.Tests/Filters/Ditto0Spe.json ================================================ [{"Name":"Ditto0Spe","Species":null,"Form":null,"Stars":null,"StarsComp":0,"Shiny":false,"Square":false,"Nature":null,"TeraType":null,"Gender":null,"IVBin":63,"IVComps":0,"IVVals":33554431,"Enabled":true,"RewardItems":null,"RewardsComp":-1,"RewardsCount":0,"BatchFilters":null}] ================================================ FILE: RaidCrawler.Tests/Filters/IVControl.json ================================================ [{"Name":"IVControl","Species":null,"Form":null,"Stars":null,"StarsComp":0,"Shiny":false,"Square":false,"Nature":null,"TeraType":null,"Gender":null,"IVBin":63,"IVComps":0,"IVVals":206703681,"Enabled":true,"RewardItems":null,"RewardsComp":-1,"RewardsCount":0,"BatchFilters":null}] ================================================ FILE: RaidCrawler.Tests/RaidCrawler.Tests.csproj ================================================ enable enable false true runtime; build; native; contentfiles; analyzers; buildtransitive all runtime; build; native; contentfiles; analyzers; buildtransitive all ================================================ FILE: RaidCrawler.Tests/RaidReadTests.cs ================================================ using FluentAssertions; using System.ComponentModel; using Xunit; namespace RaidCrawler.Tests; public class RaidReadTests : TestUtil { private const string AnubisMightCleared = "RaidCrawler.Tests.Blocks.anubis_Might_cleared_VL"; // Progress: 4 story private const string Buddy12Distro = "RaidCrawler.Tests.Blocks.buddy_12_Distro_noMight_VL"; // Progress: 3 story private const string Chaos12Distro = "RaidCrawler.Tests.Blocks.chaos_12_Distro_noMight_VL"; // Progress: 3 story private const string ZyroInteleonIL = "RaidCrawler.Tests.Blocks.zyro_Inteleon_IL_VL"; // Progress: 4 story [Theory] [InlineData(AnubisMightCleared, 4, 67)] [InlineData(Buddy12Distro, 3, 69)] [InlineData(Chaos12Distro, 3, 69)] [InlineData(ZyroInteleonIL, 4, 69)] [Description( "Test read conditions where Might7 is possible but cleared, and where Might7 is possible but not present." )] public void RaidReadTest(string path, int storyPrg, int expectedRaids) { var raid = GetRaidContainer(path, storyPrg); raid.Item1.delivery.Should().Be(0); raid.Item1.enc.Should().Be(0); var container = raid.Item2; container.Should().NotBeNull(); var raidCount = container!.GetRaidCount(); var encCount = container.Encounters.Count; container.GetRaidCount().Should().Be(expectedRaids); raidCount.Should().Be(encCount); } } ================================================ FILE: RaidCrawler.Tests/RaidStatTests.cs ================================================ using FluentAssertions; using PKHeX.Core; using RaidCrawler.Core.Structures; using System.ComponentModel; using System.Diagnostics.Metrics; using Xunit; namespace RaidCrawler.Tests; public class RaidStatTests : TestUtil { private const string SennaDitto = "RaidCrawler.Tests.Blocks.senna_9_132_Modest_31_0_31_31_31_31_SL"; // Progress: 4 story private const string NewtShinyBounsweet = "RaidCrawler.Tests.Blocks.newt_56_761_Calm_4_7_4_3_31_25_VL"; // Progress: 0 story private const string HexManiacLisaHippopotas = "RaidCrawler.Tests.Blocks.lisa_30_449_Gentle_21_31_25_21_8_31_SL"; // Progress: 4 story [Theory] [InlineData(SennaDitto, 4, 9, Species.Ditto, new[] { 31, 0, 31, 31, 31, 31 }, Nature.Modest, false)] [InlineData(NewtShinyBounsweet, 0, 56, Species.Bounsweet, new[] { 4, 7, 4, 3, 31, 25 }, Nature.Calm, true)] [InlineData(HexManiacLisaHippopotas, 4, 30, Species.Hippopotas, new[] { 21, 31, 25, 21, 8, 31 }, Nature.Gentle, false)] [Description("Test known stats for a given raid encounter to make sure they match expected values.")] public void StatsCorrect(string path, int storyPrg, int denIndex, Species species, int[] ivs, Nature nature, bool shiny) { var raids = GetRaidContainer(path, storyPrg); raids.Item1.delivery.Should().Be(0); raids.Item1.enc.Should().Be(0); var container = raids.Item2; container.Should().NotBeNull(); var raid = container!.Raids[denIndex]; var enc = container.Encounters[denIndex]; enc.Species.Should().Be((ushort)species); var param = enc.GetParam(); var blank = new PK9 { Species = enc.Species, Form = enc.Form }; raid.GenerateDataPK9(blank, param, enc.Shiny, raid.Seed); Span _ivs = stackalloc int[6]; blank.GetIVs(_ivs); var encIVs = Utils.ToSpeedLast(_ivs); encIVs.SequenceEqual(ivs).Should().BeTrue(); blank.Nature.Should().Be(nature); blank.IsShiny.Should().Be(shiny); } } ================================================ FILE: RaidCrawler.Tests/TestUtil.cs ================================================ using RaidCrawler.Core.Structures; using System.Reflection; using System.Text.Json; namespace RaidCrawler.Tests; public class TestUtil { private readonly Assembly assembly; public TestUtil() { assembly = Assembly.GetExecutingAssembly(); } private static string GetGame(string resource) => resource.Contains("_VL", StringComparison.Ordinal) ? "Violet" : "Scarlet"; private static string GetTestResourceName(string name, string resource) => $"{name}.{resource}"; private byte[] GetBinaryTestResource(string name) { using var resource = assembly.GetManifestResourceStream(name)!; using var reader = new BinaryReader(resource); return reader.ReadBytes((int)resource.Length); } private string GetStringTestResource(string name) { using var resource = assembly.GetManifestResourceStream(name)!; using var reader = new StreamReader(resource); return reader.ReadToEnd(); } public ((int delivery, int enc), RaidContainer?) GetRaidContainer(string path, int storyPrg) { var game = GetGame(path); var container = new RaidContainer(game); var eventPrg = Math.Min(storyPrg, 3); // Read embedded distribution data. var delivery_raid_prio = GetBinaryTestResource( GetTestResourceName(path, "raid_priority_array") ); (var group_id, var priority) = FlatbufferDumper.DumpDeliveryPriorities( delivery_raid_prio ); if (priority == 0) return ((-1, -1), null); var delivery_raid_fbs = GetBinaryTestResource( GetTestResourceName(path, "raid_enemy_array") ); var delivery_fixed_rewards = GetBinaryTestResource( GetTestResourceName(path, "fixed_reward_item_array") ); var delivery_lottery_rewards = GetBinaryTestResource( GetTestResourceName(path, "lottery_reward_item_array") ); container.DistTeraRaids = TeraDistribution.GetAllEncounters(delivery_raid_fbs); container.MightTeraRaids = TeraMight.GetAllEncounters(delivery_raid_fbs); container.DeliveryRaidPriority = group_id; container.DeliveryRaidFixedRewards = FlatbufferDumper.DumpFixedRewards( delivery_fixed_rewards ); container.DeliveryRaidLotteryRewards = FlatbufferDumper.DumpLotteryRewards( delivery_lottery_rewards ); // Read embedded base data and read all raids. var baseData = GetBinaryTestResource(GetTestResourceName(path, "base")); var failed = container.ReadAllRaids(baseData, storyPrg, 0, eventPrg, 0); return (failed, container); } public IReadOnlyList GetRaidFilter(string path) { var text = GetStringTestResource(path); return JsonSerializer.Deserialize>(text)!; } } ================================================ FILE: RaidCrawler.WinForms/App.config ================================================  ================================================ FILE: RaidCrawler.WinForms/Config.cs ================================================ using RaidCrawler.Core.Interfaces; using SysBot.Base; namespace RaidCrawler.WinForms; public class ClientConfig : IDateAdvanceConfig, IWebhookConfig { // General public string IP { get; set; } = "192.168.0.0"; public int UsbPort { get; set; } public SwitchProtocol Protocol { get; set; } = SwitchProtocol.WiFi; public string Game { get; set; } = "Scarlet"; public int Progress { get; set; } public int EventProgress { get; set; } public bool EnableFilters { get; set; } = true; public bool PaldeaScan { get; set; } = true; public bool KitakamiScan { get; set; } = true; public bool BlueberryScan { get; set; } = true; // Match public bool FocusWindow { get; set; } = true; public bool PlaySound { get; set; } = true; public bool EnableAlertWindow { get; set; } = true; public string AlertWindowMessage { get; set; } = "Match found! Hold Shift and click one of the arrow keys to jump to the matching result."; public bool EnableNotification { get; set; } public string DiscordWebhook { get; set; } = string.Empty; public string DiscordMessageContent { get; set; } = string.Empty; // Date Advance public bool ZyroMethod { get; set; } public bool UseTouch { get; set; } public bool UseOvershoot { get; set; } public bool DodgeSystemUpdate { get; set; } public bool SaveOnMatch { get; set; } = true; public bool UseSetStick { get; set; } public bool UseMapTrick { get; set; } public int OpenHomeDelay { get; set; } = 1_800; public int NavigateToSettingsDelay { get; set; } = 0_100; public int OpenSettingsDelay { get; set; } = 1_000; public int HoldDuration { get; set; } = 1_700; public int SystemDownPresses { get; set; } = 38; public int Submenu { get; set; } = 2_200; public int DateChange { get; set; } = 0_500; public int DaysToSkip { get; set; } public int ReturnHomeDelay { get; set; } = 2_500; public int ReturnGameDelay { get; set; } = 4_000; public int SystemOvershoot { get; set; } = 0_750; public int BaseDelay { get; set; } public int SaveGameDelay { get; set; } public int SystemReset { get; set; } = 30; public int RelaunchDelay { get; set; } public int ExtraOverworldWait { get; set; } // Webhook public bool EnableEmoji { get; set; } = true; public bool VerboseIVs { get; set; } public int IVsStyle { get; set; } public string IVsSpacer { get; set; } = " "; public bool ToggleDen { get; set; } = true; public Dictionary Emoji { get; set; } = new() { { "Bug", "<:bug:1064546304048496812>" }, { "Dark", "<:dark:1064557656079085588>" }, { "Dragon", "<:dragon:1064557631890538566>" }, { "Electric", "<:electric:1064557559563943956>" }, { "Fairy", "<:fairy:1064557682566123701>" }, { "Fighting", "<:fighting:1064546289406189648>" }, { "Fire", "<:fire:1064557482468446230>" }, { "Flying", "<:flying:1064546291239104623>" }, { "Ghost", "<:ghost:1064546307848536115>" }, { "Grass", "<:grass:1064557534096130099>" }, { "Ground", "<:ground:1064546296725241988>" }, { "Ice", "<:ice:1064557609857863770>" }, { "Normal", "<:normal:1064546286247886938>" }, { "Poison", "<:poison:1064546294854586400>" }, { "Psychic", "<:psychic:1064557585124049006>" }, { "Rock", "<:rock:1064546299992625242>" }, { "Steel", "<:steel:1064557443742453790>" }, { "Water", "<:water:1064557509404270642>" }, { "Male", "<:male:1064844611341795398>" }, { "Female", "<:female:1064844510636552212>" }, { "Shiny", "<:shiny:1064845915036323840>" }, { "Square Shiny", ":white_square_button:" }, { "Event Star", "<:bluestar:1064538604409471016>" }, { "7 Star", "<:pinkstar:1064538642934140978>" }, { "Star", "<:yellowstar:1064538672113922109>" }, { "Health 0", "<:h0:1064842950573572126>" }, { "Health 31", "<:h31:1064726680628895784>" }, { "Attack 0", "<:a0:1064842895712075796>" }, { "Attack 31", "<:a31:1064726668419289138>" }, { "Defense 0", "<:b0:1064842811196833832>" }, { "Defense 31", "<:b31:1064726671703429220>" }, { "SpAttack 0", "<:c0:1064842749272133752>" }, { "SpAttack 31", "<:c31:1064726673649582121>" }, { "SpDefense 0", "<:d0:1064842668624068608>" }, { "SpDefense 31", "<:d31:1064726677176987832>" }, { "Speed 0", "<:s0:1064842545953243176>" }, { "Speed 31", "<:s31:1064726682721865818>" }, { "Sweet Herba", "<:sweetherba:1064541764163227759>" }, { "Sour Herba", "<:sourherba:1064541770148483073>" }, { "Salty Herba", "<:saltyherba:1064541768147796038>" }, { "Bitter Herba", "<:bitterherba:1064541773763977256>" }, { "Spicy Herba", "<:spicyherba:1064541776699994132>" }, { "Bottle Cap", "<:bottlecap:1064537470370320495>" }, { "Ability Capsule", "<:abilitycapsule:1064541406921752737>" }, { "Ability Patch", "<:abilitypatch:1064538087763476522>" }, }; // Experimental public bool StreamerView { get; set; } public string InstanceName { get; set; } = string.Empty; } ================================================ FILE: RaidCrawler.WinForms/ErrorHandler/ErrorHandler.cs ================================================ using RaidCrawler.Core.Discord; namespace RaidCrawler.WinForms; public static class ErrorHandler { public static async Task DisplayMessageBox(this Form form, NotificationHandler webhook, string msg, CancellationToken token, string caption = "") { caption = caption.Length == 0 ? "RaidCrawler Error" : caption; await webhook.SendErrorNotification(msg, caption, token).ConfigureAwait(false); if (form.InvokeRequired) form.Invoke(() => MessageBox.Show(msg, caption, MessageBoxButtons.OK)); else MessageBox.Show(msg, caption, MessageBoxButtons.OK); } } ================================================ FILE: RaidCrawler.WinForms/MainWindow.Designer.cs ================================================ namespace RaidCrawler.WinForms { partial class MainWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindow)); toolTip = new ToolTip(components); ButtonAdvanceDate = new Button(); CheckEnableFilters = new CheckBox(); ButtonDisconnect = new Button(); ButtonConnect = new Button(); InputSwitchIP = new TextBox(); LabelSwitchIP = new Label(); LabelLoadedRaids = new Label(); TeraType = new TextBox(); LabelTeraType = new Label(); PID = new TextBox(); LabelPID = new Label(); EC = new TextBox(); LabelEC = new Label(); Seed = new TextBox(); LabelSeed = new Label(); ButtonNext = new Button(); ButtonPrevious = new Button(); Area = new TextBox(); LabelUNK_2 = new Label(); IVs = new TextBox(); LabelIVs = new Label(); ButtonReadRaids = new Button(); labelEvent = new Label(); Difficulty = new TextBox(); LabelDifficulty = new Label(); ButtonViewRAM = new Button(); Species = new TextBox(); LabelSpecies = new Label(); LabelMoves = new Label(); Move1 = new TextBox(); Move2 = new TextBox(); Move4 = new TextBox(); Move3 = new TextBox(); Nature = new TextBox(); LabelNature = new Label(); Gender = new TextBox(); LabelGender = new Label(); StopFilter = new Button(); Sprite = new PictureBox(); Ability = new TextBox(); LabelAbility = new Label(); GemIcon = new PictureBox(); ButtonDownloadEvents = new Button(); ConfigSettings = new Button(); Rewards = new Button(); LabelSandwichBonus = new Label(); RaidBoost = new ComboBox(); ComboIndex = new ComboBox(); SendScreenshot = new Button(); SearchTimer = new System.Timers.Timer(); btnOpenMap = new Button(); groupBox1 = new GroupBox(); statusStrip1 = new StatusStrip(); StatusLabel = new ToolStripStatusLabel(); ToolStripStatusLabel = new ToolStripStatusLabel(); Label_DayAdvance = new ToolStripStatusLabel(); USB_Port_label = new Label(); USB_Port_TB = new TextBox(); StopAdvance_Button = new Button(); B_DateTools = new Button(); ((System.ComponentModel.ISupportInitialize)Sprite).BeginInit(); ((System.ComponentModel.ISupportInitialize)GemIcon).BeginInit(); ((System.ComponentModel.ISupportInitialize)SearchTimer).BeginInit(); groupBox1.SuspendLayout(); statusStrip1.SuspendLayout(); SuspendLayout(); // // ButtonAdvanceDate // ButtonAdvanceDate.Enabled = false; ButtonAdvanceDate.Location = new Point(117, 98); ButtonAdvanceDate.Margin = new Padding(4, 3, 4, 3); ButtonAdvanceDate.Name = "ButtonAdvanceDate"; ButtonAdvanceDate.Size = new Size(96, 27); ButtonAdvanceDate.TabIndex = 81; ButtonAdvanceDate.Text = "Advance Date"; toolTip.SetToolTip(ButtonAdvanceDate, "Advance Date performs one (1) time set.\r\n\r\nIf Stop Filters are defined, Advance Date\r\ncontinues advancing the date until a stop\r\nfilter has been hit."); ButtonAdvanceDate.UseVisualStyleBackColor = true; ButtonAdvanceDate.Click += ButtonAdvanceDate_Click; // // CheckEnableFilters // CheckEnableFilters.AutoSize = true; CheckEnableFilters.Checked = true; CheckEnableFilters.CheckState = CheckState.Checked; CheckEnableFilters.Location = new Point(117, 276); CheckEnableFilters.Name = "CheckEnableFilters"; CheckEnableFilters.Size = new Size(95, 19); CheckEnableFilters.TabIndex = 119; CheckEnableFilters.Text = "Enable Filters"; toolTip.SetToolTip(CheckEnableFilters, "Enable Filters enables or disables all filters\r\nentirely.\r\n\r\nEnabled - Advance Date will continue until\r\na match occurs from a filter.\r\n\r\nDisabled - Advance Date will only advance\r\none (1) day."); CheckEnableFilters.UseVisualStyleBackColor = true; CheckEnableFilters.Click += EnableFilters_Click; // // ButtonDisconnect // ButtonDisconnect.Enabled = false; ButtonDisconnect.Location = new Point(117, 35); ButtonDisconnect.Margin = new Padding(4, 3, 4, 3); ButtonDisconnect.Name = "ButtonDisconnect"; ButtonDisconnect.Size = new Size(97, 27); ButtonDisconnect.TabIndex = 11; ButtonDisconnect.Text = "Disconnect"; ButtonDisconnect.UseVisualStyleBackColor = true; ButtonDisconnect.Click += Disconnect_Click; // // ButtonConnect // ButtonConnect.Location = new Point(13, 35); ButtonConnect.Margin = new Padding(4, 3, 4, 3); ButtonConnect.Name = "ButtonConnect"; ButtonConnect.Size = new Size(97, 27); ButtonConnect.TabIndex = 10; ButtonConnect.Text = "Connect"; ButtonConnect.UseVisualStyleBackColor = true; ButtonConnect.Click += ButtonConnect_Click; // // InputSwitchIP // InputSwitchIP.Location = new Point(84, 6); InputSwitchIP.Margin = new Padding(4, 3, 4, 3); InputSwitchIP.Name = "InputSwitchIP"; InputSwitchIP.Size = new Size(129, 23); InputSwitchIP.TabIndex = 8; InputSwitchIP.Text = "www.www.www.www"; InputSwitchIP.TextChanged += InputSwitchIP_Changed; // // LabelSwitchIP // LabelSwitchIP.AutoSize = true; LabelSwitchIP.Location = new Point(13, 9); LabelSwitchIP.Margin = new Padding(4, 0, 4, 0); LabelSwitchIP.Name = "LabelSwitchIP"; LabelSwitchIP.Size = new Size(58, 15); LabelSwitchIP.TabIndex = 6; LabelSwitchIP.Text = "Switch IP:"; // // LabelLoadedRaids // LabelLoadedRaids.AutoSize = true; LabelLoadedRaids.Font = new Font("Segoe UI", 9F, FontStyle.Bold); LabelLoadedRaids.Location = new Point(12, 103); LabelLoadedRaids.Name = "LabelLoadedRaids"; LabelLoadedRaids.Size = new Size(67, 15); LabelLoadedRaids.TabIndex = 12; LabelLoadedRaids.Text = "Matches: 0"; // // TeraType // TeraType.Font = new Font("Consolas", 9F); TeraType.Location = new Point(296, 152); TeraType.Margin = new Padding(4, 3, 4, 3); TeraType.Name = "TeraType"; TeraType.ReadOnly = true; TeraType.Size = new Size(95, 22); TeraType.TabIndex = 49; // // LabelTeraType // LabelTeraType.AutoSize = true; LabelTeraType.Location = new Point(232, 156); LabelTeraType.Name = "LabelTeraType"; LabelTeraType.Size = new Size(58, 15); LabelTeraType.TabIndex = 48; LabelTeraType.Text = "Tera Type:"; LabelTeraType.TextAlign = ContentAlignment.MiddleRight; // // PID // PID.Font = new Font("Consolas", 9F); PID.Location = new Point(296, 68); PID.Margin = new Padding(4, 3, 4, 3); PID.Name = "PID"; PID.ReadOnly = true; PID.Size = new Size(95, 22); PID.TabIndex = 47; // // LabelPID // LabelPID.AutoSize = true; LabelPID.Location = new Point(261, 70); LabelPID.Name = "LabelPID"; LabelPID.Size = new Size(28, 15); LabelPID.TabIndex = 46; LabelPID.Text = "PID:"; LabelPID.TextAlign = ContentAlignment.MiddleRight; // // EC // EC.Font = new Font("Consolas", 9F); EC.Location = new Point(296, 40); EC.Margin = new Padding(4, 3, 4, 3); EC.Name = "EC"; EC.ReadOnly = true; EC.Size = new Size(95, 22); EC.TabIndex = 45; // // LabelEC // LabelEC.AutoSize = true; LabelEC.Location = new Point(265, 42); LabelEC.Name = "LabelEC"; LabelEC.Size = new Size(24, 15); LabelEC.TabIndex = 44; LabelEC.Text = "EC:"; LabelEC.TextAlign = ContentAlignment.MiddleRight; // // Seed // Seed.Font = new Font("Consolas", 9F); Seed.Location = new Point(296, 12); Seed.Margin = new Padding(4, 3, 4, 3); Seed.Name = "Seed"; Seed.ReadOnly = true; Seed.Size = new Size(95, 22); Seed.TabIndex = 43; Seed.Click += Seed_Click; // // LabelSeed // LabelSeed.AutoSize = true; LabelSeed.Location = new Point(254, 14); LabelSeed.Name = "LabelSeed"; LabelSeed.Size = new Size(35, 15); LabelSeed.TabIndex = 42; LabelSeed.Text = "Seed:"; LabelSeed.TextAlign = ContentAlignment.MiddleRight; // // ButtonNext // ButtonNext.Enabled = false; ButtonNext.Location = new Point(168, 67); ButtonNext.Name = "ButtonNext"; ButtonNext.Size = new Size(45, 25); ButtonNext.TabIndex = 56; ButtonNext.Text = ">>"; ButtonNext.UseVisualStyleBackColor = true; ButtonNext.Click += ButtonNext_Click; // // ButtonPrevious // ButtonPrevious.Enabled = false; ButtonPrevious.Location = new Point(13, 68); ButtonPrevious.Name = "ButtonPrevious"; ButtonPrevious.Size = new Size(45, 25); ButtonPrevious.TabIndex = 55; ButtonPrevious.Text = "<<"; ButtonPrevious.UseVisualStyleBackColor = true; ButtonPrevious.Click += ButtonPrevious_Click; // // Area // Area.Font = new Font("Consolas", 9F); Area.Location = new Point(296, 236); Area.Margin = new Padding(4, 3, 4, 3); Area.Name = "Area"; Area.ReadOnly = true; Area.Size = new Size(271, 22); Area.TabIndex = 61; Area.Click += DisplayMap; // // LabelUNK_2 // LabelUNK_2.AutoSize = true; LabelUNK_2.Location = new Point(256, 240); LabelUNK_2.Name = "LabelUNK_2"; LabelUNK_2.Size = new Size(34, 15); LabelUNK_2.TabIndex = 60; LabelUNK_2.Text = "Area:"; LabelUNK_2.TextAlign = ContentAlignment.MiddleRight; // // IVs // IVs.Font = new Font("Consolas", 9F); IVs.Location = new Point(296, 208); IVs.Margin = new Padding(4, 3, 4, 3); IVs.Name = "IVs"; IVs.ReadOnly = true; IVs.Size = new Size(271, 22); IVs.TabIndex = 69; // // LabelIVs // LabelIVs.AutoSize = true; LabelIVs.Location = new Point(265, 212); LabelIVs.Name = "LabelIVs"; LabelIVs.Size = new Size(25, 15); LabelIVs.TabIndex = 68; LabelIVs.Text = "IVs:"; LabelIVs.TextAlign = ContentAlignment.MiddleRight; // // ButtonReadRaids // ButtonReadRaids.Enabled = false; ButtonReadRaids.Location = new Point(6, 22); ButtonReadRaids.Margin = new Padding(4, 3, 4, 3); ButtonReadRaids.Name = "ButtonReadRaids"; ButtonReadRaids.Size = new Size(90, 25); ButtonReadRaids.TabIndex = 80; ButtonReadRaids.Text = "Read Raids"; ButtonReadRaids.UseVisualStyleBackColor = true; ButtonReadRaids.Click += ButtonReadRaids_Click; // // labelEvent // labelEvent.AutoSize = true; labelEvent.Font = new Font("Segoe UI", 9F, FontStyle.Bold | FontStyle.Italic); labelEvent.ForeColor = SystemColors.ControlText; labelEvent.Location = new Point(496, 64); labelEvent.Name = "labelEvent"; labelEvent.Size = new Size(73, 15); labelEvent.TabIndex = 84; labelEvent.Text = "~~Event~~"; labelEvent.TextAlign = ContentAlignment.MiddleLeft; labelEvent.Visible = false; // // Difficulty // Difficulty.Font = new Font("Consolas", 9F); Difficulty.Location = new Point(470, 152); Difficulty.Margin = new Padding(4, 3, 4, 3); Difficulty.Name = "Difficulty"; Difficulty.ReadOnly = true; Difficulty.Size = new Size(97, 22); Difficulty.TabIndex = 86; // // LabelDifficulty // LabelDifficulty.AutoSize = true; LabelDifficulty.Location = new Point(405, 156); LabelDifficulty.Name = "LabelDifficulty"; LabelDifficulty.Size = new Size(58, 15); LabelDifficulty.TabIndex = 85; LabelDifficulty.Text = "Difficulty:"; LabelDifficulty.TextAlign = ContentAlignment.MiddleRight; // // ButtonViewRAM // ButtonViewRAM.Enabled = false; ButtonViewRAM.Location = new Point(104, 22); ButtonViewRAM.Name = "ButtonViewRAM"; ButtonViewRAM.Size = new Size(90, 25); ButtonViewRAM.TabIndex = 89; ButtonViewRAM.Text = "Dump Raid"; ButtonViewRAM.UseVisualStyleBackColor = true; ButtonViewRAM.Click += ViewRAM_Click; // // Species // Species.Font = new Font("Consolas", 9F); Species.Location = new Point(296, 96); Species.Margin = new Padding(4, 3, 4, 3); Species.Name = "Species"; Species.ReadOnly = true; Species.Size = new Size(271, 22); Species.TabIndex = 93; // // LabelSpecies // LabelSpecies.AutoSize = true; LabelSpecies.Location = new Point(241, 100); LabelSpecies.Name = "LabelSpecies"; LabelSpecies.Size = new Size(49, 15); LabelSpecies.TabIndex = 92; LabelSpecies.Text = "Species:"; LabelSpecies.TextAlign = ContentAlignment.MiddleRight; // // LabelMoves // LabelMoves.AutoSize = true; LabelMoves.Location = new Point(244, 280); LabelMoves.Name = "LabelMoves"; LabelMoves.Size = new Size(45, 15); LabelMoves.TabIndex = 94; LabelMoves.Text = "Moves:"; LabelMoves.TextAlign = ContentAlignment.MiddleRight; // // Move1 // Move1.Font = new Font("Consolas", 9F); Move1.Location = new Point(296, 264); Move1.Margin = new Padding(4, 3, 4, 3); Move1.Name = "Move1"; Move1.ReadOnly = true; Move1.Size = new Size(133, 22); Move1.TabIndex = 95; Move1.Click += Move_Clicked; // // Move2 // Move2.Font = new Font("Consolas", 9F); Move2.Location = new Point(434, 264); Move2.Margin = new Padding(4, 3, 4, 3); Move2.Name = "Move2"; Move2.ReadOnly = true; Move2.Size = new Size(133, 22); Move2.TabIndex = 96; Move2.Click += Move_Clicked; // // Move4 // Move4.Font = new Font("Consolas", 9F); Move4.Location = new Point(434, 292); Move4.Margin = new Padding(4, 3, 4, 3); Move4.Name = "Move4"; Move4.ReadOnly = true; Move4.Size = new Size(133, 22); Move4.TabIndex = 98; Move4.Click += Move_Clicked; // // Move3 // Move3.Font = new Font("Consolas", 9F); Move3.Location = new Point(296, 292); Move3.Margin = new Padding(4, 3, 4, 3); Move3.Name = "Move3"; Move3.ReadOnly = true; Move3.Size = new Size(133, 22); Move3.TabIndex = 97; Move3.Click += Move_Clicked; // // Nature // Nature.Font = new Font("Consolas", 9F); Nature.Location = new Point(470, 180); Nature.Margin = new Padding(4, 3, 4, 3); Nature.Name = "Nature"; Nature.ReadOnly = true; Nature.Size = new Size(97, 22); Nature.TabIndex = 106; // // LabelNature // LabelNature.AutoSize = true; LabelNature.Location = new Point(417, 184); LabelNature.Name = "LabelNature"; LabelNature.Size = new Size(46, 15); LabelNature.TabIndex = 105; LabelNature.Text = "Nature:"; LabelNature.TextAlign = ContentAlignment.MiddleRight; // // Gender // Gender.Font = new Font("Consolas", 9F); Gender.Location = new Point(296, 180); Gender.Margin = new Padding(4, 3, 4, 3); Gender.Name = "Gender"; Gender.ReadOnly = true; Gender.Size = new Size(95, 22); Gender.TabIndex = 104; // // LabelGender // LabelGender.AutoSize = true; LabelGender.Location = new Point(241, 184); LabelGender.Name = "LabelGender"; LabelGender.Size = new Size(48, 15); LabelGender.TabIndex = 103; LabelGender.Text = "Gender:"; LabelGender.TextAlign = ContentAlignment.MiddleRight; // // StopFilter // StopFilter.Location = new Point(12, 273); StopFilter.Name = "StopFilter"; StopFilter.Size = new Size(97, 23); StopFilter.TabIndex = 107; StopFilter.Text = "Edit Filters"; StopFilter.UseVisualStyleBackColor = true; StopFilter.Click += StopFilter_Click; // // Sprite // Sprite.Location = new Point(498, 7); Sprite.Name = "Sprite"; Sprite.Size = new Size(68, 56); Sprite.SizeMode = PictureBoxSizeMode.CenterImage; Sprite.TabIndex = 108; Sprite.TabStop = false; // // Ability // Ability.Font = new Font("Consolas", 9F); Ability.Location = new Point(296, 124); Ability.Margin = new Padding(4, 3, 4, 3); Ability.Name = "Ability"; Ability.ReadOnly = true; Ability.Size = new Size(271, 22); Ability.TabIndex = 110; // // LabelAbility // LabelAbility.AutoSize = true; LabelAbility.Location = new Point(245, 127); LabelAbility.Name = "LabelAbility"; LabelAbility.Size = new Size(44, 15); LabelAbility.TabIndex = 109; LabelAbility.Text = "Ability:"; LabelAbility.TextAlign = ContentAlignment.MiddleRight; // // GemIcon // GemIcon.Location = new Point(434, 7); GemIcon.Name = "GemIcon"; GemIcon.Size = new Size(56, 56); GemIcon.SizeMode = PictureBoxSizeMode.Zoom; GemIcon.TabIndex = 111; GemIcon.TabStop = false; // // ButtonDownloadEvents // ButtonDownloadEvents.Enabled = false; ButtonDownloadEvents.Location = new Point(104, 50); ButtonDownloadEvents.Name = "ButtonDownloadEvents"; ButtonDownloadEvents.Size = new Size(90, 25); ButtonDownloadEvents.TabIndex = 112; ButtonDownloadEvents.Text = "Pull Events"; ButtonDownloadEvents.UseVisualStyleBackColor = true; ButtonDownloadEvents.Click += DownloadEvents_Click; // // ConfigSettings // ConfigSettings.Location = new Point(12, 302); ConfigSettings.Name = "ConfigSettings"; ConfigSettings.Size = new Size(97, 23); ConfigSettings.TabIndex = 115; ConfigSettings.Text = "Open Settings"; ConfigSettings.UseVisualStyleBackColor = true; ConfigSettings.Click += ConfigSettings_Click; // // Rewards // Rewards.Location = new Point(104, 78); Rewards.Name = "Rewards"; Rewards.Size = new Size(90, 25); Rewards.TabIndex = 116; Rewards.Text = "Rewards"; Rewards.UseVisualStyleBackColor = true; Rewards.Click += Rewards_Click; // // LabelSandwichBonus // LabelSandwichBonus.AutoSize = true; LabelSandwichBonus.Location = new Point(13, 248); LabelSandwichBonus.Name = "LabelSandwichBonus"; LabelSandwichBonus.Size = new Size(120, 15); LabelSandwichBonus.TabIndex = 118; LabelSandwichBonus.Text = "Raid Sandwich Boost:"; // // RaidBoost // RaidBoost.FormattingEnabled = true; RaidBoost.Items.AddRange(new object[] { "0", "1", "2", "3" }); RaidBoost.Location = new Point(165, 245); RaidBoost.Name = "RaidBoost"; RaidBoost.Size = new Size(48, 23); RaidBoost.TabIndex = 117; RaidBoost.Text = "w"; RaidBoost.SelectedIndexChanged += RaidBoost_SelectedIndexChanged; // // ComboIndex // ComboIndex.BackColor = SystemColors.Window; ComboIndex.DropDownStyle = ComboBoxStyle.DropDownList; ComboIndex.Enabled = false; ComboIndex.FormattingEnabled = true; ComboIndex.Location = new Point(64, 68); ComboIndex.Name = "ComboIndex"; ComboIndex.Size = new Size(98, 23); ComboIndex.TabIndex = 120; ComboIndex.SelectedIndexChanged += ComboIndex_SelectedIndexChanged; // // SendScreenshot // SendScreenshot.Location = new Point(6, 50); SendScreenshot.Name = "SendScreenshot"; SendScreenshot.Size = new Size(90, 25); SendScreenshot.TabIndex = 121; SendScreenshot.Text = "Screenshot"; SendScreenshot.UseVisualStyleBackColor = true; SendScreenshot.Click += SendScreenshot_Click; // // SearchTimer // SearchTimer.Enabled = true; SearchTimer.Interval = 1D; SearchTimer.SynchronizingObject = this; SearchTimer.Elapsed += SearchTimer_Elapsed; // // btnOpenMap // btnOpenMap.Location = new Point(6, 78); btnOpenMap.Name = "btnOpenMap"; btnOpenMap.Size = new Size(90, 25); btnOpenMap.TabIndex = 124; btnOpenMap.Text = "Open Map"; btnOpenMap.UseVisualStyleBackColor = true; btnOpenMap.Click += DisplayMap; // // groupBox1 // groupBox1.Controls.Add(ButtonViewRAM); groupBox1.Controls.Add(ButtonDownloadEvents); groupBox1.Controls.Add(btnOpenMap); groupBox1.Controls.Add(SendScreenshot); groupBox1.Controls.Add(Rewards); groupBox1.Controls.Add(ButtonReadRaids); groupBox1.Location = new Point(13, 129); groupBox1.Name = "groupBox1"; groupBox1.Size = new Size(200, 110); groupBox1.TabIndex = 125; groupBox1.TabStop = false; groupBox1.Text = "Raid Controls"; // // statusStrip1 // statusStrip1.Items.AddRange(new ToolStripItem[] { StatusLabel, ToolStripStatusLabel, Label_DayAdvance }); statusStrip1.Location = new Point(0, 335); statusStrip1.Name = "statusStrip1"; statusStrip1.Size = new Size(580, 22); statusStrip1.SizingGrip = false; statusStrip1.TabIndex = 126; statusStrip1.Text = "statusStrip1"; // // StatusLabel // StatusLabel.Name = "StatusLabel"; StatusLabel.Size = new Size(42, 17); StatusLabel.Text = "Status:"; // // ToolStripStatusLabel // ToolStripStatusLabel.Name = "ToolStripStatusLabel"; ToolStripStatusLabel.Size = new Size(89, 17); ToolStripStatusLabel.Text = "Not connected."; // // Label_DayAdvance // Label_DayAdvance.Name = "Label_DayAdvance"; Label_DayAdvance.Size = new Size(136, 17); Label_DayAdvance.Text = "Day Skip Successes: 0 / 0"; Label_DayAdvance.Visible = false; // // USB_Port_label // USB_Port_label.AutoSize = true; USB_Port_label.Location = new Point(13, 9); USB_Port_label.Name = "USB_Port_label"; USB_Port_label.Size = new Size(56, 15); USB_Port_label.TabIndex = 127; USB_Port_label.Text = "USB Port:"; // // USB_Port_TB // USB_Port_TB.Location = new Point(84, 6); USB_Port_TB.Name = "USB_Port_TB"; USB_Port_TB.Size = new Size(129, 23); USB_Port_TB.TabIndex = 128; USB_Port_TB.Text = "w"; USB_Port_TB.TextAlign = HorizontalAlignment.Center; USB_Port_TB.TextChanged += USB_Port_Changed; // // StopAdvance_Button // StopAdvance_Button.Location = new Point(117, 98); StopAdvance_Button.Name = "StopAdvance_Button"; StopAdvance_Button.Size = new Size(96, 27); StopAdvance_Button.TabIndex = 129; StopAdvance_Button.Text = "Stop"; StopAdvance_Button.UseVisualStyleBackColor = true; StopAdvance_Button.Visible = false; StopAdvance_Button.Click += StopAdvanceButton_Click; // // B_DateTools // B_DateTools.Enabled = false; B_DateTools.Location = new Point(117, 302); B_DateTools.Name = "B_DateTools"; B_DateTools.Size = new Size(97, 23); B_DateTools.TabIndex = 130; B_DateTools.Text = "Date Tools"; B_DateTools.UseVisualStyleBackColor = true; B_DateTools.Click += B_DateTools_Click; // // MainWindow // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(580, 357); Controls.Add(B_DateTools); Controls.Add(StopAdvance_Button); Controls.Add(USB_Port_TB); Controls.Add(USB_Port_label); Controls.Add(statusStrip1); Controls.Add(groupBox1); Controls.Add(ComboIndex); Controls.Add(CheckEnableFilters); Controls.Add(LabelSandwichBonus); Controls.Add(LabelLoadedRaids); Controls.Add(RaidBoost); Controls.Add(ConfigSettings); Controls.Add(GemIcon); Controls.Add(Ability); Controls.Add(LabelAbility); Controls.Add(Sprite); Controls.Add(StopFilter); Controls.Add(Nature); Controls.Add(LabelNature); Controls.Add(Gender); Controls.Add(LabelGender); Controls.Add(Move4); Controls.Add(Move3); Controls.Add(Move2); Controls.Add(Move1); Controls.Add(LabelMoves); Controls.Add(Species); Controls.Add(LabelSpecies); Controls.Add(Difficulty); Controls.Add(LabelDifficulty); Controls.Add(labelEvent); Controls.Add(ButtonAdvanceDate); Controls.Add(IVs); Controls.Add(LabelIVs); Controls.Add(Area); Controls.Add(LabelUNK_2); Controls.Add(ButtonNext); Controls.Add(ButtonPrevious); Controls.Add(TeraType); Controls.Add(LabelTeraType); Controls.Add(PID); Controls.Add(LabelPID); Controls.Add(EC); Controls.Add(LabelEC); Controls.Add(Seed); Controls.Add(LabelSeed); Controls.Add(ButtonDisconnect); Controls.Add(ButtonConnect); Controls.Add(InputSwitchIP); Controls.Add(LabelSwitchIP); FormBorderStyle = FormBorderStyle.FixedDialog; Icon = (Icon)resources.GetObject("$this.Icon"); MaximizeBox = false; Name = "MainWindow"; FormClosing += MainWindow_FormClosing; Load += MainWindow_Load; ((System.ComponentModel.ISupportInitialize)Sprite).EndInit(); ((System.ComponentModel.ISupportInitialize)GemIcon).EndInit(); ((System.ComponentModel.ISupportInitialize)SearchTimer).EndInit(); groupBox1.ResumeLayout(false); statusStrip1.ResumeLayout(false); statusStrip1.PerformLayout(); ResumeLayout(false); PerformLayout(); } #endregion private ToolTip toolTip; private Button ButtonDisconnect; private Button ButtonConnect; private TextBox InputSwitchIP; private Label LabelSwitchIP; private Label LabelLoadedRaids; private TextBox TeraType; private Label LabelTeraType; private TextBox PID; private Label LabelPID; private TextBox EC; private Label LabelEC; private TextBox Seed; private Label LabelSeed; private Button ButtonNext; private Button ButtonPrevious; private TextBox Area; private Label LabelUNK_2; private TextBox IVs; private Label LabelIVs; private Button ButtonReadRaids; private Button ButtonAdvanceDate; private Label labelEvent; private TextBox Difficulty; private Label LabelDifficulty; private Button ButtonViewRAM; private TextBox Species; private Label LabelSpecies; private Label LabelMoves; private TextBox Move1; private TextBox Move2; private TextBox Move4; private TextBox Move3; private TextBox Nature; private Label LabelNature; private TextBox Gender; private Label LabelGender; private Button StopFilter; private PictureBox Sprite; private TextBox Ability; private Label LabelAbility; private PictureBox GemIcon; private Button ButtonDownloadEvents; private Button ConfigSettings; private Button Rewards; private Label LabelSandwichBonus; private ComboBox RaidBoost; private CheckBox CheckEnableFilters; private ComboBox ComboIndex; private Button SendScreenshot; private System.Timers.Timer SearchTimer; private Button btnOpenMap; private GroupBox groupBox1; private StatusStrip statusStrip1; private ToolStripStatusLabel StatusLabel; private ToolStripStatusLabel ToolStripStatusLabel; private Label USB_Port_label; private TextBox USB_Port_TB; private Button StopAdvance_Button; private ToolStripStatusLabel Label_DayAdvance; private Button B_DateTools; } } ================================================ FILE: RaidCrawler.WinForms/MainWindow.cs ================================================ using PKHeX.Core; using PKHeX.Drawing; using PKHeX.Drawing.PokeSprite; using RaidCrawler.Core.Connection; using RaidCrawler.Core.Discord; using RaidCrawler.Core.Structures; using RaidCrawler.WinForms.SubForms; using SysBot.Base; using System.Diagnostics; using System.Text.Json; using static RaidCrawler.Core.Structures.Offsets; namespace RaidCrawler.WinForms; public partial class MainWindow : Form { private static CancellationTokenSource Source = new(); private static CancellationTokenSource DateAdvanceSource = new(); private static readonly object _connectLock = new(); private static readonly object _readLock = new(); private readonly ClientConfig Config; private ConnectionWrapperAsync ConnectionWrapper = default!; private readonly SwitchConnectionConfig ConnectionConfig; private readonly RaidContainer RaidContainer; private readonly NotificationHandler Webhook; private List RaidFilters = []; private static readonly Image MapBase = Image.FromStream( new MemoryStream(Utils.GetBinaryResource("paldea.png")) ); private static readonly Image MapKitakami = Image.FromStream( new MemoryStream(Utils.GetBinaryResource("kitakami.png")) ); private static readonly Image MapBlueberry = Image.FromStream( new MemoryStream(Utils.GetBinaryResource("blueberry.png")) ); private static Dictionary? DenLocationsBase; private static Dictionary? DenLocationsKitakami; private static Dictionary? DenLocationsBlueberry; // statistics public int StatDaySkipTries; public int StatDaySkipSuccess; public readonly string formTitle; private ulong RaidBlockOffsetBase; private ulong RaidBlockOffsetKitakami; private ulong RaidBlockOffsetBlueberry; private bool IsReading; private bool HideSeed; private bool ShowExtraMoves; private Color DefaultColor; private FormWindowState _WindowState; private readonly Stopwatch stopwatch = new(); private TeraRaidView? teraRaidView; private bool StopAdvances => !Config.EnableFilters || RaidFilters.Count == 0 || RaidFilters.All(x => !x.Enabled); private readonly Version CurrentVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version!; public MainWindow() { Config = new ClientConfig(); #if DEBUG var date = File.GetLastWriteTime(AppContext.BaseDirectory); var build = $" (dev-{date:yyyyMMdd})"; #else var build = ""; #endif var v = CurrentVersion; var filterPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "filters.json"); if (File.Exists(filterPath)) RaidFilters = JsonSerializer.Deserialize>(File.ReadAllText(filterPath)) ?? []; DenLocationsBase = JsonSerializer.Deserialize>(Utils.GetStringResource("den_locations_base.json") ?? "{}"); DenLocationsKitakami = JsonSerializer.Deserialize>(Utils.GetStringResource("den_locations_kitakami.json") ?? "{}"); DenLocationsBlueberry = JsonSerializer.Deserialize>(Utils.GetStringResource("den_locations_blueberry.json") ?? "{}"); var configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json"); if (File.Exists(configPath)) { var text = File.ReadAllText(configPath); Config = JsonSerializer.Deserialize(text)!; } else { Config = new(); } ConnectionConfig = new SwitchConnectionConfig { Protocol = SwitchProtocol.WiFi, IP = "192.168.0.0", Port = 6000, }; formTitle = $"RaidCrawler v{v.Major}.{v.Minor}.{v.Build}{build} {Config.InstanceName}"; Text = formTitle; // load raids RaidContainer = new(Config.Game); SpriteBuilder.ShowTeraThicknessStripe = 0x4; SpriteBuilder.ShowTeraOpacityStripe = 0xAF; SpriteBuilder.ShowTeraOpacityBackground = 0xFF; SpriteUtil.ChangeMode(SpriteBuilderMode.SpritesArtwork5668); var protocol = Config.Protocol; ConnectionConfig = new() { IP = Config.IP, Port = protocol is SwitchProtocol.WiFi ? 6000 : Config.UsbPort, Protocol = Config.Protocol, }; Webhook = new(Config); InitializeComponent(); btnOpenMap.Enabled = false; Rewards.Enabled = false; SendScreenshot.Enabled = false; CheckEnableFilters.Checked = Config.EnableFilters; if (Config.Protocol is SwitchProtocol.USB) { InputSwitchIP.Visible = false; LabelSwitchIP.Visible = false; USB_Port_TB.Visible = true; USB_Port_label.Visible = true; } else { InputSwitchIP.Visible = true; LabelSwitchIP.Visible = true; USB_Port_TB.Visible = false; USB_Port_label.Visible = false; } } private void UpdateStatus(string status) { ToolStripStatusLabel.Text = status; } private void ButtonEnable(bool enable, params object[] obj) { lock (_readLock) { foreach (object o in obj) { if (o is not Button btn) continue; if (InvokeRequired) Invoke(() => btn.Enabled = enable); else btn.Enabled = enable; } IsReading = !enable; } } private void ShowDialog(object obj) { var window = (Form?)obj; if (window is null) return; window.StartPosition = FormStartPosition.CenterParent; if (InvokeRequired) Invoke(() => window.ShowDialog()); else window.ShowDialog(); } private int GetRaidBoost() { if (InvokeRequired) return Invoke(() => RaidBoost.SelectedIndex); return RaidBoost.SelectedIndex; } public int GetStatDaySkipTries() => StatDaySkipTries; public int GetStatDaySkipSuccess() => StatDaySkipSuccess; private void MainWindow_Load(object sender, EventArgs e) { CenterToScreen(); InputSwitchIP.Text = Config.IP; USB_Port_TB.Text = Config.UsbPort.ToString(); DefaultColor = IVs.BackColor; RaidBoost.SelectedIndex = 0; ToggleStreamerView(); CheckForUpdates(); } private void InputSwitchIP_Changed(object sender, EventArgs e) { TextBox textBox = (TextBox)sender; Config.IP = textBox.Text; ConnectionConfig.IP = textBox.Text; } private void USB_Port_Changed(object sender, EventArgs e) { if (Config.Protocol is SwitchProtocol.WiFi) return; TextBox textBox = (TextBox)sender; if (int.TryParse(textBox.Text, out int port) && port >= 0) { Config.UsbPort = port; ConnectionConfig.Port = port; return; } Task.Run(async () => await this.DisplayMessageBox(Webhook, "Please enter a valid numerical USB port.", Source.Token).ConfigureAwait(false), Source.Token); } private void ButtonConnect_Click(object sender, EventArgs e) { lock (_connectLock) { if (ConnectionWrapper is { Connected: true }) return; ConnectionWrapper = new(ConnectionConfig, UpdateStatus); Connect(Source.Token); } } private void Connect(CancellationToken token) { Task.Run( async () => { ButtonEnable(false, ButtonConnect, SendScreenshot, btnOpenMap, Rewards); try { (bool success, string err) = await ConnectionWrapper .Connect(token) .ConfigureAwait(false); if (!success) { ButtonEnable(true, ButtonConnect); await this .DisplayMessageBox(Webhook, err, token) .ConfigureAwait(false); return; } } catch (Exception ex) { ButtonEnable(true, ButtonConnect); await this .DisplayMessageBox(Webhook, ex.Message, token) .ConfigureAwait(false); return; } UpdateStatus("Detecting game version..."); string id = await ConnectionWrapper.Connection .GetTitleID(token) .ConfigureAwait(false); var game = id switch { ScarletID => "Scarlet", VioletID => "Violet", _ => "", }; if (game is "") { try { (bool success, string err) = await ConnectionWrapper .DisconnectAsync(token) .ConfigureAwait(false); if (!success) { ButtonEnable(true, ButtonConnect); await this .DisplayMessageBox(Webhook, err, token) .ConfigureAwait(false); return; } } catch { // ignored } finally { ButtonEnable(true, ButtonConnect); await this .DisplayMessageBox(Webhook, "Unable to detect Pokémon Scarlet or Pokémon Violet running on your Switch!", token ) .ConfigureAwait(false); } return; } Config.Game = game; RaidContainer.SetGame(Config.Game); UpdateStatus("Reading story progress..."); Config.Progress = await ConnectionWrapper .GetStoryProgress(token) .ConfigureAwait(false); Config.EventProgress = Math.Min(Config.Progress, 3); UpdateStatus("Reading event raid status..."); try { await ReadEventRaids(token).ConfigureAwait(false); } catch (Exception ex) { ButtonEnable(true, ButtonConnect); await this.DisplayMessageBox(Webhook, $"Error occurred while reading event raids: {ex.Message}", token) .ConfigureAwait(false); return; } UpdateStatus("Reading raids..."); try { await ReadRaids(token).ConfigureAwait(false); } catch (Exception ex) { ButtonEnable(true, ButtonConnect); await this.DisplayMessageBox(Webhook, $"Error occurred while reading raids: {ex.Message}", token) .ConfigureAwait(false); return; } ButtonEnable(true, ButtonAdvanceDate, ButtonReadRaids, ButtonDisconnect, ButtonViewRAM, ButtonDownloadEvents, SendScreenshot, btnOpenMap, Rewards, B_DateTools); if (InvokeRequired) { Invoke(() => { ComboIndex.Enabled = true; ComboIndex.SelectedIndex = 0; }); } else { ComboIndex.SelectedIndex = 0; } UpdateStatus("Completed!"); }, token ); } private void Disconnect_Click(object sender, EventArgs e) { lock (_connectLock) { if (ConnectionWrapper is not { Connected: true }) return; Disconnect(Source.Token); } } private void Disconnect(CancellationToken token) { Task.Run( async () => { ButtonEnable(false, ButtonAdvanceDate, ButtonReadRaids, ButtonDisconnect, ButtonViewRAM, ButtonDownloadEvents, SendScreenshot, B_DateTools); try { (bool success, string err) = await ConnectionWrapper .DisconnectAsync(token) .ConfigureAwait(false); if (!success) await this.DisplayMessageBox(Webhook, err, token).ConfigureAwait(false); } catch (Exception ex) { await this .DisplayMessageBox(Webhook, ex.Message, token) .ConfigureAwait(false); } await Source.CancelAsync(); await DateAdvanceSource.CancelAsync(); Source = new(); DateAdvanceSource = new(); RaidBlockOffsetBase = 0; ButtonEnable(true, ButtonConnect); }, token ); } private void ButtonPrevious_Click(object sender, EventArgs e) { var count = RaidContainer.GetRaidCount(); if (count > 0) { var index = (ComboIndex.SelectedIndex + count - 1) % count; // Wrap around if (ModifierKeys == Keys.Shift) { for (int i = 0; i < count; i++) { var chk = (index + count - i) % count; if ( StopAdvances || RaidFilters.Any( z => z.FilterSatisfied( RaidContainer, RaidContainer.Encounters[chk], RaidContainer.Raids[chk], RaidBoost.SelectedIndex ) ) ) { index = chk; break; } } } ComboIndex.SelectedIndex = index; } } private void ButtonNext_Click(object sender, EventArgs e) { var count = RaidContainer.GetRaidCount(); if (count > 0) { var index = (ComboIndex.SelectedIndex + count + 1) % count; // Wrap around if (ModifierKeys == Keys.Shift) { for (int i = 0; i < count; i++) { var chk = (index + count + i) % count; if (StopAdvances || RaidFilters.Any(z => z.FilterSatisfied(RaidContainer, RaidContainer.Encounters[chk], RaidContainer.Raids[chk], RaidBoost.SelectedIndex))) { index = chk; break; } } } ComboIndex.SelectedIndex = index; } } private void ButtonAdvanceDate_Click(object sender, EventArgs e) { if (ConnectionWrapper is not { Connected: true }) return; ButtonAdvanceDate.Visible = false; StopAdvance_Button.Visible = true; Task.Run(async () => await AdvanceDateClick(DateAdvanceSource.Token).ConfigureAwait(false), Source.Token); } private async Task AdvanceDateClick(CancellationToken token) { try { ButtonEnable(false, ButtonViewRAM, ButtonAdvanceDate, ButtonDisconnect, ButtonDownloadEvents, SendScreenshot, ButtonReadRaids); Invoke(() => Label_DayAdvance.Visible = true); SearchTimer.Start(); stopwatch.Start(); _WindowState = WindowState; var advanceTextInit = $"Day Skip Successes {GetStatDaySkipSuccess()} / {GetStatDaySkipTries()}"; Invoke(() => Label_DayAdvance.Text = advanceTextInit); if (teraRaidView is not null) Invoke(() => teraRaidView.DaySkips.Text = advanceTextInit); var stop = false; var raids = RaidContainer.Raids; int skips = 0; while (!stop) { if (skips >= Config.SystemReset) { // When raids are generated, the game determines raids for both the current and next day. // In order to avoid rescanning the same raids on a reset, save the game before reset. await ConnectionWrapper.SaveGame(Config, token).ConfigureAwait(false); await ConnectionWrapper.CloseGame(token).ConfigureAwait(false); await ConnectionWrapper.StartGame(Config, token).ConfigureAwait(false); RaidBlockOffsetBase = 0; RaidBlockOffsetKitakami = 0; RaidBlockOffsetBlueberry = 0; skips = 0; // Read the initial raids upon reopening the game to correctly detect if the next advance fails await ReadRaids(token).ConfigureAwait(false); raids = RaidContainer.Raids; } var previousSeeds = raids.Select(z => z.Seed).ToList(); UpdateStatus("Changing date..."); bool streamer = Config.StreamerView && teraRaidView is not null; Action? action = streamer ? teraRaidView!.UpdateProgressBar : null; await ConnectionWrapper .AdvanceDate(Config, skips, token, action) .ConfigureAwait(false); await ReadRaids(token).ConfigureAwait(false); raids = RaidContainer.Raids; Invoke(DisplayRaid); if (streamer) Invoke(DisplayPrettyRaid); stop = StopAdvanceDate(previousSeeds); skips++; var advanceText = $"Day Skip Successes {GetStatDaySkipSuccess()} / {GetStatDaySkipTries()}"; Invoke(() => Label_DayAdvance.Text = advanceText); if (teraRaidView is not null) Invoke(() => teraRaidView.DaySkips.Text = advanceText); } stopwatch.Stop(); SearchTimer.Stop(); var timeSpan = stopwatch.Elapsed; var time = $"{timeSpan.Days:00}:{timeSpan.Hours:00}:{timeSpan.Minutes:00}:{timeSpan.Seconds:00}"; if (Config.PlaySound) System.Media.SystemSounds.Asterisk.Play(); if (Config.FocusWindow) { Invoke(() => { WindowState = _WindowState; Activate(); }); } if (Config.EnableFilters) { var encounters = RaidContainer.Encounters; var rewards = RaidContainer.Rewards; var boost = Invoke(() => RaidBoost.SelectedIndex); var satisfiedFilters = new List<(RaidFilter, ITeraRaid, Raid, IReadOnlyList<(int, int, int)>)>(); for (int i = 0; i < raids.Count; i++) { foreach (var filter in RaidFilters) { if (filter is null) continue; if (filter.FilterSatisfied(RaidContainer, encounters[i], raids[i], boost)) { satisfiedFilters.Add((filter, encounters[i], raids[i], rewards[i])); if (InvokeRequired) Invoke(() => ComboIndex.SelectedIndex = i); else ComboIndex.SelectedIndex = i; } } } if (Config.EnableNotification) { foreach (var satisfied in satisfiedFilters) { var teraType = satisfied.Item3.GetTeraType(satisfied.Item2); var color = TypeColor.GetTypeSpriteColor((byte)teraType); var hexColor = $"{color.R:X2}{color.G:X2}{color.B:X2}"; var blank = new PK9 { Species = satisfied.Item2.Species, Form = satisfied.Item2.Form, }; var spriteName = GetSpriteNameForUrl( blank, satisfied.Item3.CheckIsShiny(satisfied.Item2) ); await Webhook .SendNotification(satisfied.Item2, satisfied.Item3, satisfied.Item1, time, satisfied.Item4, hexColor, spriteName, Source.Token) .ConfigureAwait(false); } } // Save game on match. if (Config.SaveOnMatch && satisfiedFilters.Count > 0) await ConnectionWrapper.SaveGame(Config, token).ConfigureAwait(false); if (Config.EnableAlertWindow) await this.DisplayMessageBox(Webhook, $"{Config.AlertWindowMessage}\n\nTime Spent: {time}", token, "Result found!").ConfigureAwait(false); Invoke(() => Text = $"{formTitle} [Match Found in {time}]"); } } catch (Exception ex) { UpdateStatus("Date advance stopped."); SearchTimer.Stop(); if (ex is not TaskCanceledException) await this.DisplayMessageBox(Webhook, ex.Message, token, "Date Advance Error").ConfigureAwait(false); } if (InvokeRequired) { Invoke(() => { ButtonAdvanceDate.Visible = true; StopAdvance_Button.Visible = false; }); } else { ButtonAdvanceDate.Visible = true; StopAdvance_Button.Visible = false; } var buttons = new[] { ButtonViewRAM, ButtonAdvanceDate, ButtonDisconnect, ButtonDownloadEvents, SendScreenshot, ButtonReadRaids, }; ButtonEnable(true, buttons); DateAdvanceSource = new(); } private void StopAdvanceButton_Click(object sender, EventArgs e) { StopAdvance_Button.Visible = false; ButtonAdvanceDate.Visible = true; DateAdvanceSource.Cancel(); DateAdvanceSource = new(); teraRaidView?.ResetProgressBar(); stopwatch.Stop(); SearchTimer.Stop(); } private void ButtonReadRaids_Click(object sender, EventArgs e) { Task.Run(async () => await ReadRaidsAsync(Source.Token).ConfigureAwait(false), Source.Token); } private async Task ReadRaidsAsync(CancellationToken token) { if (IsReading) { await this .DisplayMessageBox(Webhook, "Please wait for the current RAM read to finish.", token ) .ConfigureAwait(false); return; } ButtonEnable(false, ButtonViewRAM, ButtonAdvanceDate, ButtonDisconnect, ButtonDownloadEvents, SendScreenshot, ButtonReadRaids); try { await ReadRaids(token).ConfigureAwait(false); } catch (Exception ex) { await this .DisplayMessageBox(Webhook, $"Error occurred while reading raids: {ex.Message}", token ) .ConfigureAwait(false); } ButtonEnable(true, ButtonViewRAM, ButtonAdvanceDate, ButtonDisconnect, ButtonDownloadEvents, SendScreenshot, ButtonReadRaids); } private void ViewRAM_Click(object sender, EventArgs e) { if (IsReading) { Task.Run(async () => await this.DisplayMessageBox(Webhook, "Please wait for the current RAM read to finish.", Source.Token).ConfigureAwait(false), Source.Token); return; } ButtonEnable(false, ButtonViewRAM); RaidBlockViewer window = default!; if (ConnectionWrapper is { Connected: true } && ModifierKeys == Keys.Shift) { try { var data = ConnectionWrapper.Connection .ReadBytesAbsoluteAsync( RaidBlockOffsetBase, (int)RaidBlock.SIZE_BASE, Source.Token ) .Result; window = new(data, RaidBlockOffsetBase); } catch (Exception ex) { ButtonEnable(true, ButtonViewRAM); Task.Run( async () => await this .DisplayMessageBox(Webhook, ex.Message, Source.Token) .ConfigureAwait(false), Source.Token ); return; } } else if (RaidContainer.Raids.Count > ComboIndex.SelectedIndex) { var data = RaidContainer.Raids[ComboIndex.SelectedIndex].GetData(); window = new(data, RaidBlockOffsetBase); } ShowDialog(window); ButtonEnable(true, ButtonViewRAM); } private void StopFilter_Click(object sender, EventArgs e) { var form = new FilterSettings(ref RaidFilters); ShowDialog(form); } private void DownloadEvents_Click(object sender, EventArgs e) { if (ConnectionWrapper is not { Connected: true }) return; if (IsReading) { Task.Run(async () => await this.DisplayMessageBox(Webhook, "Please wait for the current RAM read to finish.", Source.Token).ConfigureAwait(false), Source.Token); return; } Task.Run(async () => await DownloadEventsAsync(Source.Token).ConfigureAwait(false), Source.Token); } private async Task DownloadEventsAsync(CancellationToken token) { ButtonEnable(false, ButtonViewRAM, ButtonAdvanceDate, ButtonDisconnect, ButtonDownloadEvents, SendScreenshot, ButtonReadRaids); UpdateStatus("Reading event raid status..."); try { await ReadEventRaids(token, true).ConfigureAwait(false); } catch (Exception ex) { await this .DisplayMessageBox(Webhook, $"Error occurred while reading event raids: {ex.Message}", token ) .ConfigureAwait(false); } ButtonEnable(true, ButtonViewRAM, ButtonAdvanceDate, ButtonDisconnect, ButtonDownloadEvents, SendScreenshot, ButtonReadRaids); UpdateStatus("Completed!"); } private void Seed_Click(object sender, EventArgs e) { if (ModifierKeys == Keys.Shift && RaidContainer.Raids.Count > ComboIndex.SelectedIndex) { var raid = RaidContainer.Raids[ComboIndex.SelectedIndex]; Seed.Text = HideSeed ? $"{raid.Seed:X8}" : "Hidden"; EC.Text = HideSeed ? $"{raid.EC:X8}" : "Hidden"; PID.Text = (HideSeed ? $"{raid.PID:X8}" : "Hidden") + $"{(raid.IsShiny ? " (☆)" : string.Empty)}"; HideSeed = !HideSeed; ActiveControl = null; } } private void ConfigSettings_Click(object sender, EventArgs e) { var form = new ConfigWindow(Config); ShowDialog(form); } private void EnableFilters_Click(object sender, EventArgs e) { Config.EnableFilters = CheckEnableFilters.Checked; } private readonly JsonSerializerOptions options = new() { WriteIndented = true }; private void MainWindow_FormClosing(object sender, FormClosingEventArgs e) { var configpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json"); string output = JsonSerializer.Serialize(Config, options); using StreamWriter sw = new(configpath); sw.Write(output); if (ConnectionWrapper is { Connected: true }) { try { _ = ConnectionWrapper.DisconnectAsync(Source.Token).Result; } catch { // ignored } } Source.Cancel(); DateAdvanceSource.Cancel(); Source = new(); DateAdvanceSource = new(); } private async Task ReadEventRaids(CancellationToken token, bool force = false) { var priorityFile = Path.Combine( Directory.GetCurrentDirectory(), "cache", "raid_priority_array" ); if (!force && File.Exists(priorityFile)) { var (_, version) = FlatbufferDumper.DumpDeliveryPriorities( await File.ReadAllBytesAsync(priorityFile, token) ); var block = await ConnectionWrapper .ReadBlockDefault( BCATRaidPriorityLocation, "raid_priority_array.tmp", true, token ) .ConfigureAwait(false); var (_, v2) = FlatbufferDumper.DumpDeliveryPriorities(block); if (version != v2) force = true; var tempFile = Path.Combine( Directory.GetCurrentDirectory(), "cache", "raid_priority_array.tmp" ); if (File.Exists(tempFile)) File.Delete(tempFile); if (v2 == 0) // raid reset return; } var deliveryRaidPriorityFlatbuffer = await ConnectionWrapper .ReadBlockDefault(BCATRaidPriorityLocation, "raid_priority_array", force, token) .ConfigureAwait(false); var (groupID, priority) = FlatbufferDumper.DumpDeliveryPriorities(deliveryRaidPriorityFlatbuffer); if (priority == 0) return; var deliveryRaidFlatbuffer = await ConnectionWrapper .ReadBlockDefault(BCATRaidBinaryLocation, "raid_enemy_array", force, token) .ConfigureAwait(false); var deliveryFixedRewardFlatbuffer = await ConnectionWrapper .ReadBlockDefault( BCATRaidFixedRewardLocation, "fixed_reward_item_array", force, token ) .ConfigureAwait(false); var deliveryLotteryRewardFlatbuffer = await ConnectionWrapper .ReadBlockDefault( BCATRaidLotteryRewardLocation, "lottery_reward_item_array", force, token ) .ConfigureAwait(false); RaidContainer.DistTeraRaids = TeraDistribution.GetAllEncounters(deliveryRaidFlatbuffer); RaidContainer.MightTeraRaids = TeraMight.GetAllEncounters(deliveryRaidFlatbuffer); RaidContainer.DeliveryRaidPriority = groupID; RaidContainer.DeliveryRaidFixedRewards = FlatbufferDumper.DumpFixedRewards( deliveryFixedRewardFlatbuffer ); RaidContainer.DeliveryRaidLotteryRewards = FlatbufferDumper.DumpLotteryRewards( deliveryLotteryRewardFlatbuffer ); } private void DisplayRaid() { int index = ComboIndex.SelectedIndex; var raids = RaidContainer.Raids; if (raids.Count > index) { Raid raid = raids[index]; var encounter = RaidContainer.Encounters[index]; Seed.Text = !HideSeed ? $"{raid.Seed:X8}" : "Hidden"; EC.Text = !HideSeed ? $"{raid.EC:X8}" : "Hidden"; PID.Text = GetPIDString(raid, encounter); Area.Text = $"{Areas.GetArea((int)(raid.Area - 1), raid.MapParent)} - Den {raid.Den}"; labelEvent.Visible = raid.IsEvent; var teraType = raid.GetTeraType(encounter); TeraType.Text = RaidContainer.Strings.types[teraType]; int starCount = encounter switch { TeraDistribution => encounter.Stars, TeraMight => encounter.Stars, _ => raid.GetStarCount(raid.Difficulty, Config.Progress, raid.IsBlack), }; Difficulty.Text = string.Concat(Enumerable.Repeat("☆", starCount)); var param = encounter.GetParam(); var blank = new PK9 { Species = encounter.Species, Form = encounter.Form }; raid.GenerateDataPK9(blank, param, encounter.Shiny, raid.Seed); var img = blank.Sprite(); img = (Bitmap)ApplyTeraColor((byte)teraType, img, SpriteBackgroundType.BottomStripe); var form = ShowdownParsing.GetStringFromForm( encounter.Form, RaidContainer.Strings, encounter.Species, EntityContext.Gen9 ); if (form.Length > 0 && form[0] != '-') form = form.Insert(0, "-"); Species.Text = $"{RaidContainer.Strings.Species[encounter.Species]}{form}"; Sprite.Image = img; GemIcon.Image = GetDisplayGemImage(teraType, raid); Gender.Text = $"{(Gender)blank.Gender}"; var nature = blank.Nature; Nature.Text = $"{RaidContainer.Strings.Natures[(int)nature]}"; Ability.Text = $"{RaidContainer.Strings.Ability[blank.Ability]}"; var extraMoves = new ushort[] { 0, 0, 0, 0 }; for (int i = 0; i < encounter.ExtraMoves.Length; i++) { if (i < extraMoves.Length) extraMoves[i] = encounter.ExtraMoves[i]; } Move1.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[0]] : RaidContainer.Strings.Move[encounter.Move1]; Move2.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[1]] : RaidContainer.Strings.Move[encounter.Move2]; Move3.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[2]] : RaidContainer.Strings.Move[encounter.Move3]; Move4.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[3]] : RaidContainer.Strings.Move[encounter.Move4]; Span _ivs = stackalloc int[6]; blank.GetIVs(_ivs); IVs.Text = IVsString(Utils.ToSpeedLast(_ivs)); toolTip.SetToolTip(IVs, IVsString(Utils.ToSpeedLast(_ivs), true)); PID.BackColor = raid.CheckIsShiny(encounter) ? Color.Gold : DefaultColor; IVs.BackColor = IVs.Text is "31/31/31/31/31/31" ? Color.YellowGreen : DefaultColor; return; } var msg = $"Unable to display raid at index {index}. Ensure there are no cheats running or anything else that might shift RAM (Edizon, overlays, etc.), then reboot your console and try again."; Task.Run(async () => await this.DisplayMessageBox(Webhook, msg, Source.Token).ConfigureAwait(false), Source.Token); } private static Image? GetDisplayGemImage(int teratype, Raid raid) { var shouldDisplayBlack = raid.IsBlack || raid.Flags == 3; var baseImg = shouldDisplayBlack ? (Image?)Properties.Resources.ResourceManager.GetObject($"black_{teratype:D2}") : (Image?)Properties.Resources.ResourceManager.GetObject($"gem_{teratype:D2}"); if (baseImg is null) return null; var backlayer = new Bitmap( baseImg.Width + 10, baseImg.Height + 10, baseImg.PixelFormat ); baseImg = ImageUtil.LayerImage(backlayer, baseImg, 5, 5); var pixels = ImageUtil.GetPixelData((Bitmap)baseImg); for (int i = 0; i < pixels.Length; i += 4) { if (pixels[i + 3] == 0) { pixels[i] = 0; pixels[i + 1] = 0; pixels[i + 2] = 0; } } baseImg = ImageUtil.GetBitmap( pixels, baseImg.Width, baseImg.Height, baseImg.PixelFormat ); if (shouldDisplayBlack) { var color = Color.Indigo; SpriteUtil.GetSpriteGlow(baseImg, color.B, color.G, color.R, out var glow); baseImg = ImageUtil.LayerImage( ImageUtil.GetBitmap(glow, baseImg.Width, baseImg.Height, baseImg.PixelFormat), baseImg, 0, 0 ); } else if (raid.IsEvent) { var color = Color.DarkTurquoise; SpriteUtil.GetSpriteGlow(baseImg, color.B, color.G, color.R, out var glow); baseImg = ImageUtil.LayerImage( ImageUtil.GetBitmap(glow, baseImg.Width, baseImg.Height, baseImg.PixelFormat), baseImg, 0, 0 ); } return baseImg; } private void DisplayPrettyRaid() { if (teraRaidView is null) { Task.Run( async () => await this .DisplayMessageBox(Webhook, "Something went terribly wrong: teraRaidView is not initialized.", Source.Token ) .ConfigureAwait(false), Source.Token ); return; } int index = ComboIndex.SelectedIndex; var raids = RaidContainer.Raids; if (raids.Count > index) { Raid raid = raids[index]; var encounter = RaidContainer.Encounters[index]; teraRaidView.Area.Text = $"{Areas.GetArea((int)(raid.Area - 1), raid.MapParent)} - Den {raid.Den}"; var teraType = raid.GetTeraType(encounter); teraRaidView.TeraType.Image = (Bitmap) Properties.Resources.ResourceManager.GetObject($"gem_text_{teraType}")!; int StarCount = encounter switch { TeraDistribution => encounter.Stars, TeraMight => encounter.Stars, _ => raid.GetStarCount(raid.Difficulty, Config.Progress, raid.IsBlack), }; teraRaidView.Difficulty.Text = string.Concat(Enumerable.Repeat("⭐", StarCount)); var param = encounter.GetParam(); var blank = new PK9 { Species = encounter.Species, Form = encounter.Form }; raid.GenerateDataPK9(blank, param, encounter.Shiny, raid.Seed); var img = blank.Sprite(); teraRaidView.picBoxPokemon.Image = img; var form = Utils.GetFormString(blank.Species, blank.Form, RaidContainer.Strings); teraRaidView.Species.Text = $"{RaidContainer.Strings.Species[encounter.Species]}{form}"; teraRaidView.Gender.Text = $"{(Gender)blank.Gender}"; var nature = blank.Nature; teraRaidView.Nature.Text = $"{RaidContainer.Strings.Natures[(int)nature]}"; teraRaidView.Ability.Text = $"{RaidContainer.Strings.Ability[blank.Ability]}"; teraRaidView.Move1.Text = encounter.Move1 > 0 ? RaidContainer.Strings.Move[encounter.Move1] : "---"; teraRaidView.Move2.Text = encounter.Move2 > 0 ? RaidContainer.Strings.Move[encounter.Move2] : "---"; teraRaidView.Move3.Text = encounter.Move3 > 0 ? RaidContainer.Strings.Move[encounter.Move3] : "---"; teraRaidView.Move4.Text = encounter.Move4 > 0 ? RaidContainer.Strings.Move[encounter.Move4] : "---"; var length = encounter.ExtraMoves.Length < 4 ? 4 : encounter.ExtraMoves.Length; var extraMoves = new ushort[length]; for (int i = 0; i < encounter.ExtraMoves.Length; i++) extraMoves[i] = encounter.ExtraMoves[i]; teraRaidView.Move5.Text = extraMoves[0] > 0 ? RaidContainer.Strings.Move[extraMoves[0]] : "---"; teraRaidView.Move6.Text = extraMoves[1] > 0 ? RaidContainer.Strings.Move[extraMoves[1]] : "---"; teraRaidView.Move7.Text = extraMoves[2] > 0 ? RaidContainer.Strings.Move[extraMoves[2]] : "---"; teraRaidView.Move8.Text = extraMoves[3] > 0 ? RaidContainer.Strings.Move[extraMoves[3]] : "---"; Span _ivs = stackalloc int[6]; blank.GetIVs(_ivs); var ivs = Utils.ToSpeedLast(_ivs); // HP teraRaidView.HP.Text = $"{ivs[0]:D2}"; teraRaidView.HP.BackColor = Color.FromArgb(0, 5, 25); if (teraRaidView.HP.Text is "31") teraRaidView.HP.BackColor = Color.ForestGreen; else if (teraRaidView.HP.Text is "00") teraRaidView.HP.BackColor = Color.DarkRed; // ATK teraRaidView.ATK.Text = $"{ivs[1]:D2}"; teraRaidView.ATK.BackColor = Color.FromArgb(0, 5, 25); if (teraRaidView.ATK.Text is "31") teraRaidView.ATK.BackColor = Color.ForestGreen; else if (teraRaidView.ATK.Text is "00") teraRaidView.ATK.BackColor = Color.DarkRed; // DEF teraRaidView.DEF.Text = $"{ivs[2]:D2}"; teraRaidView.DEF.BackColor = Color.FromArgb(0, 5, 25); if (teraRaidView.DEF.Text is "31") teraRaidView.DEF.BackColor = Color.ForestGreen; else if (teraRaidView.DEF.Text is "00") teraRaidView.DEF.BackColor = Color.DarkRed; // SPA teraRaidView.SPA.Text = $"{ivs[3]:D2}"; teraRaidView.SPA.BackColor = Color.FromArgb(0, 5, 25); if (teraRaidView.SPA.Text is "31") teraRaidView.SPA.BackColor = Color.ForestGreen; else if (teraRaidView.SPA.Text is "00") teraRaidView.SPA.BackColor = Color.DarkRed; // SPD teraRaidView.SPD.Text = $"{ivs[4]:D2}"; teraRaidView.SPD.BackColor = Color.FromArgb(0, 5, 25); if (teraRaidView.SPD.Text is "31") teraRaidView.SPD.BackColor = Color.ForestGreen; else if (teraRaidView.SPD.Text is "00") teraRaidView.SPD.BackColor = Color.DarkRed; // SPEED teraRaidView.SPEED.Text = $"{ivs[5]:D2}"; teraRaidView.SPEED.BackColor = Color.FromArgb(0, 5, 25); if (teraRaidView.SPEED.Text is "31") teraRaidView.SPEED.BackColor = Color.ForestGreen; else if (teraRaidView.SPEED.Text is "00") teraRaidView.SPEED.BackColor = Color.DarkRed; var map = GenerateMap(raid, teraType); if (map is null) Task.Run(async () => await this.DisplayMessageBox(Webhook, "Error generating map.", Source.Token).ConfigureAwait(false), Source.Token); teraRaidView.Map.Image = map; // Rewards var rewards = RaidContainer.Rewards[index]; teraRaidView.textAbilityPatch.Text = "0"; teraRaidView.textAbilityPatch.ForeColor = Color.DimGray; teraRaidView.labelAbilityPatch.ForeColor = Color.DimGray; teraRaidView.textAbilityCapsule.Text = "0"; teraRaidView.textAbilityCapsule.ForeColor = Color.DimGray; teraRaidView.labelAbilityCapsule.ForeColor = Color.DimGray; teraRaidView.textBottleCap.Text = "0"; teraRaidView.textBottleCap.ForeColor = Color.DimGray; teraRaidView.labelBottleCap.ForeColor = Color.DimGray; teraRaidView.textSweetHerba.Text = "0"; teraRaidView.textSweetHerba.ForeColor = Color.DimGray; teraRaidView.labelSweetHerba.ForeColor = Color.DimGray; teraRaidView.textSaltyHerba.Text = "0"; teraRaidView.textSaltyHerba.ForeColor = Color.DimGray; teraRaidView.labelSaltyHerba.ForeColor = Color.DimGray; teraRaidView.textBitterHerba.Text = "0"; teraRaidView.textBitterHerba.ForeColor = Color.DimGray; teraRaidView.labelBitterHerba.ForeColor = Color.DimGray; teraRaidView.textSourHerba.Text = "0"; teraRaidView.textSourHerba.ForeColor = Color.DimGray; teraRaidView.labelSourHerba.ForeColor = Color.DimGray; teraRaidView.textSpicyHerba.Text = "0"; teraRaidView.textSpicyHerba.ForeColor = Color.DimGray; teraRaidView.labelSpicyHerba.ForeColor = Color.DimGray; for (int i = 0; i < rewards.Count; i++) { if (rewards[i].Item1 == 645) { teraRaidView.textAbilityCapsule.Text = ( int.Parse(teraRaidView.textAbilityCapsule.Text) + 1 ).ToString(); teraRaidView.textAbilityCapsule.ForeColor = Color.White; teraRaidView.labelAbilityCapsule.ForeColor = Color.WhiteSmoke; } if (rewards[i].Item1 == 795) { teraRaidView.textBottleCap.Text = ( int.Parse(teraRaidView.textBottleCap.Text) + 1 ).ToString(); teraRaidView.textBottleCap.ForeColor = Color.White; teraRaidView.labelBottleCap.ForeColor = Color.WhiteSmoke; } if (rewards[i].Item1 == 1606) { teraRaidView.textAbilityPatch.Text = ( int.Parse(teraRaidView.textAbilityPatch.Text) + 1 ).ToString(); teraRaidView.textAbilityPatch.ForeColor = Color.White; teraRaidView.labelAbilityPatch.ForeColor = Color.WhiteSmoke; } if (rewards[i].Item1 == 1904) { teraRaidView.textSweetHerba.Text = ( int.Parse(teraRaidView.textSweetHerba.Text) + 1 ).ToString(); teraRaidView.textSweetHerba.ForeColor = Color.White; teraRaidView.labelSweetHerba.ForeColor = Color.WhiteSmoke; } if (rewards[i].Item1 == 1905) { teraRaidView.textSaltyHerba.Text = ( int.Parse(teraRaidView.textSaltyHerba.Text) + 1 ).ToString(); teraRaidView.textSaltyHerba.ForeColor = Color.White; teraRaidView.labelSaltyHerba.ForeColor = Color.WhiteSmoke; } if (rewards[i].Item1 == 1906) { teraRaidView.textSourHerba.Text = ( int.Parse(teraRaidView.textSourHerba.Text) + 1 ).ToString(); teraRaidView.textSourHerba.ForeColor = Color.White; teraRaidView.labelSourHerba.ForeColor = Color.WhiteSmoke; } if (rewards[i].Item1 == 1907) { teraRaidView.textBitterHerba.Text = ( int.Parse(teraRaidView.textBitterHerba.Text) + 1 ).ToString(); teraRaidView.textBitterHerba.ForeColor = Color.White; teraRaidView.labelBitterHerba.ForeColor = Color.WhiteSmoke; } if (rewards[i].Item1 == 1908) { teraRaidView.textSpicyHerba.Text = ( int.Parse(teraRaidView.textSpicyHerba.Text) + 1 ).ToString(); teraRaidView.textSpicyHerba.ForeColor = Color.White; teraRaidView.labelSpicyHerba.ForeColor = Color.WhiteSmoke; } } var shiny = raid.CheckIsShiny(encounter); teraRaidView.Shiny.Visible = shiny; teraRaidView.picShinyAlert.Enabled = shiny; return; } var msg = $"Unable to display raid at index {index}. Ensure there are no cheats running or anything else that might shift RAM (Edizon, overlays, etc.), then reboot your console and try again."; Task.Run( async () => await this .DisplayMessageBox(Webhook, msg, Source.Token) .ConfigureAwait(false), Source.Token ); } private string GetPIDString(Raid raid, ITeraRaid? enc) { if (HideSeed) return "Hidden"; const string shiny_mark = " (☆)"; var pid = $"{raid.PID:X8}"; return raid.CheckIsShiny(enc) ? pid + shiny_mark : pid; } private static string IVsString(ReadOnlySpan ivs, bool verbose = false) { string s = string.Empty; var stats = new[] { "HP", "Atk", "Def", "SpA", "SpD", "Spe" }; for (int i = 0; i < ivs.Length; i++) { s += $"{ivs[i]:D2}{(verbose ? " " + stats[i] : string.Empty)}"; if (i < 5) s += "/"; } return s; } private static Image ApplyTeraColor(byte elementalType, Image img, SpriteBackgroundType type) { var color = TypeColor.GetTypeSpriteColor(elementalType); var thk = SpriteBuilder.ShowTeraThicknessStripe; var op = SpriteBuilder.ShowTeraOpacityStripe; var bg = SpriteBuilder.ShowTeraOpacityBackground; return ApplyColor(img, type, color, thk, op, bg); } private static Image ApplyColor(Image img, SpriteBackgroundType type, Color color, int thick, byte opacStripe, byte opacBack) { if (type == SpriteBackgroundType.BottomStripe) { int stripeHeight = thick; // from bottom if ((uint)stripeHeight > img.Height) // clamp negative & too-high values back to height. stripeHeight = img.Height; return ImageUtil.BlendTransparentTo(img, color, opacStripe, img.Width * 4 * (img.Height - stripeHeight)); } if (type == SpriteBackgroundType.TopStripe) { int stripeHeight = thick; // from top if ((uint)stripeHeight > img.Height) // clamp negative & too-high values back to height. stripeHeight = img.Height; return ImageUtil.BlendTransparentTo(img, color, opacStripe, 0, (img.Width * 4 * stripeHeight) - 4); } if (type == SpriteBackgroundType.FullBackground) // full background return ImageUtil.BlendTransparentTo(img, color, opacBack); return img; } private static Bitmap? GenerateMap(Raid raid, int teratype) { var original = PKHeX.Drawing.Misc.TypeSpriteUtil.GetTypeSpriteGem((byte)teratype); if (original is null) return null; var gem = new Bitmap(original, new Size(30, 30)); SpriteUtil.GetSpriteGlow(gem, 0xFF, 0xFF, 0xFF, out var glow, true); gem = ImageUtil.LayerImage(gem, ImageUtil.GetBitmap(glow, gem.Width, gem.Height, gem.PixelFormat), 0, 0); if (DenLocationsBase is null || DenLocationsBase.Count == 0 || DenLocationsKitakami is null || DenLocationsKitakami.Count == 0 || DenLocationsBlueberry is null || DenLocationsBlueberry.Count == 0) { return null; } var locData = raid.MapParent switch { TeraRaidMapParent.Paldea => DenLocationsBase, TeraRaidMapParent.Kitakami => DenLocationsKitakami, _ => DenLocationsBlueberry, }; var map = raid.MapParent switch { TeraRaidMapParent.Paldea => MapBase, TeraRaidMapParent.Kitakami => MapKitakami, _ => MapBlueberry, }; try { (double x, double z) = GetCoordinate(raid, locData, gem); return ImageUtil.LayerImage(map, gem, (int)x, (int)z); } catch { return null; } } private static (double x, double y) GetCoordinate(Raid raid, IReadOnlyDictionary locData, Bitmap gem) { var m = MapMagic.GetMapMagic(raid.MapParent); double x = m.ConvertX(locData[$"{raid.Area}-{raid.LotteryGroup}-{raid.Den}"][0]) - (gem.Size.Width / 2); double z = m.ConvertZ(locData[$"{raid.Area}-{raid.LotteryGroup}-{raid.Den}"][2]) - (gem.Size.Height / 2); return (x, z); } private bool StopAdvanceDate(IEnumerable previousSeeds) { var raids = RaidContainer.Raids; var curSeeds = raids.Select(x => x.Seed).ToArray(); var sameRaids = curSeeds.Except(previousSeeds).ToArray().Length == 0; StatDaySkipTries++; if (sameRaids) return false; StatDaySkipSuccess++; if (!Config.EnableFilters) return true; foreach (RaidFilter rf in RaidFilters) { var index = Invoke(() => RaidBoost.SelectedIndex); var encounters = RaidContainer.Encounters; if (rf.FilterSatisfied(RaidContainer, encounters, raids, index)) return true; } return StopAdvances; } private async Task ReadRaids(CancellationToken token) { if (Config is { PaldeaScan: false, KitakamiScan: false, BlueberryScan: false }) { await this.DisplayMessageBox(Webhook, "Please select a location to scan in your General Settings.", token, "No locations selected").ConfigureAwait(false); return; } if (RaidBlockOffsetBase == 0) { UpdateStatus("Caching the raid block pointers..."); RaidBlockOffsetBase = await ConnectionWrapper.Connection .PointerAll(RaidBlockPointerBase.ToArray(), token) .ConfigureAwait(false); RaidBlockOffsetKitakami = await ConnectionWrapper.Connection .PointerAll(RaidBlockPointerKitakami.ToArray(), token) .ConfigureAwait(false); RaidBlockOffsetBlueberry = await ConnectionWrapper.Connection .PointerAll(RaidBlockPointerBlueberry.ToArray(), token) .ConfigureAwait(false); } RaidContainer.ClearRaids(); RaidContainer.ClearEncounters(); RaidContainer.ClearRewards(); // Base var msg = string.Empty; int delivery, enc; if (Config.PaldeaScan) { UpdateStatus("Reading Paldea raid block..."); var data = await ConnectionWrapper.Connection .ReadBytesAbsoluteAsync(RaidBlockOffsetBase + RaidBlock.HEADER_SIZE, (int)RaidBlock.SIZE_BASE, token) .ConfigureAwait(false); (delivery, enc) = RaidContainer.ReadAllRaids(data, Config.Progress, Config.EventProgress, GetRaidBoost(), TeraRaidMapParent.Paldea); if (enc > 0) msg += $"Failed to find encounters for {enc} raid(s).\n"; if (delivery > 0) msg += $"Invalid delivery group ID for {delivery} raid(s). Try deleting the \"cache\" folder.\n"; if (msg != string.Empty) { msg += $"\nMore info can be found in the \"raid_dbg_{TeraRaidMapParent.Paldea}.txt\" file."; await this.DisplayMessageBox(Webhook, msg, token, "Raid Read Error").ConfigureAwait(false); } } var raids = RaidContainer.Raids; var encounters = RaidContainer.Encounters; var rewards = RaidContainer.Rewards; RaidContainer.ClearRaids(); RaidContainer.ClearEncounters(); RaidContainer.ClearRewards(); // Kitakami if (Config.KitakamiScan) { UpdateStatus("Reading Kitakami raid block..."); var data = await ConnectionWrapper.Connection .ReadBytesAbsoluteAsync(RaidBlockOffsetKitakami, (int)RaidBlock.SIZE_KITAKAMI, token) .ConfigureAwait(false); msg = string.Empty; (delivery, enc) = RaidContainer.ReadAllRaids(data, Config.Progress, Config.EventProgress, GetRaidBoost(), TeraRaidMapParent.Kitakami); if (enc > 0) msg += $"Failed to find encounters for {enc} raid(s).\n"; if (delivery > 0) msg += $"Invalid delivery group ID for {delivery} raid(s). Try deleting the \"cache\" folder.\n"; if (msg != string.Empty) { msg += $"\nMore info can be found in the \"raid_dbg_{TeraRaidMapParent.Kitakami}.txt\" file."; await this.DisplayMessageBox(Webhook, msg, token, "Raid Read Error") .ConfigureAwait(false); } } var allRaids = raids.Concat(RaidContainer.Raids).ToList().AsReadOnly(); var allEncounters = encounters.Concat(RaidContainer.Encounters).ToList().AsReadOnly(); var allRewards = rewards.Concat(RaidContainer.Rewards).ToList().AsReadOnly(); RaidContainer.ClearRaids(); RaidContainer.ClearEncounters(); RaidContainer.ClearRewards(); // Blueberry if (Config.BlueberryScan) { UpdateStatus("Reading Blueberry raid block..."); var data = await ConnectionWrapper.Connection .ReadBytesAbsoluteAsync(RaidBlockOffsetBlueberry, (int)RaidBlock.SIZE_BLUEBERRY, token) .ConfigureAwait(false); msg = string.Empty; (delivery, enc) = RaidContainer.ReadAllRaids(data, Config.Progress, Config.EventProgress, GetRaidBoost(), TeraRaidMapParent.Blueberry); if (enc > 0) msg += $"Failed to find encounters for {enc} raid(s).\n"; if (delivery > 0) msg += $"Invalid delivery group ID for {delivery} raid(s). Try deleting the \"cache\" folder.\n"; if (msg != string.Empty) { msg += $"\nMore info can be found in the \"raid_dbg_{TeraRaidMapParent.Blueberry}.txt\" file."; await this.DisplayMessageBox(Webhook, msg, token, "Raid Read Error") .ConfigureAwait(false); } } allRaids = allRaids.Concat(RaidContainer.Raids).ToList().AsReadOnly(); allEncounters = allEncounters.Concat(RaidContainer.Encounters).ToList().AsReadOnly(); allRewards = allRewards.Concat(RaidContainer.Rewards).ToList().AsReadOnly(); RaidContainer.SetRaids(allRaids); RaidContainer.SetEncounters(allEncounters); RaidContainer.SetRewards(allRewards); UpdateStatus("Completed!"); var filterMatchCount = Enumerable.Range(0, allRaids.Count) .Count(c => RaidFilters.Any(z => z.FilterSatisfied(RaidContainer, allEncounters[c], allRaids[c], GetRaidBoost()))); if (InvokeRequired) Invoke(() => LabelLoadedRaids.Text = $"Matches: {filterMatchCount}"); else LabelLoadedRaids.Text = $"Matches: {filterMatchCount}"; if (allRaids.Count > 0) { ButtonEnable(true, ButtonPrevious, ButtonNext); var dataSource = Enumerable.Range(0, allRaids.Count) .Select(z => $"{z + 1:D} / {allRaids.Count:D}") .ToArray(); if (InvokeRequired) Invoke(() => ComboIndex.DataSource = dataSource); else ComboIndex.DataSource = dataSource; if (InvokeRequired) Invoke(() => ComboIndex.SelectedIndex = ComboIndex.SelectedIndex < allRaids.Count ? ComboIndex.SelectedIndex : 0); else ComboIndex.SelectedIndex = ComboIndex.SelectedIndex < allRaids.Count ? ComboIndex.SelectedIndex : 0; } else { ButtonEnable(false, ButtonPrevious, ButtonNext); if (allRaids.Count > RaidBlock.MAX_COUNT_BASE + RaidBlock.MAX_COUNT_KITAKAMI || allRaids.Count == 0) { msg = "Bad read, ensure there are no cheats running or anything else that might shift RAM (Edizon, overlays, etc.), then reboot your console and try again."; await this.DisplayMessageBox(Webhook, msg, token, "Raid Read Error").ConfigureAwait(false); } } } public void Game_SelectedIndexChanged(string name) { Config.Game = name; RaidContainer.SetGame(name); if (RaidContainer.Raids.Count > 0) DisplayRaid(); } public void Protocol_SelectedIndexChanged(SwitchProtocol protocol) { Config.Protocol = protocol; ConnectionConfig.Protocol = protocol; if (protocol is SwitchProtocol.USB) { InputSwitchIP.Visible = false; LabelSwitchIP.Visible = false; USB_Port_label.Visible = true; USB_Port_TB.Visible = true; ConnectionConfig.Port = Config.UsbPort; } else { InputSwitchIP.Visible = true; LabelSwitchIP.Visible = true; USB_Port_label.Visible = false; USB_Port_TB.Visible = false; ConnectionConfig.Port = 6000; } } private void DisplayMap(object sender, EventArgs e) { var raids = RaidContainer.Raids; if (raids.Count == 0) { Task.Run(async () => await this.DisplayMessageBox(Webhook, "Raids not loaded.", Source.Token).ConfigureAwait(false), Source.Token); return; } var raid = raids[ComboIndex.SelectedIndex]; var encounter = RaidContainer.Encounters[ComboIndex.SelectedIndex]; var teraType = raid.GetTeraType(encounter); var map = GenerateMap(raid, teraType); if (map is null) { Task.Run(async () => await this.DisplayMessageBox(Webhook, "Error generating map.", Source.Token).ConfigureAwait(false), Source.Token); return; } var form = new MapView(map); ShowDialog(form); } private void Rewards_Click(object sender, EventArgs e) { if (RaidContainer.Raids.Count == 0) { Task.Run(async () => await this.DisplayMessageBox(Webhook, "Raids not loaded.", Source.Token).ConfigureAwait(false), Source.Token); return; } var rewards = RaidContainer.Rewards[ComboIndex.SelectedIndex]; if (rewards is null) { Task.Run(async () => await this.DisplayMessageBox(Webhook, "Error while displaying rewards.", Source.Token).ConfigureAwait(false), Source.Token); return; } var form = new RewardsView(RaidContainer.Strings.Item, RaidContainer.Strings.Move, rewards); ShowDialog(form); } private void RaidBoost_SelectedIndexChanged(object sender, EventArgs e) { RaidContainer.ClearRewards(); var raids = RaidContainer.Raids; var encounters = RaidContainer.Encounters; List> newRewards = []; for (int i = 0; i < raids.Count; i++) { var raid = raids[i]; var encounter = encounters[i]; newRewards.Add(encounter.GetRewards(RaidContainer, raid, RaidBoost.SelectedIndex)); } RaidContainer.SetRewards(newRewards); } private void Move_Clicked(object sender, EventArgs e) { if (RaidContainer.Raids.Count == 0) { Task.Run(async () => await this.DisplayMessageBox(Webhook, "Raids not loaded.", Source.Token).ConfigureAwait(false), Source.Token); return; } var encounter = RaidContainer.Encounters[ComboIndex.SelectedIndex]; if (encounter is null) return; ShowExtraMoves ^= true; LabelMoves.Text = ShowExtraMoves ? "Extra:" : "Moves:"; LabelMoves.Location = LabelMoves.Location with { X = LabelMoves.Location.X + (ShowExtraMoves ? 9 : -9) }; var length = encounter.ExtraMoves.Length < 4 ? 4 : encounter.ExtraMoves.Length; var extraMoves = new ushort[length]; for (int i = 0; i < encounter.ExtraMoves.Length; i++) extraMoves[i] = encounter.ExtraMoves[i]; Move1.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[0]] : RaidContainer.Strings.Move[encounter.Move1]; Move2.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[1]] : RaidContainer.Strings.Move[encounter.Move2]; Move3.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[2]] : RaidContainer.Strings.Move[encounter.Move3]; Move4.Text = ShowExtraMoves ? RaidContainer.Strings.Move[extraMoves[3]] : RaidContainer.Strings.Move[encounter.Move4]; } private void ComboIndex_SelectedIndexChanged(object sender, EventArgs e) { if (RaidContainer.Raids.Count == 0) return; DisplayRaid(); if (Config.StreamerView) DisplayPrettyRaid(); } private void SendScreenshot_Click(object sender, EventArgs e) { Task.Run(async () => { try { await Webhook.SendScreenshot(ConnectionWrapper.Connection, Source.Token).ConfigureAwait(false); } catch (Exception ex) { await this.DisplayMessageBox(Webhook, $"Could not send the screenshot: {ex.Message}", Source.Token).ConfigureAwait(false); } }, Source.Token ); } private void SearchTimer_Elapsed(object sender, EventArgs e) { if (!stopwatch.IsRunning) return; var timeSpan = stopwatch.Elapsed; var time = $"{timeSpan.Days:00}:{timeSpan.Hours:00}:{timeSpan.Minutes:00}:{timeSpan.Seconds:00}"; Invoke(() => Text = $"{formTitle} [Searching for {time}]"); if (Config.StreamerView && teraRaidView is not null) Invoke(() => teraRaidView.textSearchTime.Text = time); } public void TestWebhook() => Task.Run(async () => await TestWebhookAsync(Source.Token).ConfigureAwait(false), Source.Token); private async Task TestWebhookAsync(CancellationToken token) { var filter = new RaidFilter { Name = "Test Webhook" }; int i = ComboIndex.SelectedIndex; var raids = RaidContainer.Raids; var encounters = RaidContainer.Encounters; var rewards = RaidContainer.Rewards; if (i <= -1 || encounters[i] is null || raids[i] is null) { await this.DisplayMessageBox(Webhook, "Please connect to your device and ensure a raid has been found.", token).ConfigureAwait(false); return; } var timeSpan = stopwatch.Elapsed; string time = $"{timeSpan.Hours:00}:{timeSpan.Minutes:00}:{timeSpan.Seconds:00}"; var teraType = raids[i].GetTeraType(encounters[i]); var color = TypeColor.GetTypeSpriteColor((byte)teraType); var hexColor = $"{color.R:X2}{color.G:X2}{color.B:X2}"; var blank = new PK9 { Species = encounters[i].Species, Form = encounters[i].Form, Gender = encounters[i].Gender, }; blank.SetSuggestedFormArgument(); var spriteName = GetSpriteNameForUrl(blank, raids[i].CheckIsShiny(encounters[i])); await Webhook.SendNotification(encounters[i], raids[i], filter, time, rewards[i], hexColor, spriteName, token).ConfigureAwait(false); } public void ToggleStreamerView() { if (Config.StreamerView) { teraRaidView = new(); teraRaidView.Map.Image = MapBase; teraRaidView.Show(); } else if (!Config.StreamerView && teraRaidView is not null) { teraRaidView.Close(); } } private static string GetSpriteNameForUrl(PK9 pk, bool shiny) { // Since we're later using this for URL assembly later, we need dashes instead of underscores for forms. var spriteName = SpriteName.GetResourceStringSprite(pk.Species, pk.Form, pk.Gender, pk.FormArgument, EntityContext.Gen9, shiny)[1..]; return spriteName.Replace('_', '-').Insert(0, "_"); } private void B_DateTools_Click(object sender, EventArgs e) { Task.Run(async () => { try { var tick = await ConnectionWrapper.GetCurrentTime(Source.Token).ConfigureAwait(false); var form = new TickModifier(tick, ConnectionWrapper, Webhook, Source.Token); ShowDialog(form); } catch (Exception ex) { await this.DisplayMessageBox(Webhook, $"Could not read the date: {ex.Message}", Source.Token).ConfigureAwait(false); } }); } private void CheckForUpdates() { Task.Run(async () => { Version? latestVersion; try { latestVersion = Utils.GetLatestVersion(); } catch (Exception ex) { Debug.WriteLine($"Exception while checking for latest version: {ex}"); return; } if (latestVersion is null || latestVersion <= CurrentVersion) return; while (!IsHandleCreated) // Wait for form to be ready await Task.Delay(2_000).ConfigureAwait(false); await InvokeAsync(() => NotifyNewVersionAvailable(latestVersion)); }); } private void NotifyNewVersionAvailable(Version version) { Text += $" - Update v{version.Major}.{version.Minor}.{version.Build} available!"; UpdateStatus($"Update v{version.Major}.{version.Minor}.{version.Build} available!"); #if !DEBUG using UpdateNotifPopup nup = new(CurrentVersion, version); if (nup.ShowDialog() == DialogResult.OK) { Process.Start(new ProcessStartInfo("https://github.com/LegoFigure11/RaidCrawler/releases/") { UseShellExecute = true }); } #endif } } ================================================ FILE: RaidCrawler.WinForms/MainWindow.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 136, 17 17, 17 226, 17 AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAkAAMMOAADDDgAAAAAAAAAA AACDiI4Uy83Ql+jr6+Tk5+ffz9LUvrm8v56lqa2AlZieZYiOlFF7gYhEb3Z+O2lxeTlpcXk4bnV9OnqB iEOIjpRQmJyiYKmssXm7v8KZ0tTWuubo6drn6enku77Br2pxeDDX2NtL+vn69OnX5P/lz9//9Orx//n2 +f/4+Pn89fb29u/y8e3p6+zm5ejo4OTn597k5+fe5ejo3+nr6+Xv8vHt9ff39fj4+fv59/n/9Orx/+TP 3//p1+T/9vb2+qqvs3Xs7e5g/Pr7/bR6pv+YSIT/o1yS/7F0ov++jLL/y6PB/9Oxy//exNj/483e/+TN 3v/kzd7/5M3e/97E2P/TsMr/y6LB/76Msv+xdKL/o1yR/5hIg/+0eqb/+vn6/8fJzYHw8PFR/fv8+rV9 pv+TQH7/lEF//5NAfv+TQH7/k0B+/5VDgP+XRoL/l0aC/5ZFgf+WRYH/l0aC/5ZGgv+VQoD/k0B+/5NA fv+TQH7/lEF//5NAfv+1fKf/+vn6/cXHynLs7e1D/fz99LuHrv+SPn3/lUJ//5VDgP+VQ4D/lUOA/5VD gP+UQoD/pF6S/72KsP+9irD/o16S/5RCf/+VQ4D/lUOA/5VDgP+VQ4D/lUJ//5I+ff+7hq7/+fn5+rzA wmPl5eY1/f797dGuyf+jXJL/nVGK/5hJhP+WRYH/lUOA/5RAf/+ydqP/7uHr//Lo8P/y6O//7uHq/7J2 o/+TQH7/lUOA/5ZEgf+YSIP/nE+I/6JYj//RrMj/9/j49q+zt1bh4uQo/f395vr2+f/y6PD/7N3o/+TP 3v/cwdX/1rbO/9Kvyf/v4uv/3cTX/6Rek/+kXpP/3cPX/+7h6//Rrcj/1LPM/9q+0//jzd3/6trm//Hm 7v/69vn/9vb38Kerr0Xa290e/P39297D1/+4gqv/xpq7/9GsyP/Zu9H/38bZ/+jW4//7+Pr/tX2o/5I+ ff+SPn3/tX2o//v4+v/o1uP/38fZ/9q+0//Tscv/yJ6+/7qFrf/fxtn/8vT06JyhpTnMz9AV+/38ztq+ 0/+UQn//k0B+/5RCf/+WRIH/lkWB/6Nbkf/v4uz/yqHA/5ZEgf+WRIH/yqHA/+/i7P+iW5H/lkWB/5ZE gf+UQn//k0B+/5RCf//bvtT/7/Hx35CUmS3BxMgL+/38v+LL3P+XR4P/lUOA/5VDgP+VQ4D/lUKA/5VD gP/HnLz/9u/0/9q/0//av9P/9u/1/8edvf+VQ4D/lUKA/5VDgP+VQ4D/lUOA/5dHg//iy9z/7e/v1H6C iCKipqkG+fv6sebS4f+aS4b/lUKA/5VDgP+VQoD/mUqG/5hJhP+ZSYT/voyy/9/G2f/fxtn/voyy/5lJ hP+YSIT/mUqF/5VCgP+VQ4D/lUKA/5pLhv/m0uH/6OrqyG91fBhYW2AD9/j3oe3f6f+eU4v/lEJ//5VD gP+WRYL/zabE/76Msv+TQH7/lEF//5dGgv+XRoL/lEF//5NAfv++jLH/zabD/5ZFgv+VQ4D/lEJ//55T i//u3+r/3+LjvFdcZRL///8A9vj3jvPp8P+iWY//lEJ//5RBf/+zeKX/+vb5/9/H2f+YSIT/lUOA/5VD gP+VQ4D/lUOA/5hIhP/fx9n/+vb5/7N4pf+UQX//lEJ//6JZj//z6fD/297frDY/SQz///8A9vf3ffXt 8/+mYJX/k0B+/55TjP/l0uH//////PXt8/+nY5b/lEF//5VDgP+VQ4D/lEF//6dilv/17fP//////eXS 4P+eU4z/k0B+/6Zfk//17fP/1tnbmwAHFQb///8A8fHxa/n1+P+tbp7/lEF//8qiwP/9/f308/T0pf79 /vLAkLT/k0B+/5VDgP+VQ4D/k0B+/8CQtP/8/Pz27Oztrf79/vHKocD/lEF//65unv/49Pf/zc/SiwAA AAP///8A7/DwVPz7/PuzeaX/rW2d//Xu9P/19vao3N7fJf///9DbwNT/l0aC/5VDgP+VQ4D/l0aC/9zA 1f/3+fjcvsHDMP///5317vT/rW2d/7R6pv/6+fr+xMbJdQAAAAD///8A7+/wNP7+/urgyNr/6Nfk//z9 /N7f4uMz////AP3+/pnw5e7/olmQ/5RCf/+UQX//olmP//Hm7v/r7e2rOUFKCfv7+yv////Z6Nfk/+DI 2v/6+/vvxMfJSf///wD///8A2NrbBvz8/Hr////h/v7+1vHx81sAEBwB////APf4+Fr7+fv7tn6o/5NA fv+TQH7/tn6p//v5+v3X2dtxAAAAAdDZ3AD6/v5U/v//1f///+L19fWBr7K2Cenq7AAAAAAA+Pn5APb2 9gX5+voh9/j4G9vb3gK9vb8A////AO7v8Sj////i0K3H/5RCgP+VQoD/0a3I//n7+uq/wsU5////AL/D xgD09/cC+vv7Gvf4+CHf4OAG8fHxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6+vsAOTk 5Qj+//+x6trm/5xQif+cUIn/6trm//Hz87+Ok5gTqKquAISMlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo+RAP///wD4+fpq+vf6/rJ2o/+ydqP/+vf5/9/h 4oAAAAACVFlhAIiPlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAPn5+wD29vgi////2OfV4//n1eP/+vv73sjLzTD///8AWF5nAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnp6gAdHSUA/Pz8Xv// /9v+/v7c8fLzZDZCTAL///8AYWlxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj5gAAAAAA9PT1A/v7+x/5+fkf0dLVBAAAAACvsbYAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAEAgQABAIEAQQDDAMMA/wD/AP+A/wD/gf8A/8H/AP/D /wA= ================================================ FILE: RaidCrawler.WinForms/Program.cs ================================================ namespace RaidCrawler.WinForms; internal static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); Application.Run(new MainWindow()); } } ================================================ FILE: RaidCrawler.WinForms/Properties/Resources.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 RaidCrawler.WinForms.Properties { 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()] internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RaidCrawler.WinForms.Properties.Resources", typeof(Resources).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)] internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_00 { get { object obj = ResourceManager.GetObject("black_00", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_01 { get { object obj = ResourceManager.GetObject("black_01", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_02 { get { object obj = ResourceManager.GetObject("black_02", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_03 { get { object obj = ResourceManager.GetObject("black_03", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_04 { get { object obj = ResourceManager.GetObject("black_04", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_05 { get { object obj = ResourceManager.GetObject("black_05", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_06 { get { object obj = ResourceManager.GetObject("black_06", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_07 { get { object obj = ResourceManager.GetObject("black_07", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_08 { get { object obj = ResourceManager.GetObject("black_08", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_09 { get { object obj = ResourceManager.GetObject("black_09", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_10 { get { object obj = ResourceManager.GetObject("black_10", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_11 { get { object obj = ResourceManager.GetObject("black_11", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_12 { get { object obj = ResourceManager.GetObject("black_12", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_13 { get { object obj = ResourceManager.GetObject("black_13", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_14 { get { object obj = ResourceManager.GetObject("black_14", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_15 { get { object obj = ResourceManager.GetObject("black_15", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_16 { get { object obj = ResourceManager.GetObject("black_16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap black_17 { get { object obj = ResourceManager.GetObject("black_17", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_00 { get { object obj = ResourceManager.GetObject("gem_00", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_01 { get { object obj = ResourceManager.GetObject("gem_01", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_02 { get { object obj = ResourceManager.GetObject("gem_02", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_03 { get { object obj = ResourceManager.GetObject("gem_03", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_04 { get { object obj = ResourceManager.GetObject("gem_04", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_05 { get { object obj = ResourceManager.GetObject("gem_05", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_06 { get { object obj = ResourceManager.GetObject("gem_06", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_07 { get { object obj = ResourceManager.GetObject("gem_07", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_08 { get { object obj = ResourceManager.GetObject("gem_08", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_09 { get { object obj = ResourceManager.GetObject("gem_09", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_10 { get { object obj = ResourceManager.GetObject("gem_10", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_11 { get { object obj = ResourceManager.GetObject("gem_11", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_12 { get { object obj = ResourceManager.GetObject("gem_12", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_13 { get { object obj = ResourceManager.GetObject("gem_13", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_14 { get { object obj = ResourceManager.GetObject("gem_14", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_15 { get { object obj = ResourceManager.GetObject("gem_15", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_16 { get { object obj = ResourceManager.GetObject("gem_16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_17 { get { object obj = ResourceManager.GetObject("gem_17", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_0 { get { object obj = ResourceManager.GetObject("gem_text_0", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_1 { get { object obj = ResourceManager.GetObject("gem_text_1", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_10 { get { object obj = ResourceManager.GetObject("gem_text_10", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_11 { get { object obj = ResourceManager.GetObject("gem_text_11", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_12 { get { object obj = ResourceManager.GetObject("gem_text_12", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_13 { get { object obj = ResourceManager.GetObject("gem_text_13", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_14 { get { object obj = ResourceManager.GetObject("gem_text_14", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_15 { get { object obj = ResourceManager.GetObject("gem_text_15", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_16 { get { object obj = ResourceManager.GetObject("gem_text_16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_17 { get { object obj = ResourceManager.GetObject("gem_text_17", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_2 { get { object obj = ResourceManager.GetObject("gem_text_2", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_3 { get { object obj = ResourceManager.GetObject("gem_text_3", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_4 { get { object obj = ResourceManager.GetObject("gem_text_4", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_5 { get { object obj = ResourceManager.GetObject("gem_text_5", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_6 { get { object obj = ResourceManager.GetObject("gem_text_6", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_7 { get { object obj = ResourceManager.GetObject("gem_text_7", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_8 { get { object obj = ResourceManager.GetObject("gem_text_8", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap gem_text_9 { get { object obj = ResourceManager.GetObject("gem_text_9", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_0645_hires { get { object obj = ResourceManager.GetObject("item_0645_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_0795_hires { get { object obj = ResourceManager.GetObject("item_0795_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1606_hires { get { object obj = ResourceManager.GetObject("item_1606_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1904 { get { object obj = ResourceManager.GetObject("item_1904", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1904_hires { get { object obj = ResourceManager.GetObject("item_1904_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1905 { get { object obj = ResourceManager.GetObject("item_1905", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1905_hires { get { object obj = ResourceManager.GetObject("item_1905_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1906 { get { object obj = ResourceManager.GetObject("item_1906", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1906_hires { get { object obj = ResourceManager.GetObject("item_1906_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1907 { get { object obj = ResourceManager.GetObject("item_1907", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1907_hires { get { object obj = ResourceManager.GetObject("item_1907_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1908 { get { object obj = ResourceManager.GetObject("item_1908", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap item_1908_hires { get { object obj = ResourceManager.GetObject("item_1908_hires", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap material { get { object obj = ResourceManager.GetObject("material", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap shard { get { object obj = ResourceManager.GetObject("shard", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } } } ================================================ FILE: RaidCrawler.WinForms/Properties/Resources.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 ..\resources\black_00.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_04.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_07.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_08.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_09.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_10.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_13.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_14.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\black_17.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_00.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_04.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_07.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_08.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_09.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_10.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_13.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_14.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\resources\gem_17.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-0.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-10.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-13.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-14.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-17.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-6.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-7.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\gem-text-9.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_0645_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_0795_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1606_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1904.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1904_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1905.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1905_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1906.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1906_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1907.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1907_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1908.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\item_1908_hires.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\material.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\shard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ================================================ FILE: RaidCrawler.WinForms/Properties/Settings.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 RaidCrawler.WinForms.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")] public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); public static Settings Default { get { return defaultInstance; } } } } ================================================ FILE: RaidCrawler.WinForms/Properties/Settings.settings ================================================  ================================================ FILE: RaidCrawler.WinForms/RaidCrawler.WinForms.csproj ================================================ WinExe net10.0-windows 14 enable true enable Resources\MightiestMark.ico 1.1.0 1.1.0 x64 true true false all runtime; build; native; contentfiles; analyzers; buildtransitive deps\PKHeX.Drawing.dll deps\PKHeX.Drawing.Misc.dll deps\PKHeX.Drawing.PokeSprite.dll deps\SysBot.Base.dll True True Resources.resx True True Settings.settings ResXFileCodeGenerator Resources.Designer.cs PublicSettingsSingleFileGenerator Settings.Designer.cs ================================================ FILE: RaidCrawler.WinForms/SubForms/ConfigWindow.Designer.cs ================================================ using SysBot.Base; namespace RaidCrawler.WinForms.SubForms { partial class ConfigWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigWindow)); FocusWindow = new CheckBox(); EnableAlert = new CheckBox(); PlayTone = new CheckBox(); LabelMatchFound = new Label(); AlertMessage = new TextBox(); L_AdvanceDate = new Label(); L_BaseDelay = new Label(); SystemDDownPresses = new NumericUpDown(); L_DdownInput = new Label(); NavigateToSettings = new NumericUpDown(); OpenSettings = new NumericUpDown(); OpenHome = new NumericUpDown(); L_OpenHOME = new Label(); L_NavigateSettings = new Label(); L_OpenSettingsDelay = new Label(); L_ScrollSystem = new Label(); Hold = new NumericUpDown(); L_SubmenuDelay = new Label(); Submenu = new NumericUpDown(); L_DateChangeDelay = new Label(); DateChange = new NumericUpDown(); L_ReturnHomeDelay = new Label(); ReturnHome = new NumericUpDown(); L_ReOpenGameDelay = new Label(); ReturnGame = new NumericUpDown(); L_DaysToSkip = new Label(); DaysToSkip = new NumericUpDown(); UseTouch = new CheckBox(); DiscordWebhook = new TextBox(); EnableDiscordNotifications = new CheckBox(); label13 = new Label(); ExperimentalView = new CheckBox(); tabControl1 = new TabControl(); tabGeneral = new TabPage(); LocationGroup = new GroupBox(); KitakamiScanCheck = new CheckBox(); PaldeaScanCheck = new CheckBox(); Protocol_dropdown = new ComboBox(); Protocol_label = new Label(); label23 = new Label(); LabelEventProgress = new Label(); EventProgress = new ComboBox(); LabelGame = new Label(); Game = new ComboBox(); LabelStoryProgress = new Label(); StoryProgress = new ComboBox(); tabMatch = new TabPage(); tabAdvanceDate = new TabPage(); ZyroMethod = new CheckBox(); UseMapTrick = new CheckBox(); ExtraOverworldWait = new NumericUpDown(); L_ExtraOverworldWait = new Label(); RelaunchDelay = new NumericUpDown(); L_RelaunchDelay = new Label(); SystemReset = new NumericUpDown(); L_SystemReset = new Label(); UseSetStick = new CheckBox(); DodgeSystemUpdate = new CheckBox(); SaveGameDelay = new NumericUpDown(); L_SaveGame = new Label(); SaveGame = new CheckBox(); L_OvershootHold = new Label(); SystemOvershoot = new NumericUpDown(); UseOvershoot = new CheckBox(); BaseDelay = new NumericUpDown(); tabWebhook = new TabPage(); EmojiConfig = new Button(); labelWebhooks = new Label(); label21 = new Label(); DiscordMessageContent = new TextBox(); label14 = new Label(); btnTestWebHook = new Button(); denToggle = new CheckBox(); LocationSettings_label = new Label(); IVstyle = new ComboBox(); IVverbose = new CheckBox(); label19 = new Label(); label18 = new Label(); EnableEmoji = new CheckBox(); tabExperimental = new TabPage(); InstanceName = new TextBox(); label17 = new Label(); tabAbout = new TabPage(); linkLabel1 = new LinkLabel(); labelAppName = new Label(); picAppIcon = new PictureBox(); labelAppVersion = new Label(); BlueberryScanCheck = new CheckBox(); ((System.ComponentModel.ISupportInitialize)SystemDDownPresses).BeginInit(); ((System.ComponentModel.ISupportInitialize)NavigateToSettings).BeginInit(); ((System.ComponentModel.ISupportInitialize)OpenSettings).BeginInit(); ((System.ComponentModel.ISupportInitialize)OpenHome).BeginInit(); ((System.ComponentModel.ISupportInitialize)Hold).BeginInit(); ((System.ComponentModel.ISupportInitialize)Submenu).BeginInit(); ((System.ComponentModel.ISupportInitialize)DateChange).BeginInit(); ((System.ComponentModel.ISupportInitialize)ReturnHome).BeginInit(); ((System.ComponentModel.ISupportInitialize)ReturnGame).BeginInit(); ((System.ComponentModel.ISupportInitialize)DaysToSkip).BeginInit(); tabControl1.SuspendLayout(); tabGeneral.SuspendLayout(); LocationGroup.SuspendLayout(); tabMatch.SuspendLayout(); tabAdvanceDate.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)ExtraOverworldWait).BeginInit(); ((System.ComponentModel.ISupportInitialize)RelaunchDelay).BeginInit(); ((System.ComponentModel.ISupportInitialize)SystemReset).BeginInit(); ((System.ComponentModel.ISupportInitialize)SaveGameDelay).BeginInit(); ((System.ComponentModel.ISupportInitialize)SystemOvershoot).BeginInit(); ((System.ComponentModel.ISupportInitialize)BaseDelay).BeginInit(); tabWebhook.SuspendLayout(); tabExperimental.SuspendLayout(); tabAbout.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)picAppIcon).BeginInit(); SuspendLayout(); // // FocusWindow // FocusWindow.AutoSize = true; FocusWindow.Location = new Point(8, 44); FocusWindow.Name = "FocusWindow"; FocusWindow.Size = new Size(123, 19); FocusWindow.TabIndex = 1; FocusWindow.Text = "Focus RaidCrawler"; FocusWindow.UseVisualStyleBackColor = true; // // EnableAlert // EnableAlert.AutoSize = true; EnableAlert.Location = new Point(8, 65); EnableAlert.Name = "EnableAlert"; EnableAlert.Size = new Size(293, 19); EnableAlert.TabIndex = 2; EnableAlert.Text = "Show an alert window with the following message:"; EnableAlert.UseVisualStyleBackColor = true; EnableAlert.CheckedChanged += EnableAlert_CheckedChanged; // // PlayTone // PlayTone.AutoSize = true; PlayTone.Location = new Point(8, 23); PlayTone.Name = "PlayTone"; PlayTone.Size = new Size(84, 19); PlayTone.TabIndex = 0; PlayTone.Text = "Play a tone"; PlayTone.UseVisualStyleBackColor = true; // // LabelMatchFound // LabelMatchFound.AutoSize = true; LabelMatchFound.Font = new Font("Segoe UI", 9F, FontStyle.Bold); LabelMatchFound.Location = new Point(6, 3); LabelMatchFound.Name = "LabelMatchFound"; LabelMatchFound.Size = new Size(137, 15); LabelMatchFound.TabIndex = 3; LabelMatchFound.Text = "When a match is found:"; // // AlertMessage // AlertMessage.Location = new Point(8, 84); AlertMessage.Name = "AlertMessage"; AlertMessage.Size = new Size(357, 23); AlertMessage.TabIndex = 4; // // L_AdvanceDate // L_AdvanceDate.AutoSize = true; L_AdvanceDate.Font = new Font("Segoe UI", 9F, FontStyle.Bold); L_AdvanceDate.Location = new Point(6, 3); L_AdvanceDate.Name = "L_AdvanceDate"; L_AdvanceDate.Size = new Size(233, 15); L_AdvanceDate.TabIndex = 6; L_AdvanceDate.Text = "Advance Date Options (all timings in ms):"; // // L_BaseDelay // L_BaseDelay.AutoSize = true; L_BaseDelay.Location = new Point(8, 178); L_BaseDelay.Name = "L_BaseDelay"; L_BaseDelay.Size = new Size(196, 15); L_BaseDelay.TabIndex = 8; L_BaseDelay.Text = "Base delay to be added to all inputs:"; // // SystemDDownPresses // SystemDDownPresses.Location = new Point(296, 321); SystemDDownPresses.Maximum = new decimal(new int[] { 99, 0, 0, 0 }); SystemDDownPresses.Name = "SystemDDownPresses"; SystemDDownPresses.Size = new Size(68, 23); SystemDDownPresses.TabIndex = 10; SystemDDownPresses.Value = new decimal(new int[] { 38, 0, 0, 0 }); // // L_DdownInput // L_DdownInput.AutoSize = true; L_DdownInput.Location = new Point(8, 323); L_DdownInput.Name = "L_DdownInput"; L_DdownInput.Size = new Size(228, 15); L_DdownInput.TabIndex = 11; L_DdownInput.Text = "DDOWN inputs to get to \"Date and Time\":"; // // NavigateToSettings // NavigateToSettings.Location = new Point(296, 234); NavigateToSettings.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); NavigateToSettings.Name = "NavigateToSettings"; NavigateToSettings.Size = new Size(68, 23); NavigateToSettings.TabIndex = 16; NavigateToSettings.Value = new decimal(new int[] { 100, 0, 0, 0 }); // // OpenSettings // OpenSettings.Location = new Point(296, 263); OpenSettings.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); OpenSettings.Name = "OpenSettings"; OpenSettings.Size = new Size(68, 23); OpenSettings.TabIndex = 17; OpenSettings.Value = new decimal(new int[] { 1000, 0, 0, 0 }); // // OpenHome // OpenHome.Location = new Point(296, 205); OpenHome.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); OpenHome.Name = "OpenHome"; OpenHome.Size = new Size(68, 23); OpenHome.TabIndex = 18; OpenHome.Value = new decimal(new int[] { 1800, 0, 0, 0 }); // // L_OpenHOME // L_OpenHOME.AutoSize = true; L_OpenHOME.Location = new Point(8, 207); L_OpenHOME.Name = "L_OpenHOME"; L_OpenHOME.Size = new Size(140, 15); L_OpenHOME.TabIndex = 19; L_OpenHOME.Text = "Open Home Menu delay:"; // // L_NavigateSettings // L_NavigateSettings.AutoSize = true; L_NavigateSettings.Location = new Point(8, 236); L_NavigateSettings.Name = "L_NavigateSettings"; L_NavigateSettings.Size = new Size(146, 15); L_NavigateSettings.TabIndex = 20; L_NavigateSettings.Text = "Navigate to settings delay:"; // // L_OpenSettingsDelay // L_OpenSettingsDelay.AutoSize = true; L_OpenSettingsDelay.Location = new Point(8, 265); L_OpenSettingsDelay.Name = "L_OpenSettingsDelay"; L_OpenSettingsDelay.Size = new Size(114, 15); L_OpenSettingsDelay.TabIndex = 21; L_OpenSettingsDelay.Text = "Open settings delay:"; // // L_ScrollSystem // L_ScrollSystem.AutoSize = true; L_ScrollSystem.Location = new Point(8, 294); L_ScrollSystem.Name = "L_ScrollSystem"; L_ScrollSystem.Size = new Size(187, 15); L_ScrollSystem.TabIndex = 23; L_ScrollSystem.Text = "Time to hold to scroll to \"System\":"; // // Hold // Hold.Location = new Point(296, 292); Hold.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); Hold.Name = "Hold"; Hold.Size = new Size(68, 23); Hold.TabIndex = 22; Hold.Value = new decimal(new int[] { 1700, 0, 0, 0 }); // // L_SubmenuDelay // L_SubmenuDelay.AutoSize = true; L_SubmenuDelay.Location = new Point(8, 352); L_SubmenuDelay.Name = "L_SubmenuDelay"; L_SubmenuDelay.Size = new Size(123, 15); L_SubmenuDelay.TabIndex = 25; L_SubmenuDelay.Text = "Open submenu delay:"; // // Submenu // Submenu.Location = new Point(296, 350); Submenu.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); Submenu.Name = "Submenu"; Submenu.Size = new Size(68, 23); Submenu.TabIndex = 24; Submenu.Value = new decimal(new int[] { 800, 0, 0, 0 }); // // L_DateChangeDelay // L_DateChangeDelay.AutoSize = true; L_DateChangeDelay.Location = new Point(8, 381); L_DateChangeDelay.Name = "L_DateChangeDelay"; L_DateChangeDelay.Size = new Size(138, 15); L_DateChangeDelay.TabIndex = 27; L_DateChangeDelay.Text = "Open date change delay:"; // // DateChange // DateChange.Location = new Point(296, 379); DateChange.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); DateChange.Name = "DateChange"; DateChange.Size = new Size(68, 23); DateChange.TabIndex = 26; DateChange.Value = new decimal(new int[] { 500, 0, 0, 0 }); // // L_ReturnHomeDelay // L_ReturnHomeDelay.AutoSize = true; L_ReturnHomeDelay.Location = new Point(8, 439); L_ReturnHomeDelay.Name = "L_ReturnHomeDelay"; L_ReturnHomeDelay.Size = new Size(160, 15); L_ReturnHomeDelay.TabIndex = 29; L_ReturnHomeDelay.Text = "Return to Home Menu delay:"; // // ReturnHome // ReturnHome.Location = new Point(296, 437); ReturnHome.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); ReturnHome.Name = "ReturnHome"; ReturnHome.Size = new Size(68, 23); ReturnHome.TabIndex = 28; ReturnHome.Value = new decimal(new int[] { 2500, 0, 0, 0 }); // // L_ReOpenGameDelay // L_ReOpenGameDelay.AutoSize = true; L_ReOpenGameDelay.Location = new Point(8, 468); L_ReOpenGameDelay.Name = "L_ReOpenGameDelay"; L_ReOpenGameDelay.Size = new Size(119, 15); L_ReOpenGameDelay.TabIndex = 31; L_ReOpenGameDelay.Text = "Re-open game delay:"; // // ReturnGame // ReturnGame.Location = new Point(296, 466); ReturnGame.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); ReturnGame.Name = "ReturnGame"; ReturnGame.Size = new Size(68, 23); ReturnGame.TabIndex = 30; ReturnGame.Value = new decimal(new int[] { 4000, 0, 0, 0 }); // // L_DaysToSkip // L_DaysToSkip.AutoSize = true; L_DaysToSkip.Location = new Point(8, 410); L_DaysToSkip.Name = "L_DaysToSkip"; L_DaysToSkip.Size = new Size(179, 15); L_DaysToSkip.TabIndex = 33; L_DaysToSkip.Text = "Number of days/months to skip:"; // // DaysToSkip // DaysToSkip.Location = new Point(296, 408); DaysToSkip.Maximum = new decimal(new int[] { 99, 0, 0, 0 }); DaysToSkip.Name = "DaysToSkip"; DaysToSkip.Size = new Size(68, 23); DaysToSkip.TabIndex = 32; // // UseTouch // UseTouch.AutoSize = true; UseTouch.Location = new Point(8, 61); UseTouch.Name = "UseTouch"; UseTouch.Size = new Size(267, 19); UseTouch.TabIndex = 36; UseTouch.Text = "Use touch screen inputs (faster, experimental)"; UseTouch.UseVisualStyleBackColor = true; // // DiscordWebhook // DiscordWebhook.Location = new Point(8, 138); DiscordWebhook.Name = "DiscordWebhook"; DiscordWebhook.Size = new Size(357, 23); DiscordWebhook.TabIndex = 37; // // EnableDiscordNotifications // EnableDiscordNotifications.AutoSize = true; EnableDiscordNotifications.Location = new Point(8, 118); EnableDiscordNotifications.Name = "EnableDiscordNotifications"; EnableDiscordNotifications.Size = new Size(303, 19); EnableDiscordNotifications.TabIndex = 38; EnableDiscordNotifications.Text = "Send alerts to Discord webhooks (comma separated)"; EnableDiscordNotifications.UseVisualStyleBackColor = true; EnableDiscordNotifications.Click += EnableDiscordNotifications_Click; // // label13 // label13.AutoSize = true; label13.Font = new Font("Segoe UI", 9F, FontStyle.Bold); label13.Location = new Point(6, 3); label13.Name = "label13"; label13.Size = new Size(84, 15); label13.TabIndex = 39; label13.Text = "Experimental:"; // // ExperimentalView // ExperimentalView.AutoSize = true; ExperimentalView.Location = new Point(8, 23); ExperimentalView.Name = "ExperimentalView"; ExperimentalView.Size = new Size(189, 19); ExperimentalView.TabIndex = 40; ExperimentalView.Text = "Toggle Streamer Tera Raid View"; ExperimentalView.UseVisualStyleBackColor = true; ExperimentalView.Click += StreamerView_Clicked; // // tabControl1 // tabControl1.Controls.Add(tabGeneral); tabControl1.Controls.Add(tabMatch); tabControl1.Controls.Add(tabAdvanceDate); tabControl1.Controls.Add(tabWebhook); tabControl1.Controls.Add(tabExperimental); tabControl1.Controls.Add(tabAbout); tabControl1.Dock = DockStyle.Fill; tabControl1.Location = new Point(0, 0); tabControl1.Name = "tabControl1"; tabControl1.SelectedIndex = 0; tabControl1.Size = new Size(380, 668); tabControl1.TabIndex = 41; // // tabGeneral // tabGeneral.Controls.Add(LocationGroup); tabGeneral.Controls.Add(Protocol_dropdown); tabGeneral.Controls.Add(Protocol_label); tabGeneral.Controls.Add(label23); tabGeneral.Controls.Add(LabelEventProgress); tabGeneral.Controls.Add(EventProgress); tabGeneral.Controls.Add(LabelGame); tabGeneral.Controls.Add(Game); tabGeneral.Controls.Add(LabelStoryProgress); tabGeneral.Controls.Add(StoryProgress); tabGeneral.Location = new Point(4, 24); tabGeneral.Name = "tabGeneral"; tabGeneral.Padding = new Padding(3); tabGeneral.Size = new Size(372, 640); tabGeneral.TabIndex = 5; tabGeneral.Text = "General"; tabGeneral.UseVisualStyleBackColor = true; // // LocationGroup // LocationGroup.Controls.Add(BlueberryScanCheck); LocationGroup.Controls.Add(KitakamiScanCheck); LocationGroup.Controls.Add(PaldeaScanCheck); LocationGroup.Location = new Point(8, 137); LocationGroup.Name = "LocationGroup"; LocationGroup.Size = new Size(200, 93); LocationGroup.TabIndex = 115; LocationGroup.TabStop = false; LocationGroup.Text = "Scan Locations"; // // KitakamiScanCheck // KitakamiScanCheck.AutoSize = true; KitakamiScanCheck.Checked = true; KitakamiScanCheck.CheckState = CheckState.Checked; KitakamiScanCheck.Location = new Point(6, 47); KitakamiScanCheck.Name = "KitakamiScanCheck"; KitakamiScanCheck.Size = new Size(72, 19); KitakamiScanCheck.TabIndex = 113; KitakamiScanCheck.Text = "Kitakami"; KitakamiScanCheck.UseVisualStyleBackColor = true; // // PaldeaScanCheck // PaldeaScanCheck.AutoSize = true; PaldeaScanCheck.Checked = true; PaldeaScanCheck.CheckState = CheckState.Checked; PaldeaScanCheck.Location = new Point(6, 22); PaldeaScanCheck.Name = "PaldeaScanCheck"; PaldeaScanCheck.Size = new Size(61, 19); PaldeaScanCheck.TabIndex = 112; PaldeaScanCheck.Text = "Paldea"; PaldeaScanCheck.UseVisualStyleBackColor = true; // // Protocol_dropdown // Protocol_dropdown.FormattingEnabled = true; Protocol_dropdown.Items.AddRange(new object[] { SwitchProtocol.WiFi, SwitchProtocol.USB }); Protocol_dropdown.Location = new Point(159, 108); Protocol_dropdown.MaxDropDownItems = 2; Protocol_dropdown.Name = "Protocol_dropdown"; Protocol_dropdown.Size = new Size(48, 23); Protocol_dropdown.TabIndex = 111; Protocol_dropdown.Text = "w"; Protocol_dropdown.SelectedValueChanged += Protocol_Changed; // // Protocol_label // Protocol_label.AutoSize = true; Protocol_label.Location = new Point(7, 111); Protocol_label.Name = "Protocol_label"; Protocol_label.Size = new Size(120, 15); Protocol_label.TabIndex = 110; Protocol_label.Text = "Connection Protocol:"; // // label23 // label23.AutoSize = true; label23.Font = new Font("Segoe UI", 9F, FontStyle.Bold); label23.Location = new Point(6, 3); label23.Name = "label23"; label23.Size = new Size(118, 15); label23.TabIndex = 109; label23.Text = "Application Settings"; // // LabelEventProgress // LabelEventProgress.AutoSize = true; LabelEventProgress.Location = new Point(7, 83); LabelEventProgress.Name = "LabelEventProgress"; LabelEventProgress.Size = new Size(117, 15); LabelEventProgress.TabIndex = 108; LabelEventProgress.Text = "Event Progress Level:"; // // EventProgress // EventProgress.FormattingEnabled = true; EventProgress.Items.AddRange(new object[] { "1", "2", "3", "4" }); EventProgress.Location = new Point(159, 80); EventProgress.Name = "EventProgress"; EventProgress.Size = new Size(48, 23); EventProgress.TabIndex = 107; EventProgress.Text = "w"; // // LabelGame // LabelGame.AutoSize = true; LabelGame.Location = new Point(8, 28); LabelGame.Name = "LabelGame"; LabelGame.Size = new Size(41, 15); LabelGame.TabIndex = 106; LabelGame.Text = "Game:"; // // Game // Game.FormattingEnabled = true; Game.Items.AddRange(new object[] { "Scarlet", "Violet" }); Game.Location = new Point(111, 25); Game.Name = "Game"; Game.Size = new Size(96, 23); Game.TabIndex = 105; Game.Text = "w"; Game.SelectedIndexChanged += Game_SelectedIndexChanged; // // LabelStoryProgress // LabelStoryProgress.AutoSize = true; LabelStoryProgress.Location = new Point(8, 55); LabelStoryProgress.Name = "LabelStoryProgress"; LabelStoryProgress.Size = new Size(115, 15); LabelStoryProgress.TabIndex = 104; LabelStoryProgress.Text = "Story Progress Level:"; // // StoryProgress // StoryProgress.FormattingEnabled = true; StoryProgress.Items.AddRange(new object[] { "1", "2", "3", "4", "5" }); StoryProgress.Location = new Point(159, 52); StoryProgress.Name = "StoryProgress"; StoryProgress.Size = new Size(48, 23); StoryProgress.TabIndex = 103; StoryProgress.Text = "w"; // // tabMatch // tabMatch.Controls.Add(LabelMatchFound); tabMatch.Controls.Add(FocusWindow); tabMatch.Controls.Add(EnableAlert); tabMatch.Controls.Add(EnableDiscordNotifications); tabMatch.Controls.Add(PlayTone); tabMatch.Controls.Add(DiscordWebhook); tabMatch.Controls.Add(AlertMessage); tabMatch.Location = new Point(4, 24); tabMatch.Name = "tabMatch"; tabMatch.Padding = new Padding(3); tabMatch.Size = new Size(372, 640); tabMatch.TabIndex = 0; tabMatch.Text = "Match"; tabMatch.UseVisualStyleBackColor = true; // // tabAdvanceDate // tabAdvanceDate.Controls.Add(ZyroMethod); tabAdvanceDate.Controls.Add(UseMapTrick); tabAdvanceDate.Controls.Add(ExtraOverworldWait); tabAdvanceDate.Controls.Add(L_ExtraOverworldWait); tabAdvanceDate.Controls.Add(RelaunchDelay); tabAdvanceDate.Controls.Add(L_RelaunchDelay); tabAdvanceDate.Controls.Add(SystemReset); tabAdvanceDate.Controls.Add(L_SystemReset); tabAdvanceDate.Controls.Add(UseSetStick); tabAdvanceDate.Controls.Add(DodgeSystemUpdate); tabAdvanceDate.Controls.Add(SaveGameDelay); tabAdvanceDate.Controls.Add(L_SaveGame); tabAdvanceDate.Controls.Add(SaveGame); tabAdvanceDate.Controls.Add(L_OvershootHold); tabAdvanceDate.Controls.Add(SystemOvershoot); tabAdvanceDate.Controls.Add(UseOvershoot); tabAdvanceDate.Controls.Add(L_AdvanceDate); tabAdvanceDate.Controls.Add(L_BaseDelay); tabAdvanceDate.Controls.Add(UseTouch); tabAdvanceDate.Controls.Add(SystemDDownPresses); tabAdvanceDate.Controls.Add(L_DdownInput); tabAdvanceDate.Controls.Add(L_DaysToSkip); tabAdvanceDate.Controls.Add(NavigateToSettings); tabAdvanceDate.Controls.Add(DaysToSkip); tabAdvanceDate.Controls.Add(OpenSettings); tabAdvanceDate.Controls.Add(L_ReOpenGameDelay); tabAdvanceDate.Controls.Add(OpenHome); tabAdvanceDate.Controls.Add(ReturnGame); tabAdvanceDate.Controls.Add(L_OpenHOME); tabAdvanceDate.Controls.Add(L_ReturnHomeDelay); tabAdvanceDate.Controls.Add(L_NavigateSettings); tabAdvanceDate.Controls.Add(ReturnHome); tabAdvanceDate.Controls.Add(L_OpenSettingsDelay); tabAdvanceDate.Controls.Add(L_DateChangeDelay); tabAdvanceDate.Controls.Add(Hold); tabAdvanceDate.Controls.Add(DateChange); tabAdvanceDate.Controls.Add(L_ScrollSystem); tabAdvanceDate.Controls.Add(L_SubmenuDelay); tabAdvanceDate.Controls.Add(Submenu); tabAdvanceDate.Controls.Add(BaseDelay); tabAdvanceDate.Location = new Point(4, 24); tabAdvanceDate.Name = "tabAdvanceDate"; tabAdvanceDate.Padding = new Padding(3); tabAdvanceDate.Size = new Size(372, 640); tabAdvanceDate.TabIndex = 1; tabAdvanceDate.Text = "Advance Date"; tabAdvanceDate.UseVisualStyleBackColor = true; // // ZyroMethod // ZyroMethod.AutoSize = true; ZyroMethod.Location = new Point(8, 21); ZyroMethod.Name = "ZyroMethod"; ZyroMethod.Size = new Size(332, 19); ZyroMethod.TabIndex = 53; ZyroMethod.Text = "Use Zyro's usb-botbase fork methods (approx. 4-5x faster)"; ZyroMethod.UseVisualStyleBackColor = true; // // UseMapTrick // UseMapTrick.AutoSize = true; UseMapTrick.Location = new Point(8, 41); UseMapTrick.Name = "UseMapTrick"; UseMapTrick.Size = new Size(164, 19); UseMapTrick.TabIndex = 52; UseMapTrick.Text = "Use Map Trick to avoid lag"; UseMapTrick.UseVisualStyleBackColor = true; // // ExtraOverworldWait // ExtraOverworldWait.Location = new Point(296, 555); ExtraOverworldWait.Maximum = new decimal(new int[] { 1000000, 0, 0, 0 }); ExtraOverworldWait.Name = "ExtraOverworldWait"; ExtraOverworldWait.Size = new Size(68, 23); ExtraOverworldWait.TabIndex = 51; // // L_ExtraOverworldWait // L_ExtraOverworldWait.AutoSize = true; L_ExtraOverworldWait.Location = new Point(8, 557); L_ExtraOverworldWait.Name = "L_ExtraOverworldWait"; L_ExtraOverworldWait.Size = new Size(218, 15); L_ExtraOverworldWait.TabIndex = 50; L_ExtraOverworldWait.Text = "Extra time to wait for Overworld to load:"; L_ExtraOverworldWait.UseMnemonic = false; // // RelaunchDelay // RelaunchDelay.Location = new Point(296, 525); RelaunchDelay.Maximum = new decimal(new int[] { 20000, 0, 0, 0 }); RelaunchDelay.Name = "RelaunchDelay"; RelaunchDelay.Size = new Size(68, 23); RelaunchDelay.TabIndex = 49; // // L_RelaunchDelay // L_RelaunchDelay.AutoSize = true; L_RelaunchDelay.Location = new Point(8, 527); L_RelaunchDelay.Name = "L_RelaunchDelay"; L_RelaunchDelay.Size = new Size(198, 15); L_RelaunchDelay.TabIndex = 48; L_RelaunchDelay.Text = "Extra time to wait to relaunch game:"; // // SystemReset // SystemReset.Location = new Point(296, 495); SystemReset.Maximum = new decimal(new int[] { 2000, 0, 0, 0 }); SystemReset.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); SystemReset.Name = "SystemReset"; SystemReset.Size = new Size(68, 23); SystemReset.TabIndex = 47; SystemReset.Value = new decimal(new int[] { 30, 0, 0, 0 }); // // L_SystemReset // L_SystemReset.AutoSize = true; L_SystemReset.Location = new Point(8, 497); L_SystemReset.Name = "L_SystemReset"; L_SystemReset.Size = new Size(203, 15); L_SystemReset.TabIndex = 46; L_SystemReset.Text = "Relaunch game after this many skips:"; // // UseSetStick // UseSetStick.AutoSize = true; UseSetStick.Location = new Point(8, 145); UseSetStick.Name = "UseSetStick"; UseSetStick.Size = new Size(222, 19); UseSetStick.TabIndex = 45; UseSetStick.Text = "Use SetStick instead of PressAndHold"; UseSetStick.UseVisualStyleBackColor = true; UseSetStick.CheckedChanged += UseSetStick_CheckedChanged; // // DodgeSystemUpdate // DodgeSystemUpdate.AutoSize = true; DodgeSystemUpdate.Location = new Point(8, 124); DodgeSystemUpdate.Name = "DodgeSystemUpdate"; DodgeSystemUpdate.Size = new Size(184, 19); DodgeSystemUpdate.TabIndex = 44; DodgeSystemUpdate.Text = "Dodge system update prompt"; DodgeSystemUpdate.UseVisualStyleBackColor = true; // // SaveGameDelay // SaveGameDelay.Location = new Point(296, 614); SaveGameDelay.Name = "SaveGameDelay"; SaveGameDelay.Size = new Size(68, 23); SaveGameDelay.TabIndex = 43; // // L_SaveGame // L_SaveGame.AutoSize = true; L_SaveGame.Location = new Point(8, 616); L_SaveGame.Name = "L_SaveGame"; L_SaveGame.Size = new Size(186, 15); L_SaveGame.TabIndex = 42; L_SaveGame.Text = "Time to wait for the game to save:"; // // SaveGame // SaveGame.AutoSize = true; SaveGame.Location = new Point(8, 103); SaveGame.Name = "SaveGame"; SaveGame.Size = new Size(164, 19); SaveGame.TabIndex = 41; SaveGame.Text = "Save game on filter match"; SaveGame.UseVisualStyleBackColor = true; SaveGame.CheckedChanged += SaveGame_CheckedChanged; // // L_OvershootHold // L_OvershootHold.AutoSize = true; L_OvershootHold.Location = new Point(8, 587); L_OvershootHold.Name = "L_OvershootHold"; L_OvershootHold.Size = new Size(236, 15); L_OvershootHold.TabIndex = 40; L_OvershootHold.Text = "Time to hold to overshoot \"Date and Time\":"; // // SystemOvershoot // SystemOvershoot.Location = new Point(296, 585); SystemOvershoot.Maximum = new decimal(new int[] { 1200, 0, 0, 0 }); SystemOvershoot.Name = "SystemOvershoot"; SystemOvershoot.Size = new Size(68, 23); SystemOvershoot.TabIndex = 39; SystemOvershoot.Value = new decimal(new int[] { 950, 0, 0, 0 }); // // UseOvershoot // UseOvershoot.AutoSize = true; UseOvershoot.Location = new Point(8, 82); UseOvershoot.Name = "UseOvershoot"; UseOvershoot.Size = new Size(355, 19); UseOvershoot.TabIndex = 38; UseOvershoot.Text = "Use overshoot instead of DDOWN inputs (faster, experimental)"; UseOvershoot.UseVisualStyleBackColor = true; UseOvershoot.CheckedChanged += UseOvershoot_CheckedChanged; // // BaseDelay // BaseDelay.Location = new Point(296, 176); BaseDelay.Maximum = new decimal(new int[] { 9999, 0, 0, 0 }); BaseDelay.Name = "BaseDelay"; BaseDelay.Size = new Size(68, 23); BaseDelay.TabIndex = 9; // // tabWebhook // tabWebhook.Controls.Add(EmojiConfig); tabWebhook.Controls.Add(labelWebhooks); tabWebhook.Controls.Add(label21); tabWebhook.Controls.Add(DiscordMessageContent); tabWebhook.Controls.Add(label14); tabWebhook.Controls.Add(btnTestWebHook); tabWebhook.Controls.Add(denToggle); tabWebhook.Controls.Add(LocationSettings_label); tabWebhook.Controls.Add(IVstyle); tabWebhook.Controls.Add(IVverbose); tabWebhook.Controls.Add(label19); tabWebhook.Controls.Add(label18); tabWebhook.Controls.Add(EnableEmoji); tabWebhook.Location = new Point(4, 24); tabWebhook.Name = "tabWebhook"; tabWebhook.Size = new Size(372, 640); tabWebhook.TabIndex = 3; tabWebhook.Text = "Webhook"; tabWebhook.UseVisualStyleBackColor = true; // // EmojiConfig // EmojiConfig.Location = new Point(7, 94); EmojiConfig.Name = "EmojiConfig"; EmojiConfig.Size = new Size(100, 23); EmojiConfig.TabIndex = 46; EmojiConfig.Text = "Emoji Config"; EmojiConfig.UseVisualStyleBackColor = true; EmojiConfig.Click += EmojiConfig_Click; // // labelWebhooks // labelWebhooks.AutoSize = true; labelWebhooks.Location = new Point(10, 618); labelWebhooks.Name = "labelWebhooks"; labelWebhooks.Size = new Size(85, 15); labelWebhooks.TabIndex = 44; labelWebhooks.Text = "Webhooks are "; // // label21 // label21.AutoSize = true; label21.Font = new Font("Segoe UI", 9F, FontStyle.Bold); label21.Location = new Point(8, 3); label21.Name = "label21"; label21.Size = new Size(100, 15); label21.TabIndex = 43; label21.Text = "General Settings"; // // DiscordMessageContent // DiscordMessageContent.Location = new Point(7, 40); DiscordMessageContent.Name = "DiscordMessageContent"; DiscordMessageContent.Size = new Size(357, 23); DiscordMessageContent.TabIndex = 42; // // label14 // label14.AutoSize = true; label14.Location = new Point(7, 22); label14.Name = "label14"; label14.Size = new Size(285, 15); label14.TabIndex = 41; label14.Text = "Message Content (ping with <@numerical_user_id>)"; // // btnTestWebHook // btnTestWebHook.Location = new Point(260, 614); btnTestWebHook.Name = "btnTestWebHook"; btnTestWebHook.Size = new Size(104, 23); btnTestWebHook.TabIndex = 22; btnTestWebHook.Text = "Test Webhook"; btnTestWebHook.UseVisualStyleBackColor = true; btnTestWebHook.Click += BtnTestWebHook_Click; // // denToggle // denToggle.AutoSize = true; denToggle.Checked = true; denToggle.CheckState = CheckState.Checked; denToggle.Location = new Point(8, 249); denToggle.Name = "denToggle"; denToggle.Size = new Size(79, 19); denToggle.TabIndex = 21; denToggle.Text = "Show Den"; denToggle.UseVisualStyleBackColor = true; // // LocationSettings_label // LocationSettings_label.AutoSize = true; LocationSettings_label.Font = new Font("Segoe UI", 9F, FontStyle.Bold); LocationSettings_label.Location = new Point(7, 231); LocationSettings_label.Name = "LocationSettings_label"; LocationSettings_label.Size = new Size(103, 15); LocationSettings_label.TabIndex = 20; LocationSettings_label.Text = "Location Settings"; // // IVstyle // IVstyle.FormattingEnabled = true; IVstyle.Items.AddRange(new object[] { "Emoji", "Highlighted Numerical", "Numerical" }); IVstyle.Location = new Point(8, 196); IVstyle.Name = "IVstyle"; IVstyle.Size = new Size(121, 23); IVstyle.TabIndex = 8; // // IVverbose // IVverbose.AutoSize = true; IVverbose.Location = new Point(8, 147); IVverbose.Name = "IVverbose"; IVverbose.Size = new Size(85, 19); IVverbose.TabIndex = 5; IVverbose.Text = "Verbose IVs"; IVverbose.UseVisualStyleBackColor = true; // // label19 // label19.AutoSize = true; label19.Font = new Font("Segoe UI", 9F, FontStyle.Bold); label19.Location = new Point(7, 178); label19.Name = "label19"; label19.Size = new Size(48, 15); label19.TabIndex = 2; label19.Text = "IV style"; // // label18 // label18.AutoSize = true; label18.Font = new Font("Segoe UI", 9F, FontStyle.Bold); label18.Location = new Point(7, 129); label18.Name = "label18"; label18.Size = new Size(68, 15); label18.TabIndex = 1; label18.Text = "IV Settings"; // // EnableEmoji // EnableEmoji.AutoSize = true; EnableEmoji.Checked = true; EnableEmoji.CheckState = CheckState.Checked; EnableEmoji.Location = new Point(8, 69); EnableEmoji.Name = "EnableEmoji"; EnableEmoji.Size = new Size(94, 19); EnableEmoji.TabIndex = 0; EnableEmoji.Text = "Enable Emoji"; EnableEmoji.UseVisualStyleBackColor = true; // // tabExperimental // tabExperimental.Controls.Add(InstanceName); tabExperimental.Controls.Add(label17); tabExperimental.Controls.Add(label13); tabExperimental.Controls.Add(ExperimentalView); tabExperimental.Location = new Point(4, 24); tabExperimental.Name = "tabExperimental"; tabExperimental.Padding = new Padding(3); tabExperimental.Size = new Size(372, 640); tabExperimental.TabIndex = 2; tabExperimental.Text = "Experimental"; tabExperimental.UseVisualStyleBackColor = true; // // InstanceName // InstanceName.Location = new Point(6, 63); InstanceName.Name = "InstanceName"; InstanceName.Size = new Size(358, 23); InstanceName.TabIndex = 42; // // label17 // label17.AutoSize = true; label17.Location = new Point(6, 45); label17.Name = "label17"; label17.Size = new Size(89, 15); label17.TabIndex = 41; label17.Text = "Instance Name:"; // // tabAbout // tabAbout.Controls.Add(linkLabel1); tabAbout.Controls.Add(labelAppName); tabAbout.Controls.Add(picAppIcon); tabAbout.Controls.Add(labelAppVersion); tabAbout.Location = new Point(4, 24); tabAbout.Name = "tabAbout"; tabAbout.Padding = new Padding(3); tabAbout.Size = new Size(372, 640); tabAbout.TabIndex = 4; tabAbout.Text = "About"; tabAbout.UseVisualStyleBackColor = true; // // linkLabel1 // linkLabel1.AutoSize = true; linkLabel1.Location = new Point(55, 273); linkLabel1.Name = "linkLabel1"; linkLabel1.Size = new Size(253, 15); linkLabel1.TabIndex = 4; linkLabel1.TabStop = true; linkLabel1.Text = "https://github.com/LegoFigure11/RaidCrawler"; linkLabel1.LinkClicked += LinkLabel1_LinkClicked; // // labelAppName // labelAppName.AutoSize = true; labelAppName.Font = new Font("Segoe UI", 14F, FontStyle.Bold); labelAppName.Location = new Point(135, 164); labelAppName.Name = "labelAppName"; labelAppName.Size = new Size(119, 25); labelAppName.TabIndex = 2; labelAppName.Text = "RaidCrawler"; labelAppName.TextAlign = ContentAlignment.MiddleCenter; // // picAppIcon // picAppIcon.Image = (Image)resources.GetObject("picAppIcon.Image"); picAppIcon.Location = new Point(106, 159); picAppIcon.Name = "picAppIcon"; picAppIcon.Size = new Size(32, 32); picAppIcon.TabIndex = 1; picAppIcon.TabStop = false; // // labelAppVersion // labelAppVersion.AutoSize = true; labelAppVersion.Location = new Point(155, 206); labelAppVersion.Name = "labelAppVersion"; labelAppVersion.Size = new Size(78, 15); labelAppVersion.TabIndex = 0; labelAppVersion.Text = "v0.0.0-000000"; labelAppVersion.TextAlign = ContentAlignment.MiddleCenter; // // BlueberryScanCheck // BlueberryScanCheck.AutoSize = true; BlueberryScanCheck.Checked = true; BlueberryScanCheck.CheckState = CheckState.Checked; BlueberryScanCheck.Location = new Point(6, 72); BlueberryScanCheck.Name = "BlueberryScanCheck"; BlueberryScanCheck.Size = new Size(76, 19); BlueberryScanCheck.TabIndex = 114; BlueberryScanCheck.Text = "Blueberry"; BlueberryScanCheck.UseVisualStyleBackColor = true; // // ConfigWindow // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(380, 668); Controls.Add(tabControl1); FormBorderStyle = FormBorderStyle.FixedDialog; MaximizeBox = false; Name = "ConfigWindow"; StartPosition = FormStartPosition.CenterParent; Text = "RaidCrawler Settings"; FormClosing += Config_Closing; ((System.ComponentModel.ISupportInitialize)SystemDDownPresses).EndInit(); ((System.ComponentModel.ISupportInitialize)NavigateToSettings).EndInit(); ((System.ComponentModel.ISupportInitialize)OpenSettings).EndInit(); ((System.ComponentModel.ISupportInitialize)OpenHome).EndInit(); ((System.ComponentModel.ISupportInitialize)Hold).EndInit(); ((System.ComponentModel.ISupportInitialize)Submenu).EndInit(); ((System.ComponentModel.ISupportInitialize)DateChange).EndInit(); ((System.ComponentModel.ISupportInitialize)ReturnHome).EndInit(); ((System.ComponentModel.ISupportInitialize)ReturnGame).EndInit(); ((System.ComponentModel.ISupportInitialize)DaysToSkip).EndInit(); tabControl1.ResumeLayout(false); tabGeneral.ResumeLayout(false); tabGeneral.PerformLayout(); LocationGroup.ResumeLayout(false); LocationGroup.PerformLayout(); tabMatch.ResumeLayout(false); tabMatch.PerformLayout(); tabAdvanceDate.ResumeLayout(false); tabAdvanceDate.PerformLayout(); ((System.ComponentModel.ISupportInitialize)ExtraOverworldWait).EndInit(); ((System.ComponentModel.ISupportInitialize)RelaunchDelay).EndInit(); ((System.ComponentModel.ISupportInitialize)SystemReset).EndInit(); ((System.ComponentModel.ISupportInitialize)SaveGameDelay).EndInit(); ((System.ComponentModel.ISupportInitialize)SystemOvershoot).EndInit(); ((System.ComponentModel.ISupportInitialize)BaseDelay).EndInit(); tabWebhook.ResumeLayout(false); tabWebhook.PerformLayout(); tabExperimental.ResumeLayout(false); tabExperimental.PerformLayout(); tabAbout.ResumeLayout(false); tabAbout.PerformLayout(); ((System.ComponentModel.ISupportInitialize)picAppIcon).EndInit(); ResumeLayout(false); } #endregion private CheckBox FocusWindow; private CheckBox EnableAlert; private CheckBox PlayTone; private Label LabelMatchFound; private TextBox AlertMessage; private Label L_AdvanceDate; private Label L_BaseDelay; private NumericUpDown SystemDDownPresses; private Label L_DdownInput; private NumericUpDown NavigateToSettings; private NumericUpDown OpenSettings; private NumericUpDown OpenHome; private Label L_OpenHOME; private Label L_NavigateSettings; private Label L_OpenSettingsDelay; private Label L_ScrollSystem; private NumericUpDown Hold; private Label L_SubmenuDelay; private NumericUpDown Submenu; private Label L_DateChangeDelay; private NumericUpDown DateChange; private Label L_ReturnHomeDelay; private NumericUpDown ReturnHome; private Label L_ReOpenGameDelay; private NumericUpDown ReturnGame; private Label L_DaysToSkip; private NumericUpDown DaysToSkip; private CheckBox UseTouch; private TextBox DiscordWebhook; private CheckBox EnableDiscordNotifications; private Label label13; private CheckBox ExperimentalView; private TabControl tabControl1; private TabPage tabMatch; private TabPage tabAdvanceDate; private TabPage tabExperimental; private Label L_OvershootHold; private NumericUpDown SystemOvershoot; private CheckBox UseOvershoot; private TextBox InstanceName; private Label label17; private TabPage tabWebhook; private CheckBox EnableEmoji; private Label label19; private Label label18; private ComboBox IVstyle; private CheckBox IVverbose; private CheckBox denToggle; private Label LocationSettings_label; private Button btnTestWebHook; private Label label21; private TextBox DiscordMessageContent; private Label label14; private Label labelWebhooks; private TabPage tabAbout; private Label labelAppVersion; private LinkLabel linkLabel1; private Label labelAppName; private PictureBox picAppIcon; private TabPage tabGeneral; private Label label23; private Label LabelEventProgress; private ComboBox EventProgress; private Label LabelGame; private ComboBox Game; private Label LabelStoryProgress; private ComboBox StoryProgress; private Button EmojiConfig; private ComboBox Protocol_dropdown; private Label Protocol_label; private NumericUpDown BaseDelay; private NumericUpDown SaveGameDelay; private Label L_SaveGame; private CheckBox SaveGame; private CheckBox DodgeSystemUpdate; private CheckBox UseSetStick; private CheckBox PaldeaScanCheck; private GroupBox LocationGroup; private CheckBox KitakamiScanCheck; private NumericUpDown SystemReset; private Label L_SystemReset; private NumericUpDown RelaunchDelay; private Label L_RelaunchDelay; private NumericUpDown ExtraOverworldWait; private Label L_ExtraOverworldWait; private CheckBox UseMapTrick; private CheckBox ZyroMethod; private CheckBox BlueberryScanCheck; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/ConfigWindow.cs ================================================ using System.Text.Json; namespace RaidCrawler.WinForms.SubForms; public partial class ConfigWindow : Form { private readonly ClientConfig c; public ConfigWindow(ClientConfig c) { this.c = c; var assembly = System.Reflection.Assembly.GetEntryAssembly(); var v = assembly?.GetName().Version!; var gitVersionInformationType = assembly?.GetType("GitVersionInformation"); var shaField = gitVersionInformationType?.GetField("ShortSha"); InitializeComponent(); InstanceName.Text = c.InstanceName; StoryProgress.SelectedIndex = c.Progress; EventProgress.SelectedIndex = c.EventProgress; Game.SelectedIndex = Game.FindString(c.Game); Protocol_dropdown.SelectedIndex = (int)c.Protocol; PlayTone.Checked = c.PlaySound; FocusWindow.Checked = c.FocusWindow; EnableAlert.Checked = c.EnableAlertWindow; AlertMessage.Text = c.AlertWindowMessage; AlertMessage.Enabled = EnableAlert.Checked; EnableDiscordNotifications.Checked = c.EnableNotification; DiscordWebhook.Text = c.DiscordWebhook; DiscordWebhook.Enabled = EnableDiscordNotifications.Checked; DiscordMessageContent.Text = c.DiscordMessageContent; DiscordMessageContent.Enabled = EnableDiscordNotifications.Checked; ZyroMethod.Checked = c.ZyroMethod; UseTouch.Checked = c.UseTouch; UseOvershoot.Checked = c.UseOvershoot; SaveGame.Checked = c.SaveOnMatch; DodgeSystemUpdate.Checked = c.DodgeSystemUpdate; UseSetStick.Checked = c.UseSetStick; UseMapTrick.Checked = c.UseMapTrick; OpenHome.Value = c.OpenHomeDelay; NavigateToSettings.Value = c.NavigateToSettingsDelay; OpenSettings.Value = c.OpenSettingsDelay; Hold.Value = c.HoldDuration; SystemDDownPresses.Value = c.SystemDownPresses; SystemOvershoot.Value = c.SystemOvershoot; Submenu.Value = c.Submenu; DateChange.Value = c.DateChange; DaysToSkip.Value = c.DaysToSkip; ReturnHome.Value = c.ReturnHomeDelay; ReturnGame.Value = c.ReturnGameDelay; BaseDelay.Value = c.BaseDelay; SaveGameDelay.Value = c.SaveGameDelay; SystemReset.Value = c.SystemReset; RelaunchDelay.Value = c.RelaunchDelay; ExtraOverworldWait.Value = c.ExtraOverworldWait; PaldeaScanCheck.Checked = c.PaldeaScan; KitakamiScanCheck.Checked = c.KitakamiScan; BlueberryScanCheck.Checked = c.BlueberryScan; SystemDDownPresses.Enabled = !UseOvershoot.Checked; SystemOvershoot.Enabled = UseOvershoot.Checked; SaveGameDelay.Enabled = SaveGame.Checked; IVstyle.SelectedIndex = c.IVsStyle; IVverbose.Checked = c.VerboseIVs; denToggle.Checked = c.ToggleDen; EnableEmoji.Checked = c.EnableEmoji; ExperimentalView.Checked = c.StreamerView; labelAppVersion.Text = "v" + v.Major + "." + v.Minor + "." + v.Build + "-" + shaField?.GetValue(null); labelAppVersion.Left = (tabAbout.Width - labelAppVersion.Width) / 2; labelAppName.Left = ((tabAbout.Width - labelAppName.Width) / 2) + (picAppIcon.Width / 2) + 2; picAppIcon.Left = labelAppName.Left - picAppIcon.Width - 2; linkLabel1.Left = (tabAbout.Width - linkLabel1.Width) / 2; labelWebhooks.Text = "Webhooks are " + (DiscordWebhook.Enabled ? "enabled." : "disabled."); } private void EnableAlert_CheckedChanged(object sender, EventArgs e) { AlertMessage.Enabled = EnableAlert.Checked; } private void EnableDiscordNotifications_Click(object sender, EventArgs e) { DiscordWebhook.Enabled = EnableDiscordNotifications.Checked; DiscordMessageContent.Enabled = EnableDiscordNotifications.Checked; labelWebhooks.Text = "Webhooks are " + (DiscordWebhook.Enabled ? "enabled." : "disabled."); } private void Config_Closing(object sender, EventArgs e) { c.InstanceName = InstanceName.Text; c.PlaySound = PlayTone.Checked; c.FocusWindow = FocusWindow.Checked; c.EnableAlertWindow = EnableAlert.Checked; c.AlertWindowMessage = AlertMessage.Text; c.EnableNotification = EnableDiscordNotifications.Checked; c.DiscordWebhook = DiscordWebhook.Text; c.DiscordMessageContent = DiscordMessageContent.Text; c.ZyroMethod = ZyroMethod.Checked; c.UseTouch = UseTouch.Checked; c.UseOvershoot = UseOvershoot.Checked; c.SaveOnMatch = SaveGame.Checked; c.DodgeSystemUpdate = DodgeSystemUpdate.Checked; c.UseSetStick = UseSetStick.Checked; c.UseMapTrick = UseMapTrick.Checked; c.OpenHomeDelay = (int)OpenHome.Value; c.NavigateToSettingsDelay = (int)NavigateToSettings.Value; c.OpenSettingsDelay = (int)OpenSettings.Value; c.HoldDuration = (int)Hold.Value; c.SystemDownPresses = (int)SystemDDownPresses.Value; c.SystemOvershoot = (int)SystemOvershoot.Value; c.SystemReset = (int)SystemReset.Value; c.Submenu = (int)Submenu.Value; c.DateChange = (int)DateChange.Value; c.DaysToSkip = (int)DaysToSkip.Value; c.ReturnHomeDelay = (int)ReturnHome.Value; c.ReturnGameDelay = (int)ReturnGame.Value; c.BaseDelay = (int)BaseDelay.Value; c.SaveGameDelay = (int)SaveGameDelay.Value; c.RelaunchDelay = (int)RelaunchDelay.Value; c.ExtraOverworldWait = (int)ExtraOverworldWait.Value; c.PaldeaScan = PaldeaScanCheck.Checked; c.KitakamiScan = KitakamiScanCheck.Checked; c.BlueberryScan = BlueberryScanCheck.Checked; c.IVsStyle = IVstyle.SelectedIndex; c.VerboseIVs = IVverbose.Checked; c.EnableEmoji = EnableEmoji.Checked; c.ToggleDen = denToggle.Checked; c.StreamerView = ExperimentalView.Checked; c.Protocol = (SysBot.Base.SwitchProtocol)Protocol_dropdown.SelectedIndex; string output = JsonSerializer.Serialize(c, Options); using StreamWriter sw = new(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json")); sw.Write(output); } private static readonly JsonSerializerOptions Options = new() { WriteIndented = true }; private void UseOvershoot_CheckedChanged(object sender, EventArgs e) { SystemDDownPresses.Enabled = !UseOvershoot.Checked; SystemOvershoot.Enabled = UseOvershoot.Checked; } private void UseSetStick_CheckedChanged(object sender, EventArgs e) { UseSetStick.Enabled = !UseSetStick.Checked; } private void SaveGame_CheckedChanged(object sender, EventArgs e) { SaveGameDelay.Enabled = SaveGame.Checked; } private void BtnTestWebHook_Click(object sender, EventArgs e) { c.InstanceName = InstanceName.Text; c.DiscordMessageContent = DiscordMessageContent.Text; c.IVsStyle = IVstyle.SelectedIndex; c.VerboseIVs = IVverbose.Checked; c.EnableEmoji = EnableEmoji.Checked; c.ToggleDen = denToggle.Checked; var mainForm = Application.OpenForms.OfType().Single(); mainForm.TestWebhook(); } private void LinkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start( new System.Diagnostics.ProcessStartInfo(((LinkLabel)sender).Text) { UseShellExecute = true, } ); } private void Game_SelectedIndexChanged(object sender, EventArgs e) { var game = (string)Game.SelectedItem!; var mainForm = Application.OpenForms.OfType().Single(); mainForm.Game_SelectedIndexChanged(game); } private void EmojiConfig_Click(object sender, EventArgs e) { EmojiConfig config = new(c); if (config.ShowDialog() == DialogResult.OK) config.Show(); } private void Protocol_Changed(object sender, EventArgs e) { c.Protocol = (SysBot.Base.SwitchProtocol)Protocol_dropdown.SelectedIndex; var mainForm = Application.OpenForms.OfType().Single(); mainForm.Protocol_SelectedIndexChanged(c.Protocol); } private void StreamerView_Clicked(object sender, EventArgs e) { c.StreamerView = ExperimentalView.Checked; var mainForm = Application.OpenForms.OfType().Single(); mainForm.ToggleStreamerView(); } } ================================================ FILE: RaidCrawler.WinForms/SubForms/ConfigWindow.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 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 xE0QOO7fnUIZ1e1cKGIAAAAASUVORK5CYII= ================================================ FILE: RaidCrawler.WinForms/SubForms/EmojiConfig.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class EmojiConfig { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.EmojiGrid = new System.Windows.Forms.DataGridView(); ((System.ComponentModel.ISupportInitialize)(this.EmojiGrid)).BeginInit(); this.SuspendLayout(); // // EmojiGrid // this.EmojiGrid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; this.EmojiGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.EmojiGrid.Dock = System.Windows.Forms.DockStyle.Fill; this.EmojiGrid.Location = new System.Drawing.Point(0, 0); this.EmojiGrid.Name = "EmojiGrid"; this.EmojiGrid.RowTemplate.Height = 25; this.EmojiGrid.Size = new System.Drawing.Size(374, 450); this.EmojiGrid.TabIndex = 0; this.EmojiGrid.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.EmojiGrid_Changed); // // EmojiConfig // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(374, 450); this.Controls.Add(this.EmojiGrid); this.Name = "EmojiConfig"; this.ShowIcon = false; this.Text = "EmojiConfig"; ((System.ComponentModel.ISupportInitialize)(this.EmojiGrid)).EndInit(); this.ResumeLayout(false); } #endregion private DataGridView EmojiGrid; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/EmojiConfig.cs ================================================ using System.Data; namespace RaidCrawler.WinForms.SubForms; public partial class EmojiConfig : Form { private readonly ClientConfig c; public EmojiConfig(ClientConfig c) { this.c = c; InitializeComponent(); EmojiGrid.DataSource = EmojiLoad(c.Emoji); } private static DataTable EmojiLoad(Dictionary emoji) { DataTable dt = new(); dt.Columns.Add("Emoji", typeof(string)); dt.Columns.Add("Emoji Value", typeof(string)); emoji.ToList().ForEach(kvp => dt.Rows.Add(kvp.Key, kvp.Value)); dt.Columns[0].ReadOnly = true; return dt; } private void EmojiGrid_Changed(object sender, EventArgs e) { var dict = new Dictionary(); var dt = (DataTable)EmojiGrid.DataSource!; dt.AsEnumerable().ToList().ForEach(row => dict.Add((string)row[0], (string)row[1])); c.Emoji = dict; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/EmojiConfig.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 ================================================ FILE: RaidCrawler.WinForms/SubForms/FilterSettings.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class FilterSettings { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FilterSettings)); Species = new ComboBox(); SpeciesCheck = new CheckBox(); Form = new NumericUpDown(); FormCheck = new CheckBox(); NatureCheck = new CheckBox(); Nature = new ComboBox(); StarCheck = new CheckBox(); Stars = new ComboBox(); ShinyCheck = new CheckBox(); Add = new Button(); PerfectIVFilterGroup = new GroupBox(); SpeComp = new ComboBox(); SpaComp = new ComboBox(); SpdComp = new ComboBox(); DefComp = new ComboBox(); AtkComp = new ComboBox(); HPComp = new ComboBox(); IVSPE = new NumericUpDown(); IVSPD = new NumericUpDown(); IVSPA = new NumericUpDown(); IVDEF = new NumericUpDown(); IVATK = new NumericUpDown(); IVHP = new NumericUpDown(); Spe = new CheckBox(); SpD = new CheckBox(); SpA = new CheckBox(); Def = new CheckBox(); Atk = new CheckBox(); HP = new CheckBox(); TeraCheck = new CheckBox(); TeraType = new ComboBox(); ActiveFilters = new CheckedListBox(); FilterName = new TextBox(); label1 = new Label(); Remove = new Button(); StarsComp = new ComboBox(); RewardsComp = new ComboBox(); CheckRewards = new CheckBox(); Rewards = new TextBox(); label2 = new Label(); RewardsCount = new NumericUpDown(); ButtonOpenRewardsList = new Button(); GenderCheck = new CheckBox(); Gender = new ComboBox(); LabelBatchFilters = new Label(); BatchFilters = new TextBox(); SquareCheck = new CheckBox(); Tooltip = new ToolTip(components); ECCheck = new CheckBox(); ((System.ComponentModel.ISupportInitialize)Form).BeginInit(); PerfectIVFilterGroup.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)IVSPE).BeginInit(); ((System.ComponentModel.ISupportInitialize)IVSPD).BeginInit(); ((System.ComponentModel.ISupportInitialize)IVSPA).BeginInit(); ((System.ComponentModel.ISupportInitialize)IVDEF).BeginInit(); ((System.ComponentModel.ISupportInitialize)IVATK).BeginInit(); ((System.ComponentModel.ISupportInitialize)IVHP).BeginInit(); ((System.ComponentModel.ISupportInitialize)RewardsCount).BeginInit(); SuspendLayout(); // // Species // Species.AutoCompleteMode = AutoCompleteMode.SuggestAppend; Species.AutoCompleteSource = AutoCompleteSource.ListItems; Species.Enabled = false; Species.FormattingEnabled = true; Species.Location = new Point(104, 55); Species.Name = "Species"; Species.Size = new Size(178, 23); Species.TabIndex = 0; // // SpeciesCheck // SpeciesCheck.AutoSize = true; SpeciesCheck.Location = new Point(15, 57); SpeciesCheck.Name = "SpeciesCheck"; SpeciesCheck.Size = new Size(65, 19); SpeciesCheck.TabIndex = 1; SpeciesCheck.Text = "Species"; SpeciesCheck.UseVisualStyleBackColor = true; SpeciesCheck.CheckedChanged += SpeciesCheck_CheckedChanged; // // Form // Form.Enabled = false; Form.Location = new Point(104, 82); Form.Name = "Form"; Form.Size = new Size(178, 23); Form.TabIndex = 0; // // FormCheck // FormCheck.AutoSize = true; FormCheck.Location = new Point(15, 84); FormCheck.Name = "FormCheck"; FormCheck.Size = new Size(54, 19); FormCheck.TabIndex = 1; FormCheck.Text = "Form"; FormCheck.UseVisualStyleBackColor = true; FormCheck.CheckedChanged += FormCheck_CheckedChanged; // // NatureCheck // NatureCheck.AutoSize = true; NatureCheck.Location = new Point(15, 113); NatureCheck.Name = "NatureCheck"; NatureCheck.Size = new Size(62, 19); NatureCheck.TabIndex = 3; NatureCheck.Text = "Nature"; NatureCheck.UseVisualStyleBackColor = true; NatureCheck.CheckedChanged += NatureCheck_CheckedChanged; // // Nature // Nature.AutoCompleteMode = AutoCompleteMode.SuggestAppend; Nature.AutoCompleteSource = AutoCompleteSource.ListItems; Nature.Enabled = false; Nature.FormattingEnabled = true; Nature.Location = new Point(104, 111); Nature.Name = "Nature"; Nature.Size = new Size(178, 23); Nature.TabIndex = 2; // // StarCheck // StarCheck.AutoSize = true; StarCheck.Location = new Point(15, 142); StarCheck.Name = "StarCheck"; StarCheck.Size = new Size(51, 19); StarCheck.TabIndex = 5; StarCheck.Text = "Stars"; StarCheck.UseVisualStyleBackColor = true; StarCheck.CheckedChanged += StarCheck_CheckedChanged; // // Stars // Stars.Enabled = false; Stars.FormattingEnabled = true; Stars.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7" }); Stars.Location = new Point(104, 140); Stars.Name = "Stars"; Stars.Size = new Size(119, 23); Stars.TabIndex = 4; // // ShinyCheck // ShinyCheck.AutoSize = true; ShinyCheck.Location = new Point(15, 285); ShinyCheck.Name = "ShinyCheck"; ShinyCheck.Size = new Size(60, 19); ShinyCheck.TabIndex = 6; ShinyCheck.Text = "Shiny?"; ShinyCheck.UseVisualStyleBackColor = true; ShinyCheck.CheckedChanged += ShinyCheck_CheckedChanged; // // Add // Add.Location = new Point(12, 440); Add.Name = "Add"; Add.Size = new Size(132, 23); Add.TabIndex = 9; Add.Text = "Add Filter"; Add.UseVisualStyleBackColor = true; Add.Click += Add_Filter_Click; // // PerfectIVFilterGroup // PerfectIVFilterGroup.Controls.Add(SpeComp); PerfectIVFilterGroup.Controls.Add(SpaComp); PerfectIVFilterGroup.Controls.Add(SpdComp); PerfectIVFilterGroup.Controls.Add(DefComp); PerfectIVFilterGroup.Controls.Add(AtkComp); PerfectIVFilterGroup.Controls.Add(HPComp); PerfectIVFilterGroup.Controls.Add(IVSPE); PerfectIVFilterGroup.Controls.Add(IVSPD); PerfectIVFilterGroup.Controls.Add(IVSPA); PerfectIVFilterGroup.Controls.Add(IVDEF); PerfectIVFilterGroup.Controls.Add(IVATK); PerfectIVFilterGroup.Controls.Add(IVHP); PerfectIVFilterGroup.Controls.Add(Spe); PerfectIVFilterGroup.Controls.Add(SpD); PerfectIVFilterGroup.Controls.Add(SpA); PerfectIVFilterGroup.Controls.Add(Def); PerfectIVFilterGroup.Controls.Add(Atk); PerfectIVFilterGroup.Controls.Add(HP); PerfectIVFilterGroup.Location = new Point(12, 310); PerfectIVFilterGroup.Name = "PerfectIVFilterGroup"; PerfectIVFilterGroup.Size = new Size(270, 124); PerfectIVFilterGroup.TabIndex = 10; PerfectIVFilterGroup.TabStop = false; PerfectIVFilterGroup.Text = "IV Filters"; // // SpeComp // SpeComp.DropDownStyle = ComboBoxStyle.DropDownList; SpeComp.Enabled = false; SpeComp.FormattingEnabled = true; SpeComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); SpeComp.Location = new Point(228, 54); SpeComp.Name = "SpeComp"; SpeComp.Size = new Size(39, 23); SpeComp.TabIndex = 17; // // SpaComp // SpaComp.DropDownStyle = ComboBoxStyle.DropDownList; SpaComp.Enabled = false; SpaComp.FormattingEnabled = true; SpaComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); SpaComp.Location = new Point(138, 54); SpaComp.Name = "SpaComp"; SpaComp.Size = new Size(39, 23); SpaComp.TabIndex = 15; // // SpdComp // SpdComp.DropDownStyle = ComboBoxStyle.DropDownList; SpdComp.Enabled = false; SpdComp.FormattingEnabled = true; SpdComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); SpdComp.Location = new Point(183, 54); SpdComp.Name = "SpdComp"; SpdComp.Size = new Size(39, 23); SpdComp.TabIndex = 16; // // DefComp // DefComp.DropDownStyle = ComboBoxStyle.DropDownList; DefComp.Enabled = false; DefComp.FormattingEnabled = true; DefComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); DefComp.Location = new Point(93, 54); DefComp.Name = "DefComp"; DefComp.Size = new Size(39, 23); DefComp.TabIndex = 14; // // AtkComp // AtkComp.DropDownStyle = ComboBoxStyle.DropDownList; AtkComp.Enabled = false; AtkComp.FormattingEnabled = true; AtkComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); AtkComp.Location = new Point(48, 54); AtkComp.Name = "AtkComp"; AtkComp.Size = new Size(39, 23); AtkComp.TabIndex = 13; // // HPComp // HPComp.DropDownStyle = ComboBoxStyle.DropDownList; HPComp.Enabled = false; HPComp.FormattingEnabled = true; HPComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); HPComp.Location = new Point(3, 54); HPComp.Name = "HPComp"; HPComp.Size = new Size(39, 23); HPComp.TabIndex = 12; // // IVSPE // IVSPE.Enabled = false; IVSPE.Location = new Point(228, 22); IVSPE.Maximum = new decimal(new int[] { 31, 0, 0, 0 }); IVSPE.Name = "IVSPE"; IVSPE.Size = new Size(39, 23); IVSPE.TabIndex = 11; IVSPE.Value = new decimal(new int[] { 31, 0, 0, 0 }); // // IVSPD // IVSPD.Enabled = false; IVSPD.Location = new Point(183, 22); IVSPD.Maximum = new decimal(new int[] { 31, 0, 0, 0 }); IVSPD.Name = "IVSPD"; IVSPD.Size = new Size(39, 23); IVSPD.TabIndex = 10; IVSPD.Value = new decimal(new int[] { 31, 0, 0, 0 }); // // IVSPA // IVSPA.Enabled = false; IVSPA.Location = new Point(138, 22); IVSPA.Maximum = new decimal(new int[] { 31, 0, 0, 0 }); IVSPA.Name = "IVSPA"; IVSPA.Size = new Size(39, 23); IVSPA.TabIndex = 9; IVSPA.Value = new decimal(new int[] { 31, 0, 0, 0 }); // // IVDEF // IVDEF.Enabled = false; IVDEF.Location = new Point(93, 22); IVDEF.Maximum = new decimal(new int[] { 31, 0, 0, 0 }); IVDEF.Name = "IVDEF"; IVDEF.Size = new Size(39, 23); IVDEF.TabIndex = 8; IVDEF.Value = new decimal(new int[] { 31, 0, 0, 0 }); // // IVATK // IVATK.Enabled = false; IVATK.Location = new Point(48, 22); IVATK.Maximum = new decimal(new int[] { 31, 0, 0, 0 }); IVATK.Name = "IVATK"; IVATK.Size = new Size(39, 23); IVATK.TabIndex = 7; IVATK.Value = new decimal(new int[] { 31, 0, 0, 0 }); // // IVHP // IVHP.Enabled = false; IVHP.Location = new Point(3, 22); IVHP.Maximum = new decimal(new int[] { 31, 0, 0, 0 }); IVHP.Name = "IVHP"; IVHP.Size = new Size(39, 23); IVHP.TabIndex = 6; IVHP.Value = new decimal(new int[] { 31, 0, 0, 0 }); // // Spe // Spe.AutoSize = true; Spe.CheckAlign = ContentAlignment.TopCenter; Spe.Location = new Point(233, 83); Spe.Name = "Spe"; Spe.Size = new Size(30, 33); Spe.TabIndex = 5; Spe.Text = "Spe"; Spe.TextAlign = ContentAlignment.MiddleCenter; Spe.UseVisualStyleBackColor = true; Spe.CheckedChanged += Spe_CheckedChanged; // // SpD // SpD.AutoSize = true; SpD.CheckAlign = ContentAlignment.TopCenter; SpD.Location = new Point(187, 83); SpD.Name = "SpD"; SpD.Size = new Size(32, 33); SpD.TabIndex = 4; SpD.Text = "SpD"; SpD.TextAlign = ContentAlignment.MiddleCenter; SpD.UseVisualStyleBackColor = true; SpD.CheckedChanged += SpD_CheckedChanged; // // SpA // SpA.AutoSize = true; SpA.CheckAlign = ContentAlignment.TopCenter; SpA.Location = new Point(142, 83); SpA.Name = "SpA"; SpA.Size = new Size(32, 33); SpA.TabIndex = 3; SpA.Text = "SpA"; SpA.TextAlign = ContentAlignment.MiddleCenter; SpA.UseVisualStyleBackColor = true; SpA.CheckedChanged += SpA_CheckedChanged; // // Def // Def.AutoSize = true; Def.CheckAlign = ContentAlignment.TopCenter; Def.Location = new Point(99, 83); Def.Name = "Def"; Def.Size = new Size(29, 33); Def.TabIndex = 2; Def.Text = "Def"; Def.TextAlign = ContentAlignment.MiddleCenter; Def.UseVisualStyleBackColor = true; Def.CheckedChanged += Def_CheckedChanged; // // Atk // Atk.AutoSize = true; Atk.CheckAlign = ContentAlignment.TopCenter; Atk.Location = new Point(54, 84); Atk.Name = "Atk"; Atk.Size = new Size(29, 33); Atk.TabIndex = 1; Atk.Text = "Atk"; Atk.TextAlign = ContentAlignment.MiddleCenter; Atk.UseVisualStyleBackColor = true; Atk.CheckedChanged += Atk_CheckedChanged; // // HP // HP.AutoSize = true; HP.CheckAlign = ContentAlignment.TopCenter; HP.Location = new Point(10, 84); HP.Name = "HP"; HP.Size = new Size(27, 33); HP.TabIndex = 0; HP.Text = "HP"; HP.TextAlign = ContentAlignment.MiddleCenter; HP.UseVisualStyleBackColor = true; HP.CheckedChanged += HP_CheckedChanged; // // TeraCheck // TeraCheck.AutoSize = true; TeraCheck.Location = new Point(15, 171); TeraCheck.Name = "TeraCheck"; TeraCheck.Size = new Size(74, 19); TeraCheck.TabIndex = 18; TeraCheck.Text = "Tera Type"; TeraCheck.UseVisualStyleBackColor = true; TeraCheck.CheckedChanged += TeraCheck_CheckedChanged; // // TeraType // TeraType.AutoCompleteMode = AutoCompleteMode.SuggestAppend; TeraType.AutoCompleteSource = AutoCompleteSource.ListItems; TeraType.Enabled = false; TeraType.FormattingEnabled = true; TeraType.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7" }); TeraType.Location = new Point(104, 169); TeraType.Name = "TeraType"; TeraType.Size = new Size(178, 23); TeraType.TabIndex = 17; // // ActiveFilters // ActiveFilters.FormattingEnabled = true; ActiveFilters.Location = new Point(305, 23); ActiveFilters.Name = "ActiveFilters"; ActiveFilters.Size = new Size(185, 256); ActiveFilters.TabIndex = 20; ActiveFilters.ItemCheck += ActiveFilters_ItemCheck; ActiveFilters.DrawItem += ActiveFilters_DrawItem; ActiveFilters.SelectedIndexChanged += ActiveFilters_SelectedIndexChanged; // // FilterName // FilterName.BorderStyle = BorderStyle.FixedSingle; FilterName.Location = new Point(57, 23); FilterName.Name = "FilterName"; FilterName.Size = new Size(225, 23); FilterName.TabIndex = 21; FilterName.TextChanged += FilterName_TextChanged; // // label1 // label1.AutoSize = true; label1.Location = new Point(12, 26); label1.Name = "label1"; label1.Size = new Size(39, 15); label1.TabIndex = 22; label1.Text = "Name"; // // Remove // Remove.Location = new Point(150, 439); Remove.Name = "Remove"; Remove.Size = new Size(132, 23); Remove.TabIndex = 23; Remove.Text = "Remove Filter"; Remove.UseVisualStyleBackColor = true; Remove.Click += Remove_Click; // // StarsComp // StarsComp.DropDownStyle = ComboBoxStyle.DropDownList; StarsComp.Enabled = false; StarsComp.FormattingEnabled = true; StarsComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); StarsComp.Location = new Point(229, 140); StarsComp.Name = "StarsComp"; StarsComp.Size = new Size(53, 23); StarsComp.TabIndex = 18; // // RewardsComp // RewardsComp.DropDownStyle = ComboBoxStyle.DropDownList; RewardsComp.Enabled = false; RewardsComp.FormattingEnabled = true; RewardsComp.IntegralHeight = false; RewardsComp.Items.AddRange(new object[] { "=", ">", ">=", "<=", "<" }); RewardsComp.Location = new Point(229, 256); RewardsComp.Name = "RewardsComp"; RewardsComp.Size = new Size(53, 23); RewardsComp.TabIndex = 27; // // CheckRewards // CheckRewards.AutoSize = true; CheckRewards.Location = new Point(15, 229); CheckRewards.Name = "CheckRewards"; CheckRewards.Size = new Size(70, 19); CheckRewards.TabIndex = 26; CheckRewards.Text = "Rewards"; CheckRewards.UseVisualStyleBackColor = true; CheckRewards.CheckedChanged += CheckRewards_CheckedChanged; // // Rewards // Rewards.Enabled = false; Rewards.Location = new Point(104, 227); Rewards.Name = "Rewards"; Rewards.Size = new Size(153, 23); Rewards.TabIndex = 28; Rewards.Text = "645,795,1606,1904,1905,1906,1907,1908"; // // label2 // label2.AutoSize = true; label2.Location = new Point(14, 259); label2.Name = "label2"; label2.Size = new Size(82, 15); label2.TabIndex = 29; label2.Text = "Reward Count"; // // RewardsCount // RewardsCount.Enabled = false; RewardsCount.Location = new Point(104, 256); RewardsCount.Maximum = new decimal(new int[] { 12, 0, 0, 0 }); RewardsCount.Name = "RewardsCount"; RewardsCount.Size = new Size(119, 23); RewardsCount.TabIndex = 30; // // ButtonOpenRewardsList // ButtonOpenRewardsList.Location = new Point(263, 227); ButtonOpenRewardsList.Name = "ButtonOpenRewardsList"; ButtonOpenRewardsList.Size = new Size(19, 23); ButtonOpenRewardsList.TabIndex = 31; ButtonOpenRewardsList.Text = "?"; ButtonOpenRewardsList.UseVisualStyleBackColor = true; ButtonOpenRewardsList.Click += ButtonOpenRewardsList_Click; // // GenderCheck // GenderCheck.AutoSize = true; GenderCheck.Location = new Point(15, 200); GenderCheck.Name = "GenderCheck"; GenderCheck.Size = new Size(64, 19); GenderCheck.TabIndex = 33; GenderCheck.Text = "Gender"; GenderCheck.UseVisualStyleBackColor = true; GenderCheck.CheckedChanged += GenderCheck_CheckedChanged; // // Gender // Gender.AutoCompleteMode = AutoCompleteMode.SuggestAppend; Gender.AutoCompleteSource = AutoCompleteSource.ListItems; Gender.Enabled = false; Gender.FormattingEnabled = true; Gender.Items.AddRange(new object[] { "Male", "Female", "Genderless" }); Gender.Location = new Point(104, 198); Gender.Name = "Gender"; Gender.Size = new Size(178, 23); Gender.TabIndex = 32; // // LabelBatchFilters // LabelBatchFilters.AutoSize = true; LabelBatchFilters.Location = new Point(305, 285); LabelBatchFilters.Name = "LabelBatchFilters"; LabelBatchFilters.Size = new Size(71, 15); LabelBatchFilters.TabIndex = 34; LabelBatchFilters.Text = "Batch Filters"; // // BatchFilters // BatchFilters.BorderStyle = BorderStyle.FixedSingle; BatchFilters.Location = new Point(305, 305); BatchFilters.Multiline = true; BatchFilters.Name = "BatchFilters"; BatchFilters.Size = new Size(185, 157); BatchFilters.TabIndex = 35; // // SquareCheck // SquareCheck.AutoSize = true; SquareCheck.Location = new Point(104, 285); SquareCheck.Name = "SquareCheck"; SquareCheck.Size = new Size(69, 19); SquareCheck.TabIndex = 36; SquareCheck.Text = "XOR = 0"; Tooltip.SetToolTip(SquareCheck, "If checked, only stop on \"Square\" shinies.\r\nThere is no display difference for these in SV, but they will appear\r\nas Square shiny in SwSh or any future game that supports them."); SquareCheck.UseVisualStyleBackColor = true; // // ECCheck // ECCheck.AutoSize = true; ECCheck.Location = new Point(188, 285); ECCheck.Name = "ECCheck"; ECCheck.Size = new Size(94, 19); ECCheck.TabIndex = 37; ECCheck.Text = "EC % 100 = 0"; Tooltip.SetToolTip(ECCheck, resources.GetString("ECCheck.ToolTip")); ECCheck.UseVisualStyleBackColor = true; // // FilterSettings // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(502, 474); Controls.Add(ECCheck); Controls.Add(SquareCheck); Controls.Add(BatchFilters); Controls.Add(LabelBatchFilters); Controls.Add(GenderCheck); Controls.Add(Gender); Controls.Add(ButtonOpenRewardsList); Controls.Add(RewardsCount); Controls.Add(label2); Controls.Add(Rewards); Controls.Add(RewardsComp); Controls.Add(CheckRewards); Controls.Add(StarsComp); Controls.Add(Remove); Controls.Add(label1); Controls.Add(FilterName); Controls.Add(ActiveFilters); Controls.Add(TeraCheck); Controls.Add(TeraType); Controls.Add(PerfectIVFilterGroup); Controls.Add(Add); Controls.Add(ShinyCheck); Controls.Add(StarCheck); Controls.Add(Stars); Controls.Add(NatureCheck); Controls.Add(Nature); Controls.Add(FormCheck); Controls.Add(Form); Controls.Add(SpeciesCheck); Controls.Add(Species); FormBorderStyle = FormBorderStyle.FixedDialog; MaximizeBox = false; MinimizeBox = false; Name = "FilterSettings"; StartPosition = FormStartPosition.CenterParent; Text = "FilterSettings"; FormClosing += FilterSettings_FormClosing; ((System.ComponentModel.ISupportInitialize)Form).EndInit(); PerfectIVFilterGroup.ResumeLayout(false); PerfectIVFilterGroup.PerformLayout(); ((System.ComponentModel.ISupportInitialize)IVSPE).EndInit(); ((System.ComponentModel.ISupportInitialize)IVSPD).EndInit(); ((System.ComponentModel.ISupportInitialize)IVSPA).EndInit(); ((System.ComponentModel.ISupportInitialize)IVDEF).EndInit(); ((System.ComponentModel.ISupportInitialize)IVATK).EndInit(); ((System.ComponentModel.ISupportInitialize)IVHP).EndInit(); ((System.ComponentModel.ISupportInitialize)RewardsCount).EndInit(); ResumeLayout(false); PerformLayout(); } #endregion private ComboBox Species; private CheckBox SpeciesCheck; private NumericUpDown Form; private CheckBox FormCheck; private CheckBox NatureCheck; private ComboBox Nature; private CheckBox StarCheck; private ComboBox Stars; private CheckBox ShinyCheck; private Button Add; private GroupBox PerfectIVFilterGroup; private CheckBox Spe; private CheckBox SpD; private CheckBox SpA; private CheckBox Def; private CheckBox Atk; private CheckBox HP; private NumericUpDown IVSPE; private NumericUpDown IVSPD; private NumericUpDown IVSPA; private NumericUpDown IVDEF; private NumericUpDown IVATK; private NumericUpDown IVHP; private CheckBox TeraCheck; private ComboBox TeraType; private CheckedListBox ActiveFilters; private TextBox FilterName; private Label label1; private Button Remove; private ComboBox HPComp; private ComboBox SpeComp; private ComboBox SpaComp; private ComboBox SpdComp; private ComboBox DefComp; private ComboBox AtkComp; private ComboBox StarsComp; private ComboBox RewardsComp; private CheckBox CheckRewards; private TextBox Rewards; private Label label2; private NumericUpDown RewardsCount; private Button ButtonOpenRewardsList; private CheckBox GenderCheck; private ComboBox Gender; private Label LabelBatchFilters; private TextBox BatchFilters; private CheckBox SquareCheck; private ToolTip Tooltip; private CheckBox ECCheck; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/FilterSettings.cs ================================================ using PKHeX.Core; using RaidCrawler.Core.Structures; using System.Text.Json; namespace RaidCrawler.WinForms.SubForms; public partial class FilterSettings : Form { private readonly List filters; private readonly BindingSource bs = []; public FilterSettings(ref List filters) { InitializeComponent(); this.filters = filters; Species.DataSource = Enum.GetValues() .Where(z => z != PKHeX.Core.Species.MAX_COUNT) .ToArray(); Nature.DataSource = Enum.GetValues(); TeraType.DataSource = Enum.GetValues() .Where(z => z != MoveType.Any) .ToArray(); Stars.SelectedIndex = 0; StarsComp.SelectedIndex = 0; HPComp.SelectedIndex = 0; AtkComp.SelectedIndex = 0; DefComp.SelectedIndex = 0; SpaComp.SelectedIndex = 0; SpdComp.SelectedIndex = 0; SpeComp.SelectedIndex = 0; ResetActiveFilters(); if (ActiveFilters.Items.Count > 0) ActiveFilters.SelectedIndex = 0; if (ActiveFilters.SelectedIndex == -1) Remove.Enabled = false; } public void ResetActiveFilters() { if (bs.DataSource == null) { bs.DataSource = filters; ActiveFilters.DataSource = bs; ActiveFilters.DisplayMember = "Name"; } else { bs.ResetBindings(false); } for (int i = 0; i < filters.Count; i++) ActiveFilters.SetItemChecked(i, filters[i].Enabled); } public void SelectFilter(RaidFilter filter) { FilterName.Text = filter.Name; Species.SelectedIndex = filter.Species ?? 0; Form.Value = filter.Form ?? 0; Nature.SelectedIndex = filter.Nature ?? 0; Stars.SelectedIndex = filter.Stars != null ? (int)filter.Stars - 1 : 0; StarsComp.SelectedIndex = filter.StarsComp; TeraType.SelectedIndex = filter.TeraType ?? 0; Gender.SelectedIndex = filter.Gender ?? 0; SpeciesCheck.Checked = filter.Species != null; FormCheck.Checked = filter.Form != null; NatureCheck.Checked = filter.Nature != null; StarCheck.Checked = filter.Stars != null; TeraCheck.Checked = filter.TeraType != null; GenderCheck.Checked = filter.Gender != null; ShinyCheck.Checked = filter.Shiny; SquareCheck.Checked = filter.Square; ECCheck.Checked = filter.RareEC; CheckRewards.Checked = filter is { RewardItems: not null, RewardsCount: > 0 }; Rewards.Text = filter.RewardItems != null ? string.Join(",", filter.RewardItems.Select(x => x.ToString()).ToArray()) : "645,795,1606,1904,1905,1906,1907,1908"; RewardsComp.SelectedIndex = filter.RewardsComp; RewardsCount.Value = filter.RewardsCount; BatchFilters.Text = filter.BatchFilters != null ? string.Join(Environment.NewLine, filter.BatchFilters) : string.Empty; var ivbin = filter.IVBin; HP.Checked = (ivbin & 1) == 1; Atk.Checked = ((ivbin >> 1) & 1) == 1; Def.Checked = ((ivbin >> 2) & 1) == 1; SpA.Checked = ((ivbin >> 3) & 1) == 1; SpD.Checked = ((ivbin >> 4) & 1) == 1; Spe.Checked = ((ivbin >> 5) & 1) == 1; var ivvals = filter.IVVals; IVHP.Value = ivvals & 31; IVATK.Value = (ivvals >> 5) & 31; IVDEF.Value = (ivvals >> 10) & 31; IVSPA.Value = (ivvals >> 15) & 31; IVSPD.Value = (ivvals >> 20) & 31; IVSPE.Value = (ivvals >> 25) & 31; var ivcomp = filter.IVComps; HPComp.SelectedIndex = (ivcomp & 7); AtkComp.SelectedIndex = (ivcomp >> 3) & 7; DefComp.SelectedIndex = (ivcomp >> 6) & 7; SpaComp.SelectedIndex = (ivcomp >> 9) & 7; SpdComp.SelectedIndex = (ivcomp >> 12) & 7; SpeComp.SelectedIndex = (ivcomp >> 15) & 7; IVHP.Enabled = HP.Checked; IVATK.Enabled = Atk.Checked; IVDEF.Enabled = Def.Checked; IVSPA.Enabled = SpA.Checked; IVSPD.Enabled = SpD.Checked; IVSPE.Enabled = Spe.Checked; HPComp.Enabled = HP.Checked; AtkComp.Enabled = Atk.Checked; DefComp.Enabled = Def.Checked; SpaComp.Enabled = SpA.Checked; SpdComp.Enabled = SpD.Checked; SpeComp.Enabled = Spe.Checked; Species.Enabled = SpeciesCheck.Checked; Nature.Enabled = NatureCheck.Checked; Stars.Enabled = StarCheck.Checked; StarsComp.Enabled = StarCheck.Checked; Rewards.Enabled = CheckRewards.Checked; ButtonOpenRewardsList.Enabled = CheckRewards.Checked; RewardsCount.Enabled = CheckRewards.Checked; RewardsComp.Enabled = CheckRewards.Checked; TeraType.Enabled = TeraCheck.Checked; Gender.Enabled = GenderCheck.Checked; } private void Add_Filter_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(FilterName.Text)) { MessageBox.Show("Name is a required field!"); return; } RaidFilter filter = new(); var ivbin = ToInt(HP.Checked) << 0 | ToInt(Atk.Checked) << 1 | ToInt(Def.Checked) << 2 | ToInt(SpA.Checked) << 3 | ToInt(SpD.Checked) << 4 | ToInt(Spe.Checked) << 5; var ivcomps = HPComp.SelectedIndex << 0 | AtkComp.SelectedIndex << 3 | DefComp.SelectedIndex << 6 | SpaComp.SelectedIndex << 9 | SpdComp.SelectedIndex << 12 | SpeComp.SelectedIndex << 15; var ivvals = (int)IVHP.Value << 0 | (int)IVATK.Value << 5 | (int)IVDEF.Value << 10 | (int)IVSPA.Value << 15 | (int)IVSPD.Value << 20 | (int)IVSPE.Value << 25; filter.Name = FilterName.Text.Trim(); filter.Species = SpeciesCheck.Checked ? Species.SelectedIndex : null; filter.Form = FormCheck.Checked ? (int)Form.Value : null; filter.Nature = NatureCheck.Checked ? Nature.SelectedIndex : null; filter.Stars = StarCheck.Checked ? Stars.SelectedIndex + 1 : null; filter.StarsComp = StarsComp.SelectedIndex; filter.TeraType = TeraCheck.Checked ? TeraType.SelectedIndex : null; filter.Gender = GenderCheck.Checked ? Gender.SelectedIndex : null; filter.Shiny = ShinyCheck.Checked; filter.Square = SquareCheck.Checked; filter.RareEC = ECCheck.Checked; filter.IVBin = ivbin; filter.IVVals = ivvals; filter.IVComps = ivcomps; filter.RewardItems = CheckRewards.Checked ? Rewards.Text .Split(',') .Where(z => int.TryParse(z.Trim(), out _)) .Select(z => int.Parse(z.Trim())) .ToArray() : null; filter.RewardsCount = (int)RewardsCount.Value; filter.RewardsComp = RewardsComp.SelectedIndex; filter.BatchFilters = string.IsNullOrWhiteSpace(BatchFilters.Text) ? null : BatchFilters.Text.Split(Environment.NewLine); filter.Enabled = true; if (filter.IsFilterSet()) { for (int i = 0; i < ActiveFilters.Items.Count; i++) { var f = filters[i]; if (f.Name != filter.Name) continue; filters.RemoveAt(i); break; } filters.Add(filter); ResetActiveFilters(); ActiveFilters.SelectedIndex = ActiveFilters.Items.Count - 1; } else { MessageBox.Show("You have not set any stop conditions. No filter will be added."); } } private static int ToInt(bool b) => b ? 1 : 0; private void SpeciesCheck_CheckedChanged(object sender, EventArgs e) { Species.Enabled = SpeciesCheck.Checked; } private void FormCheck_CheckedChanged(object sender, EventArgs e) { Form.Enabled = FormCheck.Checked; } private void NatureCheck_CheckedChanged(object sender, EventArgs e) { Nature.Enabled = NatureCheck.Checked; } private void StarCheck_CheckedChanged(object sender, EventArgs e) { Stars.Enabled = StarCheck.Checked; StarsComp.Enabled = StarCheck.Checked; } private void TeraCheck_CheckedChanged(object sender, EventArgs e) { TeraType.Enabled = TeraCheck.Checked; } private void GenderCheck_CheckedChanged(object sender, EventArgs e) { Gender.Enabled = GenderCheck.Checked; } private void HP_CheckedChanged(object sender, EventArgs e) { IVHP.Enabled = HP.Checked; HPComp.Enabled = HP.Checked; } private void Atk_CheckedChanged(object sender, EventArgs e) { IVATK.Enabled = Atk.Checked; AtkComp.Enabled = Atk.Checked; } private void Def_CheckedChanged(object sender, EventArgs e) { IVDEF.Enabled = Def.Checked; DefComp.Enabled = Def.Checked; } private void SpA_CheckedChanged(object sender, EventArgs e) { IVSPA.Enabled = SpA.Checked; SpaComp.Enabled = SpA.Checked; } private void SpD_CheckedChanged(object sender, EventArgs e) { IVSPD.Enabled = SpD.Checked; SpdComp.Enabled = SpD.Checked; } private void Spe_CheckedChanged(object sender, EventArgs e) { IVSPE.Enabled = Spe.Checked; SpeComp.Enabled = Spe.Checked; } private void FilterSettings_FormClosing(object sender, EventArgs e) { HashSet indexset = new(ActiveFilters.CheckedIndices.Cast()); for (int i = 0; i < filters.Count; i++) filters[i].Enabled = indexset.Contains(i); string output = JsonSerializer.Serialize(filters); using StreamWriter sw = new(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "filters.json")); sw.Write(output); } private void Remove_Click(object sender, EventArgs e) { if (ActiveFilters.Items.Count == 0 || ActiveFilters.SelectedIndex == -1) return; var idx = ActiveFilters.SelectedIndex; filters.RemoveAt(idx); ResetActiveFilters(); } private void ActiveFilters_SelectedIndexChanged(object sender, EventArgs e) { Remove.Enabled = ActiveFilters.SelectedIndex >= 0; if (ActiveFilters.SelectedIndex < 0) return; SelectFilter(filters[ActiveFilters.SelectedIndex]); } private void ActiveFilters_ItemCheck(object sender, ItemCheckEventArgs e) { filters[e.Index].Enabled = e.NewValue == CheckState.Checked; } private void FilterName_TextChanged(object sender, EventArgs e) { if (ActiveFilters.SelectedIndex > -1 && FilterName.Text == filters[ActiveFilters.SelectedIndex].Name) Add.Text = "Update Filter"; else Add.Text = "Add Filter"; } private void CheckRewards_CheckedChanged(object sender, EventArgs e) { Rewards.Enabled = CheckRewards.Checked; ButtonOpenRewardsList.Enabled = CheckRewards.Checked; RewardsComp.Enabled = CheckRewards.Checked; RewardsCount.Enabled = CheckRewards.Checked; } private void ButtonOpenRewardsList_Click(object sender, EventArgs e) { List IDs = Rewards.Text.Split(',').Select(int.Parse).ToList(); using ItemIDs form = new(IDs); if (form.ShowDialog() != DialogResult.OK) return; List s = []; if (form.CheckAbilityCapsule.Checked) s.Add(645); if (form.CheckBottleCap.Checked) s.Add(795); if (form.CheckAbilityPatch.Checked) s.Add(1606); if (form.CheckSweet.Checked) s.Add(1904); if (form.CheckSalty.Checked) s.Add(1905); if (form.CheckSour.Checked) s.Add(1906); if (form.CheckBitter.Checked) s.Add(1907); if (form.CheckSpicy.Checked) s.Add(1908); Rewards.Text = string.Join(",", s); } private void ActiveFilters_DrawItem(object sender, DrawItemEventArgs e) { e.DrawBackground(); ListBox lb = (ListBox)sender; Graphics g = e.Graphics; RaidFilter filter = (RaidFilter)lb.Items[e.Index]; var highlight = (e.State & DrawItemState.Selected) == DrawItemState.Selected; var color = highlight ? ColorTranslator.FromHtml("#000078d7") : Color.White; var brush = new SolidBrush(color); g.FillRectangle(brush, e.Bounds); var textColor = filter.Enabled ? e.ForeColor : Color.Gray; var textBrush = new SolidBrush(textColor); var pt = new PointF(e.Bounds.X, e.Bounds.Y); g.DrawString(filter.Name, new Font(Name = "Segoe UI", 9), textBrush, pt); e.DrawFocusRectangle(); } private void ShinyCheck_CheckedChanged(object sender, EventArgs e) { SquareCheck.Enabled = ShinyCheck.Checked; if (!ShinyCheck.Checked) SquareCheck.Checked = false; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/FilterSettings.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 17, 17 If checked, only stop on results where the remainder of the Encryption Constant (EC) divided by 100 is 0. This will result in Dunsparce evolving into 3-Segment form, and Tandemaus evolving into Family of Three form. ================================================ FILE: RaidCrawler.WinForms/SubForms/ItemIDs.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class ItemIDs { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.CheckAbilityPatch = new System.Windows.Forms.CheckBox(); this.PicPatch = new System.Windows.Forms.PictureBox(); this.PicSweet = new System.Windows.Forms.PictureBox(); this.PicSour = new System.Windows.Forms.PictureBox(); this.PicSpicy = new System.Windows.Forms.PictureBox(); this.CheckSweet = new System.Windows.Forms.CheckBox(); this.CheckSour = new System.Windows.Forms.CheckBox(); this.CheckSpicy = new System.Windows.Forms.CheckBox(); this.CheckBottleCap = new System.Windows.Forms.CheckBox(); this.CheckBitter = new System.Windows.Forms.CheckBox(); this.CheckSalty = new System.Windows.Forms.CheckBox(); this.PicCap = new System.Windows.Forms.PictureBox(); this.PicBitter = new System.Windows.Forms.PictureBox(); this.PicSalty = new System.Windows.Forms.PictureBox(); this.PicCapsule = new System.Windows.Forms.PictureBox(); this.CheckAbilityCapsule = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.PicPatch)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSweet)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSour)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSpicy)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PicCap)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PicBitter)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSalty)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PicCapsule)).BeginInit(); this.SuspendLayout(); // // button1 // this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; this.button1.Location = new System.Drawing.Point(12, 136); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(274, 35); this.button1.TabIndex = 0; this.button1.Text = "Confirm"; this.button1.UseVisualStyleBackColor = true; // // CheckAbilityPatch // this.CheckAbilityPatch.AutoSize = true; this.CheckAbilityPatch.Location = new System.Drawing.Point(43, 16); this.CheckAbilityPatch.Name = "CheckAbilityPatch"; this.CheckAbilityPatch.Size = new System.Drawing.Size(93, 19); this.CheckAbilityPatch.TabIndex = 1; this.CheckAbilityPatch.Text = "Ability Patch"; this.CheckAbilityPatch.UseVisualStyleBackColor = true; // // PicPatch // this.PicPatch.Image = global::RaidCrawler.WinForms.Properties.Resources.item_1606_hires; this.PicPatch.Location = new System.Drawing.Point(12, 12); this.PicPatch.Name = "PicPatch"; this.PicPatch.Size = new System.Drawing.Size(25, 25); this.PicPatch.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicPatch.TabIndex = 2; this.PicPatch.TabStop = false; // // PicSweet // this.PicSweet.Image = global::RaidCrawler.WinForms.Properties.Resources.item_1904; this.PicSweet.Location = new System.Drawing.Point(12, 43); this.PicSweet.Name = "PicSweet"; this.PicSweet.Size = new System.Drawing.Size(25, 25); this.PicSweet.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicSweet.TabIndex = 3; this.PicSweet.TabStop = false; // // PicSour // this.PicSour.Image = global::RaidCrawler.WinForms.Properties.Resources.item_1906; this.PicSour.Location = new System.Drawing.Point(12, 74); this.PicSour.Name = "PicSour"; this.PicSour.Size = new System.Drawing.Size(25, 25); this.PicSour.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicSour.TabIndex = 4; this.PicSour.TabStop = false; // // PicSpicy // this.PicSpicy.Image = global::RaidCrawler.WinForms.Properties.Resources.item_1908; this.PicSpicy.Location = new System.Drawing.Point(12, 105); this.PicSpicy.Name = "PicSpicy"; this.PicSpicy.Size = new System.Drawing.Size(25, 25); this.PicSpicy.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicSpicy.TabIndex = 5; this.PicSpicy.TabStop = false; // // CheckSweet // this.CheckSweet.AutoSize = true; this.CheckSweet.Location = new System.Drawing.Point(43, 46); this.CheckSweet.Name = "CheckSweet"; this.CheckSweet.Size = new System.Drawing.Size(92, 19); this.CheckSweet.TabIndex = 6; this.CheckSweet.Text = "Sweet Herba"; this.CheckSweet.UseVisualStyleBackColor = true; // // CheckSour // this.CheckSour.AutoSize = true; this.CheckSour.Location = new System.Drawing.Point(43, 77); this.CheckSour.Name = "CheckSour"; this.CheckSour.Size = new System.Drawing.Size(85, 19); this.CheckSour.TabIndex = 7; this.CheckSour.Text = "Sour Herba"; this.CheckSour.UseVisualStyleBackColor = true; // // CheckSpicy // this.CheckSpicy.AutoSize = true; this.CheckSpicy.Location = new System.Drawing.Point(43, 108); this.CheckSpicy.Name = "CheckSpicy"; this.CheckSpicy.Size = new System.Drawing.Size(89, 19); this.CheckSpicy.TabIndex = 8; this.CheckSpicy.Text = "Spicy Herba"; this.CheckSpicy.UseVisualStyleBackColor = true; // // CheckBottleCap // this.CheckBottleCap.AutoSize = true; this.CheckBottleCap.Location = new System.Drawing.Point(181, 108); this.CheckBottleCap.Name = "CheckBottleCap"; this.CheckBottleCap.Size = new System.Drawing.Size(81, 19); this.CheckBottleCap.TabIndex = 16; this.CheckBottleCap.Text = "Bottle Cap"; this.CheckBottleCap.UseVisualStyleBackColor = true; // // CheckBitter // this.CheckBitter.AutoSize = true; this.CheckBitter.Location = new System.Drawing.Point(181, 77); this.CheckBitter.Name = "CheckBitter"; this.CheckBitter.Size = new System.Drawing.Size(89, 19); this.CheckBitter.TabIndex = 15; this.CheckBitter.Text = "Bitter Herba"; this.CheckBitter.UseVisualStyleBackColor = true; // // CheckSalty // this.CheckSalty.AutoSize = true; this.CheckSalty.Location = new System.Drawing.Point(181, 46); this.CheckSalty.Name = "CheckSalty"; this.CheckSalty.Size = new System.Drawing.Size(86, 19); this.CheckSalty.TabIndex = 14; this.CheckSalty.Text = "Salty Herba"; this.CheckSalty.UseVisualStyleBackColor = true; // // PicCap // this.PicCap.Image = global::RaidCrawler.WinForms.Properties.Resources.item_0795_hires; this.PicCap.Location = new System.Drawing.Point(150, 105); this.PicCap.Name = "PicCap"; this.PicCap.Size = new System.Drawing.Size(25, 25); this.PicCap.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicCap.TabIndex = 13; this.PicCap.TabStop = false; // // PicBitter // this.PicBitter.Image = global::RaidCrawler.WinForms.Properties.Resources.item_1907; this.PicBitter.Location = new System.Drawing.Point(150, 74); this.PicBitter.Name = "PicBitter"; this.PicBitter.Size = new System.Drawing.Size(25, 25); this.PicBitter.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicBitter.TabIndex = 12; this.PicBitter.TabStop = false; // // PicSalty // this.PicSalty.Image = global::RaidCrawler.WinForms.Properties.Resources.item_1905; this.PicSalty.Location = new System.Drawing.Point(150, 43); this.PicSalty.Name = "PicSalty"; this.PicSalty.Size = new System.Drawing.Size(25, 25); this.PicSalty.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicSalty.TabIndex = 11; this.PicSalty.TabStop = false; // // PicCapsule // this.PicCapsule.Image = global::RaidCrawler.WinForms.Properties.Resources.item_0645_hires; this.PicCapsule.Location = new System.Drawing.Point(150, 12); this.PicCapsule.Name = "PicCapsule"; this.PicCapsule.Size = new System.Drawing.Size(25, 25); this.PicCapsule.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PicCapsule.TabIndex = 10; this.PicCapsule.TabStop = false; // // CheckAbilityCapsule // this.CheckAbilityCapsule.AutoSize = true; this.CheckAbilityCapsule.Location = new System.Drawing.Point(181, 16); this.CheckAbilityCapsule.Name = "CheckAbilityCapsule"; this.CheckAbilityCapsule.Size = new System.Drawing.Size(105, 19); this.CheckAbilityCapsule.TabIndex = 9; this.CheckAbilityCapsule.Text = "Ability Capsule"; this.CheckAbilityCapsule.UseVisualStyleBackColor = true; // // ItemIDs // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(298, 183); this.Controls.Add(this.CheckBottleCap); this.Controls.Add(this.CheckBitter); this.Controls.Add(this.CheckSalty); this.Controls.Add(this.PicCap); this.Controls.Add(this.PicBitter); this.Controls.Add(this.PicSalty); this.Controls.Add(this.PicCapsule); this.Controls.Add(this.CheckAbilityCapsule); this.Controls.Add(this.CheckSpicy); this.Controls.Add(this.CheckSour); this.Controls.Add(this.CheckSweet); this.Controls.Add(this.PicSpicy); this.Controls.Add(this.PicSour); this.Controls.Add(this.PicSweet); this.Controls.Add(this.PicPatch); this.Controls.Add(this.CheckAbilityPatch); this.Controls.Add(this.button1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Name = "ItemIDs"; this.Text = "ItemIDs"; ((System.ComponentModel.ISupportInitialize)(this.PicPatch)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSweet)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSour)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSpicy)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PicCap)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PicBitter)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PicSalty)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PicCapsule)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private Button button1; private PictureBox PicPatch; private PictureBox PicSweet; private PictureBox PicSour; private PictureBox PicSpicy; private PictureBox PicCap; private PictureBox PicBitter; private PictureBox PicSalty; private PictureBox PicCapsule; public CheckBox CheckAbilityPatch; public CheckBox CheckAbilityCapsule; public CheckBox CheckSweet; public CheckBox CheckSour; public CheckBox CheckSalty; public CheckBox CheckBitter; public CheckBox CheckSpicy; public CheckBox CheckBottleCap; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/ItemIDs.cs ================================================ namespace RaidCrawler.WinForms.SubForms; public partial class ItemIDs : Form { public ItemIDs(List IDs) { InitializeComponent(); foreach (int ID in IDs) { switch (ID) { case 645: CheckAbilityCapsule.Checked = true; break; case 795: CheckBottleCap.Checked = true; break; case 1606: CheckAbilityPatch.Checked = true; break; case 1904: CheckSweet.Checked = true; break; case 1905: CheckSalty.Checked = true; break; case 1906: CheckSour.Checked = true; break; case 1907: CheckBitter.Checked = true; break; case 1908: CheckSpicy.Checked = true; break; } } PicCapsule.Image = (Image?) PKHeX.Drawing.PokeSprite.Properties.Resources.ResourceManager.GetObject( "aitem_645" ); PicCap.Image = (Image?) PKHeX.Drawing.PokeSprite.Properties.Resources.ResourceManager.GetObject( "aitem_795" ); PicPatch.Image = (Image?) PKHeX.Drawing.PokeSprite.Properties.Resources.ResourceManager.GetObject( "aitem_1606" ); } } ================================================ FILE: RaidCrawler.WinForms/SubForms/ItemIDs.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 ================================================ FILE: RaidCrawler.WinForms/SubForms/MapView.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class MapView { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { Map = new PictureBox(); ((System.ComponentModel.ISupportInitialize)Map).BeginInit(); SuspendLayout(); // // Map // Map.Location = new Point(0, 0); Map.Name = "Map"; Map.Size = new Size(512, 512); Map.TabIndex = 0; Map.TabStop = false; // // MapView // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(512, 512); Controls.Add(Map); FormBorderStyle = FormBorderStyle.FixedToolWindow; Name = "MapView"; StartPosition = FormStartPosition.CenterParent; Text = "Raid Location"; ((System.ComponentModel.ISupportInitialize)Map).EndInit(); ResumeLayout(false); } #endregion private PictureBox Map; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/MapView.cs ================================================ namespace RaidCrawler.WinForms.SubForms; public partial class MapView : Form { public MapView(Image map) { InitializeComponent(); Map.Image = map; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/MapView.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 ================================================ FILE: RaidCrawler.WinForms/SubForms/RaidBlockViewer.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class RaidBlockViewer { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RaidBlockViewer)); this.RAM = new System.Windows.Forms.TextBox(); this.AbsoluteAddress = new System.Windows.Forms.TextBox(); this.LabelAbsoluteAddress = new System.Windows.Forms.Label(); this.SuspendLayout(); // // RAM // this.RAM.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.RAM.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); this.RAM.Location = new System.Drawing.Point(12, 12); this.RAM.Multiline = true; this.RAM.Name = "RAM"; this.RAM.Size = new System.Drawing.Size(342, 342); this.RAM.TabIndex = 0; this.RAM.Text = "00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF"; // // AbsoluteAddress // this.AbsoluteAddress.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.AbsoluteAddress.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); this.AbsoluteAddress.Location = new System.Drawing.Point(235, 360); this.AbsoluteAddress.Name = "AbsoluteAddress"; this.AbsoluteAddress.ReadOnly = true; this.AbsoluteAddress.Size = new System.Drawing.Size(119, 22); this.AbsoluteAddress.TabIndex = 1; this.AbsoluteAddress.Text = "0123456789ABCDEF"; // // LabelAbsoluteAddress // this.LabelAbsoluteAddress.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.LabelAbsoluteAddress.AutoSize = true; this.LabelAbsoluteAddress.Location = new System.Drawing.Point(69, 362); this.LabelAbsoluteAddress.Name = "LabelAbsoluteAddress"; this.LabelAbsoluteAddress.Size = new System.Drawing.Size(160, 15); this.LabelAbsoluteAddress.TabIndex = 2; this.LabelAbsoluteAddress.Text = "Raid Block Absolute Address:"; // // RaidBlockViewer // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(367, 391); this.Controls.Add(this.LabelAbsoluteAddress); this.Controls.Add(this.AbsoluteAddress); this.Controls.Add(this.RAM); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "RaidBlockViewer"; this.Text = "RaidBlockViewer"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private TextBox RAM; private TextBox AbsoluteAddress; private Label LabelAbsoluteAddress; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/RaidBlockViewer.cs ================================================ namespace RaidCrawler.WinForms.SubForms; public partial class RaidBlockViewer : Form { public RaidBlockViewer(byte[] data, ulong offset) { InitializeComponent(); AbsoluteAddress.Text = $"{offset:X8}"; RAM.Text = string.Join(" ", data.Select(bytes => $"{bytes:X2}")); } } ================================================ FILE: RaidCrawler.WinForms/SubForms/RaidBlockViewer.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 AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAMMOAADDDgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUhLQAAAAAAVF1mFHyD iT1zeoE5UFdgHycwOg0CCBAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIG CgMXISwKS1BZGHZ9gzF4f4VCVl5nIjtFTgNCTFUAAAAAAAAAAAAAAAAAAAAAAAAAAABYYGgAnKClAIOI jhTLzdCX6Ovr5OTn59/P0tS+uby/nqWprYCVmJ5liI6UUXuBiERvdn47aXF5OWlxeThudX06eoGIQ4iO lFCYnKJgqayxebu/wpnS1Na65ujp2ufp6eS7vsGvanF4MNbU1wBaY2sAAAAAAAAAAAAAAAAAAAAAAF9n bgD///8A19jbS/r5+vTp1+T/5c/f//Tq8f/59vn/+Pj5/PX29vbv8vHt6evs5uXo6ODk5+fe5Ofn3uXo 6N/p6+vl7/Lx7fX39/X4+Pn7+ff5//Tq8f/kz9//6dfk//b29vqqr7N1AAAAAlpjawAAAAAAAAAAAAAA AAAAAAAAYGhuAP///wDs7e5g/Pr7/bR6pv+YSIT/o1yS/7F0ov++jLL/y6PB/9Oxy//exNj/483e/+TN 3v/kzd7/5M3e/97E2P/TsMr/y6LB/76Msv+xdKL/o1yR/5hIg/+0eqb/+vn6/8fJzYEAAAABWWFpAAAA AAAAAAAAAAAAAAAAAABYYGcA////APDw8VH9+/z6tX2m/5NAfv+UQX//k0B+/5NAfv+TQH7/lUOA/5dG gv+XRoL/lkWB/5ZFgf+XRoL/lkaC/5VCgP+TQH7/k0B+/5NAfv+UQX//k0B+/7V8p//6+fr9xcfKcv// /wBYYGgAAAAAAAAAAAAAAAAAAAAAAF1lbQD///8A7O3tQ/38/fS7h67/kj59/5VCf/+VQ4D/lUOA/5VD gP+VQ4D/lEKA/6Rekv+9irD/vYqw/6Nekv+UQn//lUOA/5VDgP+VQ4D/lUOA/5VCf/+SPn3/u4au//n5 +fq8wMJj////AFlhaQAAAAAAAAAAAAAAAAAAAAAAbHF5APn5+QDl5eY1/f797dGuyf+jXJL/nVGK/5hJ hP+WRYH/lUOA/5RAf/+ydqP/7uHr//Lo8P/y6O//7uHq/7J2o/+TQH7/lUOA/5ZEgf+YSIP/nE+I/6JY j//RrMj/9/j49q+zt1b///8AWWFpAAAAAAAAAAAAAAAAAAAAAABaX2kA8fHyAOHi5Cj9/f3m+vb5//Lo 8P/s3ej/5M/e/9zB1f/Wts7/0q/J/+/i6//dxNf/pF6T/6Rek//dw9f/7uHr/9GtyP/Us8z/2r7T/+PN 3f/q2ub/8ebu//r2+f/29vfwp6uvReTk5gD///8A////AAAAAAAAAAAAAAAAAHp9hQDk5eYA2tvdHvz9 /dvew9f/uIKr/8aau//RrMj/2bvR/9/G2f/o1uP/+/j6/7V9qP+SPn3/kj59/7V9qP/7+Pr/6Nbj/9/H 2f/avtP/07HL/8ievv+6ha3/38bZ//L09OicoaU5xMbJAH6EiwAAAAAAAAAAAAAAAAAAAAAAjI+VANTX 2ADMz9AV+/38ztq+0/+UQn//k0B+/5RCf/+WRIH/lkWB/6Nbkf/v4uz/yqHA/5ZEgf+WRIH/yqHA/+/i 7P+iW5H/lkWB/5ZEgf+UQn//k0B+/5RCf//bvtT/7/Hx35CUmS2hpaoAV19nAAAAAAAAAAAAAAAAAAAA AAAAAAAAv8LGAMHEyAv7/fy/4svc/5dHg/+VQ4D/lUOA/5VDgP+VQoD/lUOA/8ecvP/27/T/2r/T/9q/ 0//27/X/x529/5VDgP+VQoD/lUOA/5VDgP+VQ4D/l0eD/+LL3P/t7+/UfoKIIoKHjQCPl58AAAAAAAAA AAAAAAAAAAAAAAAAAACws7YAoqapBvn7+rHm0uH/mkuG/5VCgP+VQ4D/lUKA/5lKhv+YSYT/mUmE/76M sv/fxtn/38bZ/76Msv+ZSYT/mEiE/5lKhf+VQoD/lUOA/5VCgP+aS4b/5tLh/+jq6shvdXwYb3R7AImR mQAAAAAAAAAAAAAAAAAAAAAAAAAAAKOmqQBYW2AD9/j3oe3f6f+eU4v/lEJ//5VDgP+WRYL/zabE/76M sv+TQH7/lEF//5dGgv+XRoL/lEF//5NAfv++jLH/zabD/5ZFgv+VQ4D/lEJ//55Ti//u3+r/3+LjvFdc ZRJqb3cAX2VqAAAAAAAAAAAAAAAAAAAAAAAAAAAAeH6EAP///wD2+PeO8+nw/6JZj/+UQn//lEF//7N4 pf/69vn/38fZ/5hIhP+VQ4D/lUOA/5VDgP+VQ4D/mEiE/9/H2f/69vn/s3il/5RBf/+UQn//olmP//Pp 8P/b3t+sNj9JDFpiagB+gIgAAAAAAAAAAAAAAAAAAAAAAAAAAABgZW4A////APb393317fP/pmCV/5NA fv+eU4z/5dLh//////z17fP/p2OW/5RBf/+VQ4D/lUOA/5RBf/+nYpb/9e3z//////3l0uD/nlOM/5NA fv+mX5P/9e3z/9bZ25sABxUGTVZeAJygqQAAAAAAAAAAAAAAAAAAAAAAAAAAAHN3fwD///8A8fHxa/n1 +P+tbp7/lEF//8qiwP/9/f308/T0pf79/vLAkLT/k0B+/5VDgP+VQ4D/k0B+/8CQtP/8/Pz27Oztrf79 /vHKocD/lEF//65unv/49Pf/zc/SiwAAAANZYWkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV15mAP// /wDv8PBU/Pv8+7N5pf+tbZ3/9e70//X29qjc3t8l////0NvA1P+XRoL/lUOA/5VDgP+XRoL/3MDV//f5 +Ny+wcMw////nfXu9P+tbZ3/tHqm//r5+v7Exsl1AAAAAFlgaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABgZm4A////AO/v8DT+/v7q4Mja/+jX5P/8/fze3+LjM////wD9/v6Z8OXu/6JZkP+UQn//lEF//6JZ j//x5u7/6+3tqzlBSgn7+/sr////2ejX5P/gyNr/+vv778THyUn///8AWmJqAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAACwuNgD///8A2NrbBvz8/Hr////h/v7+1vHx81sAEBwB////APf4+Fr7+fv7tn6o/5NA fv+TQH7/tn6p//v5+v3X2dtxAAAAAdDZ3AD6/v5U/v//1f///+L19fWBr7K2Cenq7ABeZWwAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4+fkA9vb2Bfn6+iH3+Pgb29veAr29vwD///8A7u/xKP// /+LQrcf/lEKA/5VCgP/Rrcj/+fv66r/CxTn///8Av8PGAPT39wL6+/sa9/j4Id/g4Abx8fEAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvr 7ADk5OUI/v//sera5v+cUIn/nFCJ/+ra5v/x8/O/jpOYE6iqrgCEjJQAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAjo+RAP///wD4+fpq+vf6/rJ2o/+ydqP/+vf5/9/h4oAAAAACVFlhAIiPlwAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA+fn7APb2+CL////Y59Xj/+fV4//6+/veyMvNMP///wBYXmcAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp6eoAHR0lAPz8/F7////b/v7+3PHy82Q2QkwC////AGFp cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj5gAAAAAA9PT1A/v7+x/5+fkf0dLVBAAA AACvsbYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////gP+A/wAAAP8AAAB/AAAAfwAAAP8AAAD/AA AA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAf+BAAH/gQBB/8MAw///AP///4 D///+B////wf///8P/////////////////8= ================================================ FILE: RaidCrawler.WinForms/SubForms/RewardsView.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class RewardsView { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.SuspendLayout(); // // RewardsView // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(275, 32); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.Name = "RewardsView"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "RewardsView"; this.ResumeLayout(false); } #endregion } } ================================================ FILE: RaidCrawler.WinForms/SubForms/RewardsView.cs ================================================ using PKHeX.Drawing; using RaidCrawler.Core.Structures; namespace RaidCrawler.WinForms.SubForms; public partial class RewardsView : Form { public RewardsView(IReadOnlyList itemStrings, IReadOnlyList moveStrings, IReadOnlyList<(int, int, int)> rewards) { InitializeComponent(); var rare = PKHeX.Drawing.PokeSprite.Properties.Resources.rare_icon; var pictures = new PictureBox[rewards.Count]; var labels = new Label[rewards.Count]; for (int i = 0; i < rewards.Count; i++) { var pb = pictures[i] = new PictureBox { Size = new Size(24, 24), Location = new Point(12, (i * 36) + 12), SizeMode = PictureBoxSizeMode.CenterImage, }; var label = labels[i] = new Label(); var reward = rewards[i]; var item = reward.Item1 switch { 10000 => "Material", 20000 => "Tera Shard", _ => Rewards.IsTM(reward.Item1) ? Rewards.GetNameTM(reward.Item1, itemStrings, moveStrings, Rewards.TMIndexes) : itemStrings[reward.Item1], }; var subject = reward.Item3 switch { 1 => "(Host)", 2 => "(Client)", 3 => "(Once)", _ => string.Empty, }; var img = GetItem(rewards, i); if (img != null && Rewards.RareRewards.Contains(reward.Item1)) img = ImageUtil.LayerImage(img, rare, 0, 0, 0.7); pb.Image = img; label.Text = $"{item} x{reward.Item2} {subject}".TrimEnd(); label.Location = new Point(60, 12 + (i * (pb.Size.Height + 12))); label.Size = new Size(ClientSize.Width - 60 - 10, label.Height); Controls.Add(pb); Controls.Add(label); } ClientSize = ClientSize with { Height = 12 + (rewards.Count * (pictures[0].Size.Height + 12)) }; } private static Image? GetItem(IReadOnlyList<(int, int, int)> rewards, int i) { var (rc, item) = GetItemResourceName(rewards[i].Item1); var manager = rc ? Properties.Resources.ResourceManager : PKHeX.Drawing.PokeSprite.Properties.Resources.ResourceManager; return (Image?)manager.GetObject(item); } private static (bool rc, string item) GetItemResourceName(int id) => id switch { // Handling for sprites that pkhex doesn't have 1904 => (true, "item_1904"), 1905 => (true, "item_1905"), 1906 => (true, "item_1906"), 1907 => (true, "item_1907"), 1908 => (true, "item_1908"), (>= 1956 and <= 2159) or (>= 2438 and <= 2478) => (true, "material"), 10000 => (true, "material"), // pkhex can give us the sprites 20000 => (false, "aitem_1862"), _ => (false, Rewards.IsTM(id) ? "aitem_tm" : $"aitem_{id}"), }; } ================================================ FILE: RaidCrawler.WinForms/SubForms/RewardsView.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 ================================================ FILE: RaidCrawler.WinForms/SubForms/TeraRaidView.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class TeraRaidView { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TeraRaidView)); Map = new PictureBox(); Area = new TextBox(); picBoxPokemon = new PictureBox(); Difficulty = new Label(); Species = new Label(); Shiny = new Label(); Gender = new Label(); TeraType = new PictureBox(); Ability = new Label(); Nature = new Label(); groupBox1 = new GroupBox(); label1 = new Label(); labelAbility = new Label(); groupBox2 = new GroupBox(); labelSpeed = new Label(); SPEED = new Label(); labelSpD = new Label(); SPD = new Label(); labelSpA = new Label(); SPA = new Label(); labelDef = new Label(); DEF = new Label(); labelAtk = new Label(); ATK = new Label(); labelHP = new Label(); HP = new Label(); groupBox3 = new GroupBox(); Move8 = new Label(); Move6 = new Label(); Move4 = new Label(); Move7 = new Label(); Move5 = new Label(); Move3 = new Label(); Move1 = new Label(); Move2 = new Label(); picShinyAlert = new PictureBox(); pictureBox1 = new PictureBox(); picBottleCap = new PictureBox(); picSaltyHerba = new PictureBox(); picSpicyHerba = new PictureBox(); picSourHerba = new PictureBox(); picSweetHerba = new PictureBox(); picAbilityPatch = new PictureBox(); labelAbilityPatch = new Label(); textAbilityPatch = new Label(); labelSweetHerba = new Label(); textSweetHerba = new Label(); labelSaltyHerba = new Label(); textSaltyHerba = new Label(); labelBottleCap = new Label(); textBottleCap = new Label(); labelSourHerba = new Label(); textSourHerba = new Label(); labelSpicyHerba = new Label(); textSpicyHerba = new Label(); textSearchTime = new Label(); picAbilityCapsule = new PictureBox(); picBitterHerba = new PictureBox(); labelBitterHerba = new Label(); textBitterHerba = new Label(); labelAbilityCapsule = new Label(); textAbilityCapsule = new Label(); DaySkips = new Label(); ((System.ComponentModel.ISupportInitialize)Map).BeginInit(); ((System.ComponentModel.ISupportInitialize)picBoxPokemon).BeginInit(); ((System.ComponentModel.ISupportInitialize)TeraType).BeginInit(); groupBox1.SuspendLayout(); groupBox2.SuspendLayout(); groupBox3.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)picShinyAlert).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); ((System.ComponentModel.ISupportInitialize)picBottleCap).BeginInit(); ((System.ComponentModel.ISupportInitialize)picSaltyHerba).BeginInit(); ((System.ComponentModel.ISupportInitialize)picSpicyHerba).BeginInit(); ((System.ComponentModel.ISupportInitialize)picSourHerba).BeginInit(); ((System.ComponentModel.ISupportInitialize)picSweetHerba).BeginInit(); ((System.ComponentModel.ISupportInitialize)picAbilityPatch).BeginInit(); ((System.ComponentModel.ISupportInitialize)picAbilityCapsule).BeginInit(); ((System.ComponentModel.ISupportInitialize)picBitterHerba).BeginInit(); SuspendLayout(); // // Map // Map.Location = new Point(564, 12); Map.Name = "Map"; Map.Size = new Size(384, 384); Map.SizeMode = PictureBoxSizeMode.StretchImage; Map.TabIndex = 64; Map.TabStop = false; // // Area // Area.BackColor = Color.FromArgb(0, 5, 25); Area.BorderStyle = BorderStyle.None; Area.Font = new Font("Segoe UI", 14F, FontStyle.Regular, GraphicsUnit.Point); Area.ForeColor = SystemColors.GradientInactiveCaption; Area.Location = new Point(564, 12); Area.Name = "Area"; Area.PlaceholderText = "Area"; Area.Size = new Size(384, 25); Area.TabIndex = 65; Area.TextAlign = HorizontalAlignment.Center; // // picBoxPokemon // picBoxPokemon.Location = new Point(396, 12); picBoxPokemon.Name = "picBoxPokemon"; picBoxPokemon.Size = new Size(128, 128); picBoxPokemon.SizeMode = PictureBoxSizeMode.Zoom; picBoxPokemon.TabIndex = 112; picBoxPokemon.TabStop = false; // // Difficulty // Difficulty.BackColor = Color.FromArgb(0, 5, 25); Difficulty.Font = new Font("Segoe UI Emoji", 16F, FontStyle.Bold, GraphicsUnit.Point); Difficulty.ForeColor = Color.LemonChiffon; Difficulty.Location = new Point(64, 143); Difficulty.Name = "Difficulty"; Difficulty.Size = new Size(244, 29); Difficulty.TabIndex = 114; Difficulty.Text = "⭐⭐⭐⭐⭐⭐⭐"; Difficulty.TextAlign = ContentAlignment.BottomCenter; // // Species // Species.BackColor = Color.FromArgb(0, 5, 25); Species.Font = new Font("Segoe UI", 32F, FontStyle.Bold, GraphicsUnit.Point); Species.ForeColor = SystemColors.ControlLightLight; Species.Location = new Point(12, 32); Species.Name = "Species"; Species.Size = new Size(348, 57); Species.TabIndex = 115; Species.Text = "Species"; Species.TextAlign = ContentAlignment.BottomCenter; // // Shiny // Shiny.AutoSize = true; Shiny.Font = new Font("Consolas", 16F, FontStyle.Bold, GraphicsUnit.Point); Shiny.ForeColor = Color.Gold; Shiny.Location = new Point(110, 20); Shiny.Name = "Shiny"; Shiny.Size = new Size(148, 26); Shiny.TabIndex = 116; Shiny.Text = "✨ Shiny ✨"; Shiny.TextAlign = ContentAlignment.MiddleCenter; Shiny.Visible = false; // // Gender // Gender.BackColor = Color.FromArgb(0, 5, 25); Gender.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); Gender.ForeColor = SystemColors.ActiveCaption; Gender.Location = new Point(406, 146); Gender.Name = "Gender"; Gender.Size = new Size(109, 22); Gender.TabIndex = 118; Gender.Text = "Gender"; Gender.TextAlign = ContentAlignment.BottomCenter; // // TeraType // TeraType.Location = new Point(86, 92); TeraType.Name = "TeraType"; TeraType.Size = new Size(200, 48); TeraType.SizeMode = PictureBoxSizeMode.StretchImage; TeraType.TabIndex = 120; TeraType.TabStop = false; // // Ability // Ability.BackColor = Color.FromArgb(0, 5, 25); Ability.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Ability.ForeColor = SystemColors.ActiveCaption; Ability.Location = new Point(72, 22); Ability.Name = "Ability"; Ability.Size = new Size(200, 25); Ability.TabIndex = 121; Ability.Text = "Ability"; // // Nature // Nature.BackColor = Color.FromArgb(0, 5, 25); Nature.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Nature.ForeColor = SystemColors.ActiveCaption; Nature.Location = new Point(328, 22); Nature.Name = "Nature"; Nature.Size = new Size(200, 25); Nature.TabIndex = 122; Nature.Text = "Nature"; // // groupBox1 // groupBox1.Controls.Add(label1); groupBox1.Controls.Add(labelAbility); groupBox1.Controls.Add(Ability); groupBox1.Controls.Add(Nature); groupBox1.ForeColor = Color.DarkGray; groupBox1.Location = new Point(12, 191); groupBox1.Name = "groupBox1"; groupBox1.Size = new Size(546, 65); groupBox1.TabIndex = 123; groupBox1.TabStop = false; groupBox1.Text = "Details"; // // label1 // label1.AutoSize = true; label1.ForeColor = Color.Silver; label1.Location = new Point(278, 29); label1.Name = "label1"; label1.Size = new Size(46, 15); label1.TabIndex = 124; label1.Text = "Nature:"; label1.TextAlign = ContentAlignment.MiddleRight; // // labelAbility // labelAbility.AutoSize = true; labelAbility.ForeColor = Color.Silver; labelAbility.Location = new Point(22, 29); labelAbility.Name = "labelAbility"; labelAbility.Size = new Size(44, 15); labelAbility.TabIndex = 123; labelAbility.Text = "Ability:"; labelAbility.TextAlign = ContentAlignment.MiddleRight; // // groupBox2 // groupBox2.Controls.Add(labelSpeed); groupBox2.Controls.Add(SPEED); groupBox2.Controls.Add(labelSpD); groupBox2.Controls.Add(SPD); groupBox2.Controls.Add(labelSpA); groupBox2.Controls.Add(SPA); groupBox2.Controls.Add(labelDef); groupBox2.Controls.Add(DEF); groupBox2.Controls.Add(labelAtk); groupBox2.Controls.Add(ATK); groupBox2.Controls.Add(labelHP); groupBox2.Controls.Add(HP); groupBox2.ForeColor = Color.DarkGray; groupBox2.Location = new Point(12, 262); groupBox2.Name = "groupBox2"; groupBox2.Size = new Size(546, 65); groupBox2.TabIndex = 124; groupBox2.TabStop = false; groupBox2.Text = "IVs"; // // labelSpeed // labelSpeed.AutoSize = true; labelSpeed.ForeColor = Color.Silver; labelSpeed.Location = new Point(407, 29); labelSpeed.Name = "labelSpeed"; labelSpeed.Size = new Size(42, 15); labelSpeed.TabIndex = 133; labelSpeed.Text = "Speed:"; labelSpeed.TextAlign = ContentAlignment.MiddleRight; // // SPEED // SPEED.BackColor = Color.FromArgb(0, 5, 25); SPEED.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); SPEED.ForeColor = Color.White; SPEED.Location = new Point(449, 22); SPEED.Name = "SPEED"; SPEED.Size = new Size(36, 25); SPEED.TabIndex = 132; SPEED.Text = "00"; SPEED.TextAlign = ContentAlignment.BottomCenter; // // labelSpD // labelSpD.AutoSize = true; labelSpD.ForeColor = Color.Silver; labelSpD.Location = new Point(336, 29); labelSpD.Name = "labelSpD"; labelSpD.Size = new Size(31, 15); labelSpD.TabIndex = 131; labelSpD.Text = "SpD:"; labelSpD.TextAlign = ContentAlignment.MiddleRight; // // SPD // SPD.BackColor = Color.FromArgb(0, 5, 25); SPD.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); SPD.ForeColor = Color.White; SPD.Location = new Point(367, 22); SPD.Name = "SPD"; SPD.Size = new Size(36, 25); SPD.TabIndex = 130; SPD.Text = "00"; SPD.TextAlign = ContentAlignment.BottomCenter; // // labelSpA // labelSpA.AutoSize = true; labelSpA.ForeColor = Color.Silver; labelSpA.Location = new Point(265, 29); labelSpA.Name = "labelSpA"; labelSpA.Size = new Size(31, 15); labelSpA.TabIndex = 129; labelSpA.Text = "SpA:"; labelSpA.TextAlign = ContentAlignment.MiddleRight; // // SPA // SPA.BackColor = Color.FromArgb(0, 5, 25); SPA.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); SPA.ForeColor = Color.White; SPA.Location = new Point(297, 22); SPA.Name = "SPA"; SPA.Size = new Size(36, 25); SPA.TabIndex = 128; SPA.Text = "00"; SPA.TextAlign = ContentAlignment.BottomCenter; // // labelDef // labelDef.AutoSize = true; labelDef.ForeColor = Color.Silver; labelDef.Location = new Point(197, 29); labelDef.Name = "labelDef"; labelDef.Size = new Size(28, 15); labelDef.TabIndex = 127; labelDef.Text = "Def:"; labelDef.TextAlign = ContentAlignment.MiddleRight; // // DEF // DEF.BackColor = Color.FromArgb(0, 5, 25); DEF.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); DEF.ForeColor = Color.White; DEF.Location = new Point(226, 22); DEF.Name = "DEF"; DEF.Size = new Size(36, 25); DEF.TabIndex = 126; DEF.Text = "00"; DEF.TextAlign = ContentAlignment.BottomCenter; // // labelAtk // labelAtk.AutoSize = true; labelAtk.ForeColor = Color.Silver; labelAtk.Location = new Point(129, 29); labelAtk.Name = "labelAtk"; labelAtk.Size = new Size(28, 15); labelAtk.TabIndex = 125; labelAtk.Text = "Atk:"; labelAtk.TextAlign = ContentAlignment.MiddleRight; // // ATK // ATK.BackColor = Color.FromArgb(0, 5, 25); ATK.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); ATK.ForeColor = Color.White; ATK.Location = new Point(158, 22); ATK.Name = "ATK"; ATK.Size = new Size(36, 25); ATK.TabIndex = 124; ATK.Text = "00"; ATK.TextAlign = ContentAlignment.BottomCenter; // // labelHP // labelHP.AutoSize = true; labelHP.ForeColor = Color.Silver; labelHP.Location = new Point(63, 29); labelHP.Name = "labelHP"; labelHP.Size = new Size(26, 15); labelHP.TabIndex = 123; labelHP.Text = "HP:"; labelHP.TextAlign = ContentAlignment.MiddleRight; // // HP // HP.BackColor = Color.FromArgb(0, 5, 25); HP.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); HP.ForeColor = Color.White; HP.Location = new Point(90, 22); HP.Name = "HP"; HP.Size = new Size(36, 25); HP.TabIndex = 121; HP.Text = "00"; HP.TextAlign = ContentAlignment.BottomCenter; // // groupBox3 // groupBox3.Controls.Add(Move8); groupBox3.Controls.Add(Move6); groupBox3.Controls.Add(Move4); groupBox3.Controls.Add(Move7); groupBox3.Controls.Add(Move5); groupBox3.Controls.Add(Move3); groupBox3.Controls.Add(Move1); groupBox3.Controls.Add(Move2); groupBox3.ForeColor = Color.DarkGray; groupBox3.Location = new Point(12, 333); groupBox3.Name = "groupBox3"; groupBox3.Size = new Size(546, 157); groupBox3.TabIndex = 125; groupBox3.TabStop = false; groupBox3.Text = "Raid Moveset"; // // Move8 // Move8.BackColor = Color.FromArgb(0, 5, 25); Move8.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move8.ForeColor = Color.LightSlateGray; Move8.Location = new Point(278, 115); Move8.Name = "Move8"; Move8.Size = new Size(200, 25); Move8.TabIndex = 128; Move8.Text = "Move8"; // // Move6 // Move6.BackColor = Color.FromArgb(0, 5, 25); Move6.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move6.ForeColor = Color.LightSlateGray; Move6.Location = new Point(278, 84); Move6.Name = "Move6"; Move6.Size = new Size(200, 25); Move6.TabIndex = 127; Move6.Text = "Move6"; // // Move4 // Move4.BackColor = Color.FromArgb(0, 5, 25); Move4.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move4.ForeColor = SystemColors.ActiveCaption; Move4.Location = new Point(278, 53); Move4.Name = "Move4"; Move4.Size = new Size(200, 25); Move4.TabIndex = 126; Move4.Text = "Move4"; // // Move7 // Move7.BackColor = Color.FromArgb(0, 5, 25); Move7.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move7.ForeColor = Color.LightSlateGray; Move7.Location = new Point(22, 115); Move7.Name = "Move7"; Move7.Size = new Size(200, 25); Move7.TabIndex = 125; Move7.Text = "Move7"; // // Move5 // Move5.BackColor = Color.FromArgb(0, 5, 25); Move5.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move5.ForeColor = Color.LightSlateGray; Move5.Location = new Point(22, 84); Move5.Name = "Move5"; Move5.Size = new Size(200, 25); Move5.TabIndex = 124; Move5.Text = "Move5"; // // Move3 // Move3.BackColor = Color.FromArgb(0, 5, 25); Move3.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move3.ForeColor = SystemColors.ActiveCaption; Move3.Location = new Point(22, 53); Move3.Name = "Move3"; Move3.Size = new Size(200, 25); Move3.TabIndex = 123; Move3.Text = "Move3"; // // Move1 // Move1.BackColor = Color.FromArgb(0, 5, 25); Move1.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move1.ForeColor = SystemColors.ActiveCaption; Move1.Location = new Point(22, 22); Move1.Name = "Move1"; Move1.Size = new Size(200, 25); Move1.TabIndex = 121; Move1.Text = "Move1"; // // Move2 // Move2.BackColor = Color.FromArgb(0, 5, 25); Move2.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); Move2.ForeColor = SystemColors.ActiveCaption; Move2.Location = new Point(278, 22); Move2.Name = "Move2"; Move2.Size = new Size(200, 25); Move2.TabIndex = 122; Move2.Text = "Move2"; // // picShinyAlert // picShinyAlert.BackColor = Color.Transparent; picShinyAlert.Enabled = false; picShinyAlert.Image = (Image)resources.GetObject("picShinyAlert.Image"); picShinyAlert.Location = new Point(300, 92); picShinyAlert.Name = "picShinyAlert"; picShinyAlert.Size = new Size(79, 77); picShinyAlert.SizeMode = PictureBoxSizeMode.Zoom; picShinyAlert.TabIndex = 160; picShinyAlert.TabStop = false; // // pictureBox1 // pictureBox1.BackColor = Color.Transparent; pictureBox1.Location = new Point(12, 501); pictureBox1.Name = "pictureBox1"; pictureBox1.Size = new Size(546, 27); pictureBox1.TabIndex = 126; pictureBox1.TabStop = false; // // picBottleCap // picBottleCap.Image = Properties.Resources.item_0795_hires; picBottleCap.Location = new Point(560, 448); picBottleCap.Name = "picBottleCap"; picBottleCap.Size = new Size(48, 48); picBottleCap.SizeMode = PictureBoxSizeMode.StretchImage; picBottleCap.TabIndex = 138; picBottleCap.TabStop = false; // // picSaltyHerba // picSaltyHerba.Image = Properties.Resources.item_1905_hires; picSaltyHerba.Location = new Point(857, 402); picSaltyHerba.Name = "picSaltyHerba"; picSaltyHerba.Size = new Size(48, 48); picSaltyHerba.SizeMode = PictureBoxSizeMode.StretchImage; picSaltyHerba.TabIndex = 137; picSaltyHerba.TabStop = false; // // picSpicyHerba // picSpicyHerba.Image = Properties.Resources.item_1908_hires; picSpicyHerba.Location = new Point(857, 448); picSpicyHerba.Name = "picSpicyHerba"; picSpicyHerba.Size = new Size(48, 48); picSpicyHerba.SizeMode = PictureBoxSizeMode.StretchImage; picSpicyHerba.TabIndex = 131; picSpicyHerba.TabStop = false; // // picSourHerba // picSourHerba.Image = Properties.Resources.item_1906_hires; picSourHerba.Location = new Point(759, 448); picSourHerba.Name = "picSourHerba"; picSourHerba.Size = new Size(48, 48); picSourHerba.SizeMode = PictureBoxSizeMode.StretchImage; picSourHerba.TabIndex = 130; picSourHerba.TabStop = false; // // picSweetHerba // picSweetHerba.Image = Properties.Resources.item_1904_hires; picSweetHerba.Location = new Point(759, 402); picSweetHerba.Name = "picSweetHerba"; picSweetHerba.Size = new Size(48, 48); picSweetHerba.SizeMode = PictureBoxSizeMode.StretchImage; picSweetHerba.TabIndex = 129; picSweetHerba.TabStop = false; // // picAbilityPatch // picAbilityPatch.Image = Properties.Resources.item_1606_hires; picAbilityPatch.Location = new Point(560, 402); picAbilityPatch.Name = "picAbilityPatch"; picAbilityPatch.Size = new Size(48, 48); picAbilityPatch.SizeMode = PictureBoxSizeMode.StretchImage; picAbilityPatch.TabIndex = 128; picAbilityPatch.TabStop = false; // // labelAbilityPatch // labelAbilityPatch.AutoSize = true; labelAbilityPatch.ForeColor = Color.Silver; labelAbilityPatch.Location = new Point(614, 404); labelAbilityPatch.Name = "labelAbilityPatch"; labelAbilityPatch.Size = new Size(37, 15); labelAbilityPatch.TabIndex = 135; labelAbilityPatch.Text = "Patch"; labelAbilityPatch.TextAlign = ContentAlignment.MiddleRight; // // textAbilityPatch // textAbilityPatch.BackColor = Color.FromArgb(0, 5, 25); textAbilityPatch.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textAbilityPatch.ForeColor = Color.White; textAbilityPatch.Location = new Point(616, 419); textAbilityPatch.Name = "textAbilityPatch"; textAbilityPatch.Size = new Size(34, 25); textAbilityPatch.TabIndex = 134; textAbilityPatch.Text = "00"; textAbilityPatch.TextAlign = ContentAlignment.BottomCenter; textAbilityPatch.TextChanged += Rewards_TextChanged; // // labelSweetHerba // labelSweetHerba.AutoSize = true; labelSweetHerba.ForeColor = Color.Silver; labelSweetHerba.Location = new Point(813, 404); labelSweetHerba.Name = "labelSweetHerba"; labelSweetHerba.Size = new Size(38, 15); labelSweetHerba.TabIndex = 143; labelSweetHerba.Text = "Sweet"; labelSweetHerba.TextAlign = ContentAlignment.MiddleRight; // // textSweetHerba // textSweetHerba.BackColor = Color.FromArgb(0, 5, 25); textSweetHerba.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textSweetHerba.ForeColor = Color.White; textSweetHerba.Location = new Point(817, 419); textSweetHerba.Name = "textSweetHerba"; textSweetHerba.Size = new Size(34, 25); textSweetHerba.TabIndex = 142; textSweetHerba.Text = "00"; textSweetHerba.TextAlign = ContentAlignment.BottomCenter; textSweetHerba.TextChanged += Rewards_TextChanged; // // labelSaltyHerba // labelSaltyHerba.AutoSize = true; labelSaltyHerba.ForeColor = Color.Silver; labelSaltyHerba.Location = new Point(910, 404); labelSaltyHerba.Name = "labelSaltyHerba"; labelSaltyHerba.Size = new Size(32, 15); labelSaltyHerba.TabIndex = 145; labelSaltyHerba.Text = "Salty"; labelSaltyHerba.TextAlign = ContentAlignment.MiddleRight; // // textSaltyHerba // textSaltyHerba.BackColor = Color.FromArgb(0, 5, 25); textSaltyHerba.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textSaltyHerba.ForeColor = Color.White; textSaltyHerba.Location = new Point(911, 419); textSaltyHerba.Name = "textSaltyHerba"; textSaltyHerba.Size = new Size(37, 25); textSaltyHerba.TabIndex = 144; textSaltyHerba.Text = "00"; textSaltyHerba.TextAlign = ContentAlignment.BottomCenter; textSaltyHerba.TextChanged += Rewards_TextChanged; // // labelBottleCap // labelBottleCap.AutoSize = true; labelBottleCap.ForeColor = Color.Silver; labelBottleCap.Location = new Point(618, 452); labelBottleCap.Name = "labelBottleCap"; labelBottleCap.Size = new Size(28, 15); labelBottleCap.TabIndex = 147; labelBottleCap.Text = "Cap"; labelBottleCap.TextAlign = ContentAlignment.MiddleRight; // // textBottleCap // textBottleCap.BackColor = Color.FromArgb(0, 5, 25); textBottleCap.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textBottleCap.ForeColor = Color.White; textBottleCap.Location = new Point(614, 467); textBottleCap.Name = "textBottleCap"; textBottleCap.Size = new Size(36, 25); textBottleCap.TabIndex = 146; textBottleCap.Text = "00"; textBottleCap.TextAlign = ContentAlignment.BottomCenter; textBottleCap.TextChanged += Rewards_TextChanged; // // labelSourHerba // labelSourHerba.AutoSize = true; labelSourHerba.ForeColor = Color.Silver; labelSourHerba.Location = new Point(817, 452); labelSourHerba.Name = "labelSourHerba"; labelSourHerba.Size = new Size(31, 15); labelSourHerba.TabIndex = 149; labelSourHerba.Text = "Sour"; labelSourHerba.TextAlign = ContentAlignment.MiddleRight; // // textSourHerba // textSourHerba.BackColor = Color.FromArgb(0, 5, 25); textSourHerba.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textSourHerba.ForeColor = Color.White; textSourHerba.Location = new Point(817, 467); textSourHerba.Name = "textSourHerba"; textSourHerba.Size = new Size(34, 25); textSourHerba.TabIndex = 148; textSourHerba.Text = "00"; textSourHerba.TextAlign = ContentAlignment.BottomCenter; textSourHerba.TextChanged += Rewards_TextChanged; // // labelSpicyHerba // labelSpicyHerba.AutoSize = true; labelSpicyHerba.ForeColor = Color.Silver; labelSpicyHerba.Location = new Point(908, 450); labelSpicyHerba.Name = "labelSpicyHerba"; labelSpicyHerba.Size = new Size(35, 15); labelSpicyHerba.TabIndex = 151; labelSpicyHerba.Text = "Spicy"; labelSpicyHerba.TextAlign = ContentAlignment.MiddleRight; // // textSpicyHerba // textSpicyHerba.BackColor = Color.FromArgb(0, 5, 25); textSpicyHerba.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textSpicyHerba.ForeColor = Color.White; textSpicyHerba.Location = new Point(911, 467); textSpicyHerba.Name = "textSpicyHerba"; textSpicyHerba.Size = new Size(37, 25); textSpicyHerba.TabIndex = 150; textSpicyHerba.Text = "00"; textSpicyHerba.TextAlign = ContentAlignment.BottomCenter; textSpicyHerba.TextChanged += Rewards_TextChanged; // // textSearchTime // textSearchTime.BackColor = Color.FromArgb(0, 5, 25); textSearchTime.Font = new Font("Segoe UI", 12F, FontStyle.Bold, GraphicsUnit.Point); textSearchTime.ForeColor = Color.LightSlateGray; textSearchTime.Location = new Point(840, 501); textSearchTime.Name = "textSearchTime"; textSearchTime.Size = new Size(102, 25); textSearchTime.TabIndex = 153; textSearchTime.Text = "00:00:00:00"; textSearchTime.TextAlign = ContentAlignment.BottomCenter; // // picAbilityCapsule // picAbilityCapsule.Image = Properties.Resources.item_0645_hires; picAbilityCapsule.Location = new Point(656, 402); picAbilityCapsule.Name = "picAbilityCapsule"; picAbilityCapsule.Size = new Size(48, 48); picAbilityCapsule.SizeMode = PictureBoxSizeMode.StretchImage; picAbilityCapsule.TabIndex = 154; picAbilityCapsule.TabStop = false; // // picBitterHerba // picBitterHerba.Image = Properties.Resources.item_1907_hires; picBitterHerba.Location = new Point(656, 448); picBitterHerba.Name = "picBitterHerba"; picBitterHerba.Size = new Size(48, 48); picBitterHerba.SizeMode = PictureBoxSizeMode.StretchImage; picBitterHerba.TabIndex = 155; picBitterHerba.TabStop = false; // // labelBitterHerba // labelBitterHerba.AutoSize = true; labelBitterHerba.ForeColor = Color.Silver; labelBitterHerba.Location = new Point(713, 452); labelBitterHerba.Name = "labelBitterHerba"; labelBitterHerba.Size = new Size(35, 15); labelBitterHerba.TabIndex = 159; labelBitterHerba.Text = "Bitter"; labelBitterHerba.TextAlign = ContentAlignment.MiddleRight; // // textBitterHerba // textBitterHerba.BackColor = Color.FromArgb(0, 5, 25); textBitterHerba.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textBitterHerba.ForeColor = Color.White; textBitterHerba.Location = new Point(714, 467); textBitterHerba.Name = "textBitterHerba"; textBitterHerba.Size = new Size(39, 25); textBitterHerba.TabIndex = 158; textBitterHerba.Text = "00"; textBitterHerba.TextAlign = ContentAlignment.BottomCenter; // // labelAbilityCapsule // labelAbilityCapsule.AutoSize = true; labelAbilityCapsule.ForeColor = Color.Silver; labelAbilityCapsule.Location = new Point(707, 404); labelAbilityCapsule.Name = "labelAbilityCapsule"; labelAbilityCapsule.Size = new Size(49, 15); labelAbilityCapsule.TabIndex = 157; labelAbilityCapsule.Text = "Capsule"; labelAbilityCapsule.TextAlign = ContentAlignment.MiddleRight; // // textAbilityCapsule // textAbilityCapsule.BackColor = Color.FromArgb(0, 5, 25); textAbilityCapsule.Font = new Font("Segoe UI", 14F, FontStyle.Bold, GraphicsUnit.Point); textAbilityCapsule.ForeColor = Color.White; textAbilityCapsule.Location = new Point(715, 419); textAbilityCapsule.Name = "textAbilityCapsule"; textAbilityCapsule.Size = new Size(38, 25); textAbilityCapsule.TabIndex = 156; textAbilityCapsule.Text = "00"; textAbilityCapsule.TextAlign = ContentAlignment.BottomCenter; // // DaySkips // DaySkips.Anchor = AnchorStyles.None; DaySkips.AutoSize = true; DaySkips.BackColor = Color.Transparent; DaySkips.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); DaySkips.ForeColor = Color.LightSlateGray; DaySkips.Location = new Point(618, 509); DaySkips.Name = "DaySkips"; DaySkips.Size = new Size(141, 15); DaySkips.TabIndex = 161; DaySkips.Text = "Day Skip Successes 0 / 0"; DaySkips.TextAlign = ContentAlignment.MiddleCenter; // // TeraRaidView // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; BackColor = Color.FromArgb(0, 5, 25); ClientSize = new Size(960, 540); Controls.Add(DaySkips); Controls.Add(labelBitterHerba); Controls.Add(textBitterHerba); Controls.Add(labelAbilityCapsule); Controls.Add(textAbilityCapsule); Controls.Add(picBitterHerba); Controls.Add(picAbilityCapsule); Controls.Add(textSearchTime); Controls.Add(labelSpicyHerba); Controls.Add(textSpicyHerba); Controls.Add(labelSourHerba); Controls.Add(textSourHerba); Controls.Add(labelBottleCap); Controls.Add(textBottleCap); Controls.Add(labelSaltyHerba); Controls.Add(textSaltyHerba); Controls.Add(labelSweetHerba); Controls.Add(textSweetHerba); Controls.Add(labelAbilityPatch); Controls.Add(textAbilityPatch); Controls.Add(picBottleCap); Controls.Add(picSaltyHerba); Controls.Add(picSpicyHerba); Controls.Add(picSourHerba); Controls.Add(picSweetHerba); Controls.Add(picAbilityPatch); Controls.Add(pictureBox1); Controls.Add(groupBox3); Controls.Add(groupBox2); Controls.Add(groupBox1); Controls.Add(TeraType); Controls.Add(Gender); Controls.Add(Shiny); Controls.Add(Species); Controls.Add(Difficulty); Controls.Add(picBoxPokemon); Controls.Add(Area); Controls.Add(Map); Controls.Add(picShinyAlert); ForeColor = SystemColors.ActiveCaptionText; FormBorderStyle = FormBorderStyle.None; Icon = (Icon)resources.GetObject("$this.Icon"); Name = "TeraRaidView"; Text = "TeraRaidView"; DoubleClick += TeraRaidView_DoubleClick; MouseDown += TeraRaidView_MouseDown; MouseMove += TeraRaidView_MouseMove; MouseUp += TeraRaidView_MouseUp; ((System.ComponentModel.ISupportInitialize)Map).EndInit(); ((System.ComponentModel.ISupportInitialize)picBoxPokemon).EndInit(); ((System.ComponentModel.ISupportInitialize)TeraType).EndInit(); groupBox1.ResumeLayout(false); groupBox1.PerformLayout(); groupBox2.ResumeLayout(false); groupBox2.PerformLayout(); groupBox3.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)picShinyAlert).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); ((System.ComponentModel.ISupportInitialize)picBottleCap).EndInit(); ((System.ComponentModel.ISupportInitialize)picSaltyHerba).EndInit(); ((System.ComponentModel.ISupportInitialize)picSpicyHerba).EndInit(); ((System.ComponentModel.ISupportInitialize)picSourHerba).EndInit(); ((System.ComponentModel.ISupportInitialize)picSweetHerba).EndInit(); ((System.ComponentModel.ISupportInitialize)picAbilityPatch).EndInit(); ((System.ComponentModel.ISupportInitialize)picAbilityCapsule).EndInit(); ((System.ComponentModel.ISupportInitialize)picBitterHerba).EndInit(); ResumeLayout(false); PerformLayout(); } #endregion public TextBox Area; public Label Difficulty; public Label Species; public PictureBox picBoxPokemon; public Label Gender; public PictureBox TeraType; public Label Ability; public Label Nature; private GroupBox groupBox1; private Label label1; private Label labelAbility; public PictureBox Map; private GroupBox groupBox2; private Label labelHP; public Label HP; private GroupBox groupBox3; public Label Move1; public Label Move2; private Label labelSpeed; public Label SPEED; private Label labelSpD; public Label SPD; private Label labelSpA; public Label SPA; private Label labelDef; public Label DEF; private Label labelAtk; public Label ATK; public Label Move8; public Label Move6; public Label Move4; public Label Move7; public Label Move5; public Label Move3; private PictureBox pictureBox1; public Label textAbilityPatch; public Label textSweetHerba; public Label textSaltyHerba; public Label textBottleCap; public Label textSourHerba; public Label textSpicyHerba; public Label textSearchTime; public Label textBitterHerba; public Label textAbilityCapsule; public PictureBox picBottleCap; public PictureBox picSaltyHerba; public PictureBox picSpicyHerba; public PictureBox picSourHerba; public PictureBox picSweetHerba; public PictureBox picAbilityPatch; public Label labelAbilityPatch; public Label labelSweetHerba; public Label labelSaltyHerba; public Label labelBottleCap; public Label labelSourHerba; public Label labelSpicyHerba; public PictureBox picAbilityCapsule; public PictureBox picBitterHerba; public Label labelBitterHerba; public Label labelAbilityCapsule; public PictureBox picShinyAlert; public Label Shiny; public Label DaySkips; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/TeraRaidView.cs ================================================ namespace RaidCrawler.WinForms.SubForms; public partial class TeraRaidView : Form { private readonly object _lock = new(); // Drag and Drop private bool drag; private Point start = new(0, 0); // Progress Bar private readonly int pbWidth, pbHeight; private readonly Bitmap bmp; private double pbComplete, pbUnit; private Graphics? g; public TeraRaidView() { InitializeComponent(); StartPosition = FormStartPosition.Manual; Location = new Point(0, 0); pbWidth = pictureBox1.Width; pbHeight = pictureBox1.Height; pbComplete = -1; bmp = new Bitmap(pbWidth, pbHeight); } public void UpdateProgressBar(int steps) { lock (_lock) { Invoke(() => { if (pbComplete <= 0) { pbComplete = pbWidth; // ReSharper disable once PossibleLossOfFraction pbUnit = pbWidth / (steps - 1); } g = Graphics.FromImage(bmp); g.Clear(Color.LightSkyBlue); //draw progressbar pbComplete -= pbUnit; g.FillRegion( Brushes.CornflowerBlue, new Region(new RectangleF(0, 0, (float)pbComplete, pbHeight)) ); //load bitmap in picturebox picboxPB pictureBox1.Image = bmp; if (!(pbComplete <= 0)) return; g.FillRectangle(new SolidBrush(Color.FromArgb(0, 5, 25)), new RectangleF(0, 0, pbWidth, pbHeight)); pictureBox1.Image = bmp; g.Dispose(); pbComplete = -1; }); } } public void ResetProgressBar() { lock (_lock) { Invoke(() => { pbComplete = -1; g = Graphics.FromImage(bmp); g.Clear(Color.LightSkyBlue); g.FillRectangle( new SolidBrush(Color.FromArgb(0, 5, 25)), new RectangleF(0, 0, pbWidth, pbHeight) ); pictureBox1.Image = bmp; g.Dispose(); pbComplete = -1; }); } } private void TeraRaidView_MouseDown(object sender, MouseEventArgs e) { drag = true; start = new Point(e.X, e.Y); } private void TeraRaidView_MouseMove(object sender, MouseEventArgs e) { if (!drag) return; Point p = PointToScreen(e.Location); Location = new Point(p.X - start.X, p.Y - start.Y); } private void Rewards_TextChanged(object sender, EventArgs e) { ForeColor = Color.DarkGray; if (!int.TryParse(Text, out int value)) return; if (value > 0) ForeColor = Color.White; if (value > 2) BackColor = Color.ForestGreen; } private void TeraRaidView_MouseUp(object sender, MouseEventArgs e) => drag = false; private void TeraRaidView_DoubleClick(object sender, EventArgs e) => Close(); } ================================================ FILE: RaidCrawler.WinForms/SubForms/TeraRaidView.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 True R0lGODlhAAIAAvcAAP/pC//aAv/cC//dFP/eG//gA//sBP/0BP//B///C//jFP/pFv/iHf/rH//zFf// Fv/yGv/+HP/fI//fKf/iJP/pJf/hK//tLf/zJv//I///LP/iNP/jOv/vOf/1Mv//NP/2O///PP/kQ//q Qv/kSv/zRP//RP//S//nVf/oVv/nWf/oW///U///XP//ZP//a///dP//fP//hP//jP//lP//m///o/// q///s///u///w///y///1P//3P//5P//7P//8//////aA//cDP/sBf/1BP/6Bv/zD//kFf/rFP/iHP/r HP/0Ff//Ff/zHP//HP/fIv/fK//hJP/rJP/hLP/sLP/0Jf/yKv//K//iNf/tNf/qOv/xNP/0O///O//p Q//mTP/qS//yQ///Q//zTf//TP/nVP/rVP/pXP//VP/zWf/rYv//Y///e///k///pP//rP//tP//vP// 0///2////v/bBP/kBv/qBv/iC//qDP/7B//1Cv/+Df/qFP/jHP/qHf/yFP//FP/0G///Hf/jJP/rI//i LP/rLP/yLP/jNf/rM//jO//qO//yNP//M//zPP/lQ//qRP/sS//0Q//zSv/sVP/nW//rXP/xU//yXP// W//sY//ua//yY//zbP/vcf/0c//0ev/2hP//g//3iP//i///6///8f//+P/cDf/eGv/rBv/jDP/sCv/8 Bv/0C//9C//jFf/pFP/zEf/iK//rK//zJP/rPP/zNP/zO//rRP/rTP/zQ//zTP/nWv/yU//0bP/0e//2 g//+g//3if/+jP/+k///2f/qBf/rDP/1Bf/qHP/zE//zIv/jNP/rNP/+PP/yRP/yVP/yW//sYv/yZP/0 a//+a//vc//+fP/1g//+i//+lP//wf//0v/qC//0Bf/8B//1C//7C//0Gv/+Hf/jI//qJP/yK//rO//y O//nVv/za//vcP/+dP/7DP/0FP/+FP/zHf//Hv/yI//+TP/qXP/ta//vcv/+c//9e///vf//wP/pTgAA ACH/C0ltYWdlTWFnaWNrDmdhbW1hPTAuNDU0NTQ1ACH5BAkDAAAAIf4gQ3JlYXRlZCB3aXRoIGV6Z2lm LmNvbSBHSUYgbWFrZXIALAAAAAAAAgACAAL/hI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2 jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8 vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ub q7vL2+v7CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09f b3+Pn6+/z9/v/w8woMCBBAsaPIgwocKFDBs6fAgxosSJFCtavIgxo8aN/xw7evwIMqTIkSRLmjyJMqXK lSxbunwJM6bMmTRr2ryJM6fOnTx7+vwJNKjQoUSLGj2KNKnSpUybOn0KNarUqVSrWr2KNavWrVy7ev0K NqzYsWTLmj2LNq3atWzbun0LN67cuXTr2r2LN6/evXz7+v0LOLDgwYQLGz6MOLHixYwbO34MObLkyZQr W76MObPmzZw7e/4MOrTo0aRLmz6NOrXq1axbu34NO7bs2bRr276NO7fu3bx7+/4NPLjw4cSLGz+OPLny 5cybO38OPbr06dSrW7+OPbv27dy7e/8OPrz48eTLmz+PPr369ezbu38PP778+fTr27+PP7/+/fz7+/// D2CAAg5IYIEGHohgggouyGCDDj4IYYQSTkhhhRZeiGGGGm7IYYcefghiiCKOSGKJJp6IYooqrshiiy6+ CGOMMs5IY4023ohjjjruyGOPPv4IZJBCDklkkUYeiWSSSi7JZJNOPglllFJOSWWVVl6JZZZabslll15+ CWaYYo5JZplmnolmmmquyWabbr4JZ5xyzklnnXbeiWeeeu7JZ59+/glooIIOSmihhh6KaKKKLspoo44+ Cmmkkk5KaaWWXopppppuymmnnn4Kaqiijkpqqaaeimqqqq7KaquuvgprrLLOSmuttt6Ka6667sprr77+ Cmywwg5LbLHGHotsssoTLstss84+C2200k5LbbXWXmtaAQAh+QQJAwAAACwAAAAAAAIAAgAH/4AAgoOE hYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/A wcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8 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 u+AIT7jCF87whjv84RCPuMQnTvGKW/ziGM+4xjfO8Y57/OMgD7nIR07ykpv85ChPucpXzvKWu/zlMI+5 zGdO85rb/OY4z7nOd87znvv850APutCHTvSiG/3oSE+60pfO9KY7/elQj7rUp071qlv96ljPuta3zvWu e/3rYA+72MdO9rKb/exoT7va1872trv97XCPu9znTve62/3ueM+73vfO9777/e+AD7zgB0/4q8Ib/vCI T7ziF8/4xjv+8ZCPvOQnT/nKW/7ymM+85jfP+c57/vOgD73oR0/60pv+9KhPvepXz/rWu/71sI+97GdP +9rb/va4z73ud8/73vv+98APvvCHT/ziG//4yE++8pfP/OY7//nQj770p0/96lv/+tjPvva3z/3ue//7 4A+/+MdP/vKb//zoT7/618/+9rv//fCPv/znT//62//++M+//vfP//773+SBAAAh+QQJAwAAACwAAAAA AAIAAgAH/4AAgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0 tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w 8fLz9PX29/j5+vv8/f7/AAMKHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmT KFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1 q9evYMOKHUu2rNmzaNOqXcu2rdu3cP/jyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5Aj S55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx 48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDix9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz68c9 YMD+ef41MsSAQwgCxX/lEECAIQQWOMgACxIyxAADDoAEAVNQgeA4BPQH4SAVTuihh4IM2EQSEybxxAde fCDFhuFAOOKCHibRxI1NIMEEhRMm0ESFTXgxhhdeYHEgjN50CKH/kgM0wQSONz7xRBM84jjhEB+MoSWR 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 TI3UQg00Sws7ZmMogmJtfn7maI7mq/IloI4JovQjQpDrQ/AzvqLqsLMrH9ACB3hVTjcwm44qjAJ3tY4J 69rYuW7qvs49ZTMlCZAARTDUmIhrsV4yR0T/68t+CXtECLm+BLzu69yZAEZQBEXQBGxCR6YCNY2I7NKI 49/eCUKgYRJt2eReNv2S7kVgBJBufSyMPUlFLBRD7/X+Cc+O1D8zO9au7gD/KzyJeoXWhR7qJpGd8KKw 8AnA66Cr7kWwl1KyBIMgjDhYBqi3BSgn5Rq/Cc9OBB2PoLlOBCCf7kZg0oMAd3FS6K7N8i2fCQvP8MVr 0rpe0s9eCMVWWHf886MQ9G7NIEeP9HBuxUxfCk6PCEjNCNZS9aQQ9JjA5lyvCQsf9r2Q62R/9mif9mq/ 9mzf9m7/9nAf93I/93Rf93Z/93if93q/93zf937/94Af+II/+IRf+IZ///iIn/iKv/iM3/iO//iQH/mS P/mUX/mWf/mYn/mav/mc3/me//mgH/qiP/qkX/qmf/qon/qqv/qs3/qu//qwH/uyP/u0X/u2f/u4n/u6 v/u83/u+//vAH/zCP/zEX/zGf/zIn/zKv/zM3/zO//zQH/3SP/3UX/3Wf/3Yn/3av/3c3/3e//3gH/7i P/7kX/7mf/7on/7qv/7s3/7u//7wH//yP//0X//2f//4n//6v//83//+//////////////////////// /////////////////////////////////////////////////////////////////////////////0X/ //////////////////////////////////////////////////////////////////////////////// /////38LgQAAIfkECQMAAAAsAAAAAAACAAIACP8AAQgcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rc yLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQ o0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw 4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+ve zbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv3 8OPLn0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCG KOKIJJZo4okopqjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BG KeWUVFZp5ZVYZqnlllx26eWXYIYp5phkllnlEAM0NERBaZo52ABDxJlQnHIOhKaberVZUJxw1glAn2je aWefBBFAAJ5yETCAoQQFyieaAwAaqJ2PFirBpYi+tWikkQrUZ6R+CCLqIJKuKRCddApEgAQaPDLBoZmy /xWpopv+OUAgghAiqqh+lOrpo5GuWUirj2hQSCORxKqWoYsqqmiou4qqqx+owvlntXxqEEIIj4RQRhqb mHCIsmhtyqyhCugarajBBkstrbRGmkEIJpiQxgttvLBJGocQ8IezhjJKblfxbjqAAtKqu+sQeeAqagYa lPGCJ2mYsC2995KiMQz79huwvwP8OzDB5m667q669tGHICoLAnEaMMQc8wsvwECKKaa4YUobbGzi8ccC j7xVyZHmGi0hSBPi8MorE/KICfjK3EbOObuhMyn69hsy0EJPdci4bJqrqNEJJ02IH9CyLKq2NcPQxtRV W221KRwrAnTQXSuV7ECKfP9t0LmROqyw2YOgnXbTj2zi9s1Uyz03KW2kYbgfgKCtZ95HRaK5QIcoMoHf AzXLadoom3022g7vqsEmGt/sONU4b2xCBmYLgnlSmmve99efg+3srEWrizTtwyNduB95hLrytmngjPPc rztPCgxlPJL05bcHpYgiZXTfvSO8e+75nwArinDSGaSvvtmAKOA+H4KEAC7rjtfguM7OmwJ5GtYTgn32 PpmAIkzwLe+ZwHOHEOAEHgE44PkLEOqLYPqS5j4F5IEQIdjEC25WgxrY4IM26KD98he7NpigVf8DIE8G 6L3upSENjejcBCZgrxBIwGDO+sMfAGGIHkJwfcQjhAX/Q/YtGLhBBze4gQ2SmMQOQi92MKAZxyagwqBE woUF7N4Be1eGfZVBA79blB/+YAge8tAQETSbAgRSCImR4gY72IEOdjCHOdCBDjoIIeywRjNT2IAUZQBb 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 g1qJSrUcr++Ts6B8y4VkyER8xra0AwebQKvhEutYNO6ChKdcS8BMqq50sDrzyaBMx3U8xAPoSq3AJIWB q0AjCEZBlsCszL5qy0GAy6BMRsU8RLrMigEohAVTo0oAkY+IhGt7K8tczaXSijmjMyErxd7pg848xD34 PmtbGOnbjhcoAzViTeDkq/8OQzK7zEyUpM3aPMTeq5np0LoRCk7o5KuuHALDHAR2xIPaXM6wiASf8M2K ik7wFMy29EmuZMxTG4tI+A5GCU/2tCjG7KcDdArGNIvJtMn2vM8aes/zlE/tJAtRwk8AfSPzDAsLKwsE CVAEbaOuTFAGXbIFbVAIvbD+jFAKrVALvVAMzVAN3VAO7VAP/VAQDVERHVESLVETPVEUTVEVXVEWbVEX fVEYjVEZnVEarVEbvVEczVEd3VEe7VEf/VEgDVIhHVIiLVIjPVIkTVIlXVImbVInfVIojVIpnVIqrVIr vVIszVIt3VIu7VIv/VIwDVMxHVMyLVMzPVM0TVM1XVP/Nm1TN31TOI1TOZ1TOq1TO71TPM1TPd1TPu1T P/1TQA1UQR1UQi1UQz1URE1URV1URm1UR31USI1USZ1USq1US71UTM1UTd1UTu1UT/1UUA1VUR1VUi1V Uz1VVE1VVV1VVm1VV31VWI1VWZ1VWq1VW71VXM1VXd1VXu1VX/1VYA1WYR1WYi1WYz1WZE1WZV1WZm1W Z31WaI1WaZ1Waq1Wa71WbM1Wbd1Wbu1Wb/1WcA1XcR1Xci1Xcz1XdE1XdV1Xdm1Xd31XeI1XeZ1Xeq1X e71XfM1Xfd1Xfu1Xf/1XgA1YgR1Ygi1Ygz1YhE1YhV1Yhm1Yh31YiI1YiZ1Yiq1Yh4u9WIzNWI3dWI7t WI/9WJANWZEdWZItWZM9WZRNWZVdWZZtWZd9WZiNWZmdWZqtWZu9WZzNWZ3dWZ7tWZ/9WaANWqEdWqIt WqM9WqRNWqVdWqZtWqd9WqiNWqmdWqqtWqu9WqzNWq3dWq7tWq/9WrANW7EdW7ItW7M9W7RNW7VdW7Zt 2xQNCAAh+QQJAwAAACwAAAAAAAIAAgAI/wABCBxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPH jyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1K 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 //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////F/////////////////////////83poAAACH5BAkDAAAALAAA AAAAAgACAAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmy pcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOK HUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXL mDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868 ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAG KOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDG KOOMNNZo44045pjgAKroOByPPfr4mypEEilkbUTyWBCQTB45G5BJFpkklE7KJuWVRTZZJWxQYoklRgQQ sKVjAyAkZZddBpmQkgqFGeZCBPwxpl8DEFBmQWd6KWVCeybkJgG6MGJQmHWKOSdfdtaJ55VpXonQAFoe VOcEumzCwjNi2hnmH24euleimi4apZdUGjTqnYMWcsImluriJqd/Gv/qKV6F1gmpoQMoMEsTvDYBKaSM GkkQmsIOq8EmbFi6yQmwhqnAH4rOmpemtiY6QK+9DjLLtgroWSyUoBIw5QAfwKANDKwu+2qhb0pLK6G/ 2tkEIdgSQsi2+HarJwBZSnDssieMMQY0jpygDTHaaJOspbW8uqms7tZVbbUK9EqvvczgO0srrXgLrCoD FKIBNjDAgA02bLBRMsIJp3spobFGbBeoE89b770az6Ivo2gSoAEL55Ys9MEJK8wqC9E8rECcEMsM18Tw VoztvDhrrEArZfL48Zk+R1Ny0OYSw7LRR9ciAdMDcOq0XJpSayuv9FqMbysaqwllmj5/sMnQYo//TTYL rTb8J6prr3Xr4Yjv2ozFVeerM0EgZ5mlBhqcIDQx3HDDMsIop2vpCc+c/WzThZ9FLc1u15qrrnNz28qi Wk/pjAZ6wyB2N5kjLLY2KC989BgT/Fn6VhM0BG/bh2v6x/KQLn91zq8bhKauiXzwgcGY45557pyn7Lml mDI9PFYTPPMMQ4ifXqghzBhiCPN/PMs63Y8/qgrrzFj/QTQHc9ON9tvbXe+QhSwWnKBh0RpfVWrBQIfY amJpax/73Le8+MVPFVZTSK5mwQzaWY8FmPNfN2pQgzcAUHMmS1myThA84SlwKZGIhEEYWItnFM8hyNvU HybYPmY4L348ot9C/3TVPv2NAQaZG+Eb3nCDJt7gf/4jBgy8F42z2alZL0xKDGVIkBra8Bm1iMjhltdD CfqwghekmwKGqABD6C8amwhhN5boxCaacHsmO8EHmMEu0mWRKDFkRAwHYsNaTOCQDYRIopZXiB6yr5EV ZIYC9MUQBXRQfyfARhJLaEcm3uCOUmTDGOzlxz8aJZAnSGUhyzeBGpbvfBAp1PLcJ0H2nfFZOitWQmZh iE2MYX9Ay54nP0nHN3AjhR+wF+FMiZQtpjKV0GCg+Q4JxkO2MowOTNsOe/gHbqKRkgv5w6pY4AhHTKN/ SuxkDXB3Lmxswl6zWCYzi7LFSDAilUibJiJtCP+NMUxTmuiLUzfbx6kKioohthgnLgpBjWtow39LjOg6 Ncc7bIySEPKc51DqGUNpGBB017Rh+cbwzGgmsk11IiMzQCU9kDEEFydgwTSmgYtpIEuTACQhRZGJ0Yxq tCaRAANH7ckIQQ41Es+cJhhFStJngg6bBdniQFK6PLeZSpcI4cUZZkqNafjCq1/9WtgQVjKUfeBXGinl Ty9yVHtGYwy64KhQ7ZlKXYi0fDWMKQs+egIuAqCeRp2qNgXC0qsu5AyIncYZkJUykplLaCi7RgqTNQhg ZaRTa+3IURkhMLi2VRoBAyMNn4ELlxnQqBxF7VQhRq2DYJUgv/jFGTCBiZn/3pRkRRNasr66sDH8yqUG QcEvcEiozGpWrpwdQzSi8QHUbvGeT5UmLqTBWEul1rmCXFOoDGsQTMT2F5hA7FapwYaTmUsb1zhZKNgw jRM4Qhd7rYXWIBVc2RrvVcY9bj3f2tnlFrWoz9AFSQ2ICzBCYxel9R4vePFcwA5Sg4Vq6UG8G9vwcpUa 1rCGY7FhDRVuwhfScIT7kvYrtA5EuMJliMPald+MxHCujHgrfzur3M7G9MYnCBQuErxbXuwitZH4sV8f lSjudrfCs8XwNTJ8jVAsmQ0ZtlSIbakAYM13IL9AcYoHEqsuY7bFGEktf2e8XBvr1aks8IUvGMveBQN2 /xeM+LGg4GQn1yYEBSg4Q0NFoQ1RXOPPobAGhpHlVV2ImBmSTFusJAAAPGcZxQTxMqyapVYwQySQupix wDT9TMDtda8x3QTJOueLBQvZnhxFH30hAoZNYKLJxChFKbQRilpbAxMZpgYLQpwIREuynwJzqjQeHdsz oKAgXk52pS3NEEZkusYy7u8Y9rqJaXjvc6lkw+6mOA1elPrNUoVTAh0SifKG4mClEFutnYwJanxOF73O 2LNq4VSn4hnFsT02lyn9sD9hkdkSqUWZaRztaauww8liARiEKg1s9E9hM12wjwGb3YBCRJB7C8U2tiHr bYji40vuKogdEe/4CQQMKP9A+b1niwJMaDm2kQ5TISrY5VZGo2EAj8gEPkDjTdeYBSrjXa7DewYw8OKm 5612qSUO5CET+SFG1fbBYr0NYogiFFenRlelAW9fr/HEL3d0yx19hiwPFwCFSLv73PcnCRQC2M+QU84f UgtHfBTaAgPaCGvADa1rPbwoUGHKfLHXbnebF13Ns5vD3SaHCBLjmAN5k5t8dWsU+tD1OzGxNz92fOOZ F9CwhS2gQXq2h6kWTT0BNOb+kNiWFxss6PkmuBEHOcThiRwWtNZPhjIWBHnBap5GQ4d+Bl4IteJtqgUu 5oz2QtiCIP+1JzYwdw0MhxcM1fjz1h1hC0R/vSDC/a7/d8VedmM/GgU51gWO/TmBgjmV+axfCCbYIEJu sCGVY4jjDbzB/zjUYMmCZg265XsxJHGIx3u5Rg1FV09wAg3LJxAOuHzL93hExQh7YzKCVnxgQFsz5Qu6 YAu2hBC/UA3V0Al/Nn5il28tdwYsoAvQME6gVm9jEAm8EH8N8QswsHdvUANSlD1xwH/8dwMwkGsaNkXF x2AxtAvepmF/loCKhYQPhhAOCGcCwQg7VlS4UIGBlH8kU33FJ15etQvQ8D5ydxAliHUfFwok6GhmJ1uY 4Au7IHrjhG1OFVRgYIMM8QvEQEKcxHdJ9INAKAfEkF7Ed4QM5gtBdgbWkF4nk2Ed/+ZOUJgQUziBArFj E/hf//UMq7Jh3TZbtcULuGALZYgQ2fdxpqiGKihbiAUGoid68PVp9SYNRXeHeKgQbLB3nLREJNQNcuAN veiL3XAuGRZxWsULLNA5LKCIi4gNf3ZevDNXUQh9VohgVAgAETiBqGZPmihqJZNw7UYNIAYNhfB9CNEJ pniO1nB+s3UGu1AIa2cI0PBpfJVKu7BwtFiLB/EM2sCHJFRHS8R/chCQccANRYMNWrdVptZqKDNqsMY9 CiNUBoFqRrVjCBZIcQZnmEhUBXOByLgJgoZgorgQ1ZAN55iGnZBltJVn4uiOhgCCCVVvz2SH9oiPhFQ+ 0AAD/P9YA/74Bv0XB3HwBkXDO1o3U922C4jVWGETQE14BgghkROZhaiGC7vge4/HCEa3C9ejMlNkKUBn edIADSanENVQkmlYDfn2iYUQJ+6YdraghEhVbzIJBkVHk+ZTQ9Fwi/zIRLrIk7fnREFpkEN5eIglaubV P1aXe9SQEEZlVLsAZ5e4C6lkVCi3VUD3eglXeB4oiqPYXWh4jtnQCdWwgrWFCw9Thp5YDR32UXG5cPpW i1+Ufzmpi/34k8N0TGXld8LXiUdZXl8jRX8WcgoRfXGWhYsplUVVjy03U7xpMlxZaiPHPvFjLVckEL9A lqLQCZ3gXbOlWIwAKwSBAqgJaOn/lUp2OIsziY/lk0n/s04j9D9zdHt0ZEfHZJCb4G4HGQksR5jmxWFN xmGY4HTQR1QItniPBw2CpIS5eVPnskKNqWYf6EOTZC1pUwuR8AvmaIrXAJokiGRbhSkGsYi/OXlncAL2 WKIpR5MAQFrOOHWYw55M1JfyyV4XBo71SFtncDLlxQa4BqLVB6AEEUi8wFXTUI3LV562FXRTdALLtwvh yD5uUmIEIAHQwAvgSYLV4F0EkVgzdQbPVxCv9mfZEKKYsHCzeKIoOhCZxHvnpYNL5JM+WUfa0FU2VZ8+ BgZ/R5ibgHK7R4gQiRDHqWd+16cTqIRbxSq86U5fKZVc133Q/yKhdUKh92Z2B7ELW8qUBfELPOpkTnYN Y8qaC3emJ/Z65kUMOkibTCSQTlQDMGBbXaWEGEYNtIUyRieXGAai1nCPEUmDwjeUPlaFRRVk1IZ0bMAC uDCFLkiGtaIpEwANKPddrVkQfzClc0kQGzh5YOpk1WCeuFqFPppzgcd7DoeLNwCfdFR75sp32ECU0yAN tXprmLAJZYoJqGmr1FCDEVlUWrWrCrgLAJCJ0RBqhoqjqkdaIClJ0AKlEgCpxIYQ7cKv1AoGI5h9GYqa zDkN5ykQDIiHWSaq0+c/JFR7ndREtWd760QMlsdVUJaARFerIdqEmHAQ2SiXu9qrzwANH/+gC9cDsK+3 LOazY2PIPBJKALXArPl2doNSSvaIZyj3qb9AmCmjcBgLWLXochzrcB47rsQUUTcQkE80iENJDRzWroKG a03Io2VrqQXBfEG2pTVYC9ZjC0O7Yx7FWAZUs8WqmVVWYiHzDLtwfgyLEKyZcvaItn+ln2zwXBTYrZa2 hguZLMLFBg/lSREVnzdQA6XgZLo3agFIhNbqiL+Za9tqEBcJBtAQpTMXJ6NHkdZmQP7ksxAatEKLC2wY EYJbu6EbQze1CUP1qwMxAYyWc1lGQOFHW7+gbSVUQksERdyQbujFYRvmd1rHZJtato6YYYQLs1iIQI0q tNfIpAHzAQ7/OIYr5agEUAiMwAtZJhElerG5iiyI+KvOJRBpd0N4eKVmaaWhUAp7Z3WxVgrLizB+9lgw AL0Yhg1Yt6nVm2vTqhCBBAAFpSk1FIHS8JUE44Ca6ah7K7tG+xCe+qkMHEMEmI3wK1IS4LsoapYR2wmY M4gOpQ3++8K0VrYKCKhKtm5/dqWKN3HNZk8DkbcEIHrFOl2hKHqkd8F6G7u78KwNoXLsmxA0aHQijLiG JAEl/Lv4OIIRWw3mAqvZd26x1r8I04RD2piAag3r5mSCa486vBBFNSx1UgjKR5Gh2JKGBp1HDMdSGboK 0cEcLF7FV4GM8Awy9gG+S8VWXItYDF7F/2t8iLWItdZnu4NeggaRQToNTHaCCxhUAtGYDMHDMed8pGfB Lsl9zuBD8PKoF8lqTXxYW/WNmBB7NtZUvmRI1oSiERtbYCBIZLqj0ltrIffHAECr7ZpnC6fJm+ywwXkQ oEx6cwyPibB2iHaw5euAjLB6DrG0EbGB0Cto94d/nSVq92c2hky/NojFZpmiz2BUVAoA4HXJTaiAYPBj WjrDq7jKyXwQQzt64ug+3PeOZ4TKBQZVC2GmEIF4BAyr1ACTJ8Cb4WxNVFwI5Dx39isQ6Ww+sIRltMWj GRjPWoVYoNjRJaq4EGFgttBIosdDvrY8o8cItZCWPkWtEhFUNHzQvv9Qb8doXrOcdvMb0XNntOYTyAhB W/K6iNYbzx5dhUa5vhkReiXtPiBISyn9B4VAWi1dZBxhVDNNwN2mV3ullWV1AtHgCHWHsxMAf3hY0QtR Ye0aXsVYEHI5V3osEXDbSM4H1dEs1UNrNtaymRaxRXa6zdB7eJ+2N+00rD3HXP8FqjC7rbRFDajJ1nvs wRaRdrNkS9BZQW/X0iW2PC4WSLp60LzqbWuGLCUDMAQ3Bo6Q2IqdqwA6W2O7wIs9ENVAEZTtSGeERgzk 0s2jNn3t2fXkYx1NlM75VaOWcDV23Aaq2qs9EEHFeFnqibB9EHdopRRRQXb9QwwkzRNwui/dyYn/u5iR MIHLd2DBJ3zTN0VPGzAEh4nLnaLM/WKKC142Kn8aOtsSoVKX/SybGTK4oAvyVb4CIa8v28m+PWTVXJc0 NKXCpzJiA66W4nPKxd6r/dN/NVQKkWdKbBDYqaET8Sx3bVCAu1cMhn0kOOAL4dkIIVq1ALd2S6kO91AV 1TuitN7IB6o//at+/WIDbeIGUYIbHpr3TUZopBDfZaUovMEwK9I0JE3UTJGKGDY4em1g3V/KbeMW3Vfw 7dcVQYLYWQ0GVGcP4eFDTuRZ/F3gVRFwLE2khYUU2ZgLLuOsMlNT3llVjqIAls4G9GLQKNIDQXpVHeDy Wg1zeindbRDdNOZi/2mlZn6lEzFaNWuFS0qcjSlIHTgNMkWUvOBsY1bn+BjIP61XQzVX1dRKB9FNPHez xodnwcowEQHiDFGCn7mhFRYRTA7pUglnFomJ53uc+frHB55p0SDhc3fRhHTjuOBpWJ7j9qQ/1pPOMhQJ /URtl3ljg21AGa4QnN0QsG6KJ5nFEZHcup6R4Q5/pgbI4856gsxc0GDR6YwL0ybtyZLlQRVjy8XsPHeZ wSqPoEZtLACe8toR2UCSG7cN2ZDFJHhx497G5DbugMznPyXI6h1s/6pXAVuQBKiERhcwy8Vc+qPvHm9A IO89wnW/I5gRJCkKpTDwomDkFOZ4Cl8RCX/uOf/3VgGz0LwXsGMlQJbiC6voVAJjPRowAdFQ7fpO8Sez CeaMxRhxoRsnCk2/oULN4yRRlapds+n88sz2DAOGW0LzNVOnOd3TWAYZg/gXDYWQNqEGi9S+VwmDMop+ zhjh454JmhWG5CWh6wRB6jY4AU3lWAkjwGKzPZqjpn8/7arkPM/w8fJINLzDBiRv3xYBcwPR5SjsElXe SjwNcM9QMNOGW2BjO4JPkIUZxgP0OWNoS3AEiyC/V32zoNQQW5DfEbJu9yiB9dtdyzYoyCTFjUPTP4LP N1bHiDi6CQgGDc9sCBkAOFwpj9rW+r03Et4V+yqBVwNBy4dUCHhYQ8F2jAL/fDDKa5thc3Vdf/QgpguG Rjl3ie9s3zdkhQ2+QBJSnxIMdE3zf02HlPsG1lTcXzQiBBDdunGDUVCbtoIJYWDDNs3XCWkndH34cAIb G4ybNrFgoY3YQYQw2OAiAMDkSZQpVa5k2dLlS5gon9WiaYvmhFoTdNKM2dPnT6BBhQ4lWtToUaRJlS5l +szpszFRx7BgA8MjN24Cu31ceA2GKIUL2fgi+/DEmGgsFl7MWDUhQ2ybbBUawNRuUWjQnkGjeRPnhEI5 7w4mXNjwYcSJFS+uNbPxmLMnJGMjRgyr1o/YqF0LpRAuNV/SpOmKNvGD27UYqzJks6n1iUKFFBiuuxjA /869efPm1Nn7r23gwYUPJ158uNMJM3VJjXqCheXLArkRo1Yd21rWbKaN1uWIIsVNbNmIz7iR4wkFtQsP UM/UL2CctQrtxAVNV31o8f/6nmDc/38AAxSwuGeSS+6ZaCBT8IRNYIAOK6yI0W4ajMjbCJf6NNAwAw1c K0+jjcw7LxLE2GtvqJx4U5G33likCRoMY9RpvhZT7G9AHHPUcUceWSoQuZkUlMq5qyCEsKFppvEQRBZO qM8WQwxxZpAPXGOyScnOOwGFXzA5zMQ//kiqr5vKXDFFW2Ksr7f5eGuzRzjjlHPOxJ4y0Kkhm1NrOsug I0azJKtzCMsToIktzDAL4f/ovGgKUaWJDKKR7BdKvVzPRBMN4y/FvO7L6y8W46NzVFJLNTUmIH9MTrIh JXMQwj6JgWGTac7g5QxcweBllzFq+UMBYNOrBQwwUADgD1WSTWaZWDJghEsUwKANU/aAq0U3vXKiscwb T/X2W3ADRMFYlQ5U9RlHhowmmr18cTDWyuJigRd6dQVjF14YSWSAZPsFgIBCTrJDFTuWMXjgQp454RlV CKMWU9uesUXD2P6aby4JCOA3XI479viwccldCcjGoBnjA11mUlma8N6tTBs2OML3XjAiqTkSW/j11ySC BbYjlleSuWPoOxQg5A477krv4QH+eOawwEySLwOqMxj/BDANvstA54+79vrroUL+5aWnyn6KEWh28fC6 l1nY5W0wzohbbrkjkSC9hnm2Y2CeYwF6GaLvUCYWWO5wqdqefgU2zGDZI8DpswImLLbANqw66+8oIiTZ pMH2/HPQTfolZJFfYoSRSN6OJHV8K4RLJHulPQkFuYklYGcA+uWcWb9jSeb3ZGAhXJUTec60pV/DZCZ5 xhFV4PFCnGMBGkTDZIryQr7TUEOK1qVIAc5DF398jqEdl9KYcFV/fUyuY4gaTHCFicTcUSKY4IKZbSKW ZYBPZvBWEA9xS4MYSwoRpSgxQ4HLU+Aflrc0aLDAPLao3vJUorhgASsmCIyNIapW/7XvROMD/LpD3sh3 QhT2iHRi61I1rFGN0YnNfOPCRHVsWENqXAQTmBhbUfB3B1jwzm9C+93QYpEs9qiicUkEn0sKYYu82EKK CFzgH9hTC+mdpxB/2GKUJHes6jmveQrAYAYVMEUEfhCE39FZ51L4RjgaJ4YxXGE1OBMKUYjiGp2oBiZW eD5qWAN+1FjfGY5yv70tq3f8E1rgjsiexSmOX8dryRPtowtMOiKKUOKipBbVpGdsMVEowR7lELU85YUR UVK0RSKgpMYMECIDFNHAAEpowjjmUpeKCRmxSPeLa+Qxj3gURShC8cdxrY9eb0MK5wZmByAKsXBI25sq /KZEMv8yQwGzABbxcFlJKOJCNKLB5H1wsQsJiqhJjqiJAUvZQUMcMEyGYEYhFGgIWzgiEfpMhAZgKUsN 3e+buyRoQZkyrvOAYXTVECZIhgnDFeJqmbuIETSO8kzOqUJwyoCF8Ia2t2pek4wJlCTiXjLSNEmDLJvI IVzYos4mSYNLTnwnPA+IQEPs0xE7dYTlqkYIoLZxoAYlalGHAoZPnqBYoTjIy/LYidHVblcngRG2CkGA khAloxlthTKUMYtYKAOkIPVbMxSAT3pyE2/FYwkZLSkNbHjkIwd5C0y5RKke0rSmXszpTjGpNTUClRm6 G6pRDXvYliBVgp+0SlO1EQpr2Or/baebSSEkIIFCVNVQWTUKYQM4C9BGc6x2GFwsmoHPRDhDgWql5EuU ZwtpVKUyH5nrQWKGJYXi9Sc1jU0+u+Md7X0QqEBFFv4Ki1jkIjeLHNHIdQqiGV7gghGVnUDGsIrVa0ls KQFsBWiB1YpW3GFZdsjA7VQRwAEwI5+OoCcz1NoKk8Lktb64TlNn+5HbsuB8ug0KjXoLDU06QoQfEKE/ qTbc4eoMd8llsHI/uajmNoQRNLnqH65LAOtili9DwSpLuAnaViighENbRhM+MAFbEGAWTbvWTlX7QAKy dSWnhO14GjtbbWCjSbzAK/qKEpu8+DVzH/gpUGOZYKQlq8FL/z5sLTTy4HS2BhfWvXDGLEs5k9hCKIia 8R+8G0CQqoJZBD7ZBzSQiEtCyRlUA5aJiBeTpnGRi7uwMY5hsKjc+tgo18pLIob8AQQP98ixVLAbmXzo XdYiIw+20iZ0YeGMcZG3AQPMF2OSqNicJJXbDKCSTbK3AQypSQSWDKuiUctJgm9jL9FYouZcX48gBM/8 PUotbCGxrGGOyAiO5ZERrODjIlrY4hvDeC7ySQ+xQRdzmfR8JFDdbvWEcvGs5x/oGaa6zGLBUit1lMfz mrNkQIAPc63GoPdEizRWxwmldVFs/W4p9tOfgRa0kYE6CBkPW9+hkwAL4PIaCToXBtKAhv8Un3hwFl1W Aj6hHJSmndNEXFs9PVMJGCDDINe4rzVNGoPG1jpul8hni2Tkoi1OYGx5LYoXd0VKbFJka2YTYBD2pjch LMzZfed8fIVY0gm+YxG6nkCTc2H2Zf3L8CgxG56JYDoCrQcTXUnQxmvZiM81Ri1UGbzCfzC5Rj60EV/w MK9GmVGlZ6RwWdJbTDpnO/kIoIF1FdifWUs3NgqVF2c/+9nRjgkr4Rklpje9ijCRqJIqVJCN+3ySQCm4 1sNUC180ekm0EvtddKJ3vf961W3nPOgIQDXLcc85T8YFK22x94ULxdZoRW3EI75AVBIeDFlC+UWqjuqg 2NoxzAbAGX7/QY22LKmPlrpLxTArgT8E1dOdZz7YJGCIDW1PA1N58hhMXwvM5r4WJzF909ubwAYS/gys GkOybR/uAPbXknl5GgB2iEMWSAMXDKJGNexfmMuenRDaXn7z/d8xozM60KuIxWKBMTAUaAMKmnCMmsCn Voo4Q6ig2HOJHbIVyYg7yWCSsyAEZRgKSzqdk8CEPvqFMyi9cAo7a4is1AHB68m/jNm2/4vBU1G4AJQA DkkL8xgDDDk9n2iMBawJmIOSnIoSbCMAknu6lqghTEgSXkCLuFuXizuLDwi2mKAsRtiFHRIZiWElaOAF asCXZbKLy9O7/pNBMyQVhasuhbOs6Vus/7PAD1Qhkx80PZwiQisykSN0CReCnwpEgUhghCdcl1Ibg9Qr itM5HV6gn5PYQik6J7IIw5XgiaGAD0s7Q0ukE8uqNKNTwwyADI47wN3gspSQQx8suMZjJQiUJwtznOTR oJQ4AxTwEkywBhzKFWKJhCckszHQBUZACkagl2XCBZm4FpUqC19wiF3oxVHECaLQiUt8xlIZwwCcgOm7 QO/ZiyDMrh8kk9wwxVZ6wHgSEysyN8Yho/RQifc7g/jxQkKqHWKZiLjDhfsgFtkxRF6YBl7whYlKRgwx Rn+kKBYEAKe4CWgsyPHBPJ2wBVIrM4rIje+ADIqSLr7gM92It8Dzov+TGACPYx5sOxEcqo4zOB2biZ1b jDtdGEl6RIpdOAOHsBVg3JVl8keyUBPpwhD2k0SDzEmwAQw/y5wByxxc8A5JARH52wVs0Q2dusgIRImm ISOUuMO1MwkRTEFBiq6ApMeaIY0PiARewMp6LAp8YUl8xEdgfJtdIAuHOMbQgJEYeRuJdAqdjMuuwYk/ +7OoII0ESadNgAj5CzKe2immE8JKfIntk0oXokpqyEe37EWvjARe/EqlAEOHYEJ9LMtdKEYWIAtdyAsM OcvQAMi8kEvR/Ba/0LXMyTVSI40M9Do2gIhMcoS/UsrB7IkdOkxruAZrcAjFTEaT8ErIZAp6IYv/M/AF XHnEXTFLtFxLzizGz8QQtLGo0YzOUWkMiRkyM6kFAUsQjGNNFsCk0igNivC+2YyJLrnNFMTNxHxEimo/ rzQMyWTJYxzOZbrCyzzG+OMpXSiLtDRL59QLBhwZZZROASWOvsgc3nAMaPiA5gCRjGuNXSQN75DNoZjK a6hQ9DROX+DNk0jJmChMoeBKtRzOyZzP03mbsugOXYgIf5SGy3RL5xxInBTIgBxQGrWWWvgOWziQBUwL vVyb81sX4HKleCIKCrXQa8AEMNDHyqwPlOBQmPBQoQjLWqkVtcyXQ+xMsshMs3iIshgnFnXR52w/k3CK 6RLTGj3TxKgFP7OJ/wK5UUkZPStpjW8zD4koDe8jChiyv04wJtwEA/rMUA1t0h6EziilFxEdS32crkNc HTjdhC3tUi81y4iUrpMo0zJFU0xN0+SwkYrIEgblzkUZREeYC5SgnTPYhTt0iV/I02rY01C4hpAkU0aQ yKK4NaJ4m1sZS7L8Q8p6Bl0oNQbdUsnwUtEIjS+lKADgCzIl00xtVsMgkwngkCjs0fCg01I7i/vQspNQ R0LiBUJdCfvLhmzgo06oUGrw02c4HRiZrlqFyw/dBWLJx109xOlajm5bkmk4gYfgjhRVqU+dl+gys2Wd UWctWKXIicvyp07tNgjbS0I5gXWJIpSYho+UH/+VqAZx3QaN1aM9iixLdU52JYrMMtOfuEKbKctISFd6 tVfJ8IUoo5XQKCdMEo3Jc4iIEKHksFSD3dmDlQBnkKUbZJVrzRItQYsP0CQorYUzqI732yGU6ARRyAaN LQWq3YZX7aNkTFdomFW9CFmhuLVvNQlDMh16XR16pVenSJcoHL3W8AWZnVmWsb3M5AVWEdiB5Vm8LYrq SjvQG1q/vUDtgdIBsIVA4cPa7ARxzQZRmFqq7Qar5SMUmK68QJv6uFQP1I1XLB2VsMKz5dyzNZm1XRRp wM8UTVH6Woi0LLVTS4R0vdu8fd0e3FtBU9C/PQvvMTMNsDT2KISlbdpV7QT/xM2jbaDaxu0GPaoGk1BU vVAKQ1jXzHUJle1ctFXUXm2OiwPFTpHZMfCF1dCSutWAnFVUZoVd8m2J+LDBQdPOoWWBnzSzkQMATKmF QBFBSmlVxV1c4i2FbqgB470G5JVRuwiMrU2JYtHcRfTcQ4xe6Z2uBCmNvsgNv4LNiGiQuFAnnzu1s2ld ry1fDpYa5JgAI4sUv+UIhiSyDMIU3n2/VV3VjB3e/K2BNzDe/52cyQ1QrlTHsU0JBJZeBabevWhTnHAK zoRN2GSQ6wCRjYuKU9MQnSgbyurgDn457DMyUrvW8+geInMvbpqkAXgGddyhVQ3XxXVhqoXhGiiFPjKM /yeqD2FM3riJn83l4emd4wD1jZfTDXgcPZHQwKjAXelLhIQhWSiG3ZxoU40hHg4hME+64rjTgAUiIIHs EjAOY6ll3FJ4A0x+A1GwBqhJk63dheS9lQoEgADt3OhVYA0+RJTY1BrhM+8g2rgY2l3cHg7540GG4pmI DwLYm0EAPcxxDsnonlMbLm0KFiwUQUzYBLyqZBfeX0zuhmwgvskJJxDEl0jgViRVRBn1Yepd4AA1iZ1o YjLJi4vjiFgeRLSQPukzhFuG4sZAiYHp5UT2SV2LhkRQoEEYBAXKLBagWBSwEi7pBBeuARjG5DPuBMSw pBi5FVsBAyU81W9uCW+O6P8DDef4qOKTO+ezMFp1pph2/uhPU4VathyAMs32qqJf3YjRmVNKyQaqzeQb iOFtQOiUKERpgwl84sx7ZEJRjqyaiWgfkd5yeQ82wRztzIiNlgo/3h6cA+lBVgVYoBpmIIQmqOpmUIVZ +ANda69ZUCBoYBD9+gXzs4ZfQNxSKOg3OGNRoOmTsOmbdgmu0+lpoIYksZWlpUUUyJcqTOAnTon9YJHb wBqKYJDEY46l9ienBmkkMpEmUAZq4TqKqKLmXSzf+wXXwYY9QtzhxeSqzYYZBoCr6i8fEWIYUalp6Ocl tOtZpMWfrsJTBurbKJCdWOUZob6NYI6oUGe3TuxBppb/ceMXBbin1TIEXShAGLLsy7YKy9CK6QgFGIJj AEA+oMi0ldjaczLt0+5nkKSX1a4GFEhG2FYJBWYJvyDvCVhY8lNq6RNk3oZiasEb+Ia9PyjuRbmrBq2z yyDogdAG+xs+RsgY9WOJNJlVachu5qJrslxtWgzJ8I7jDaZtKC0XBXVCn+ToM2Pv9u5gLv5t4gmWP8Ci +qYUFFANhsgK/t1fgp4ObBi+CsS+/opKlWBLlVosjUiSWnHozcDNvCbYlkhX8+1Qn5pdudOADE9sTIGv DqeWQljk0TE/NiCGG4iDtCZo/uUG/q5NQfrC8aSpHp/V+XuwE8CVuQ6kCmVtXu0J/wz3CQlAMHzDlFzT kCI38iRCIvhCckjCTqRSjW/ThjeIA2+IAyqvARUfPlpMQWpocHeC8ZTw5ImQngvcaTK3UBV8cMIggOEC H4EimAHgkAyI88QGn/SIsYcJZOdQDRjocznwBm+4Af3+iD569UCqDl6Y7iFViaE5I12j8A/YhVoJpM54 LDPn8btIvv3bmYxKry339PI1ESTncBMxhL9I15OrgTiQg1T/8yrPMfvboUGqG6CwNhjfG6JpBWeoS4oY A5Yk82HyX1sR9rvQps2zn/tRdsV+mG5KIvb4AOtuDhiI8mv/84GQFRFvd71I9kraInjWqKFpBe4xswov 8Gm4Tf884tN1/EOT0Ga7yLeToEJ6f132gK8BsPOPJx4s0leva5A3sHZV9wY5eAMr3wRFtKzLaupLOxR4 DhxmQM2GP3fJCJTbLCbIEqRp+EPV6Xijv5SH+e3HkQwUUBIP4QY/v3Y5iIOt6BWTwKqM2e2YOCCEFxii mYXtMfeLGw1f8HVR0IZiqkp82QWLP3q3Xwr4Bm5MSXIsGhcw8DpiqHZVt3Zr54ZCCSUa1HqYuClFJxpm +LOsKVoMcYQCt4ZQoFpi0KPIQtm3r/xm+u2UwBQJ0AXfixbX4PN/t/YbQAg22IWcuDCh4PrCv4NZqGWH /w4kbs3RwIVpiKsIAXbQmChEt3z/3j+c1lIJFjufM9AIGID6vZ96gjgIbOCF07usLcNIW2f4uXMGKUl8 7pQe2YKQUtAG3EwSfWT73e998bcfjU8J81mbGrD2OKB6g0AIXsA+DEt96E8JosH0+xkADcA4cOMINgCI UNu4ESxFTBuMadN4MdzFiBGAiBInUqxo8SLGjBo3cuzo8SPIkCJHkixp8iTKlCpXevz1CwULNpvYsKnx pgY3bNhg8NzkqJAECQREFjJkqJDFO0qX2rGjys6AD5umsjhxggULa6G0lerWjVspbtqoKWz48BnLtGrX sm3r9i3cuHLnVnwJcyZNbAdlytykC5otW0JHFj2alGnTxHYI/5yYavWEQmvXRHXtVqNGN2LWpp2ZxubM w9CiIdItbfo06tSqV7Oui+IlC7ybYk6lissW4MCFkIL8U/hPUmXJlCq2c2eAhqsnxvhSSG2r5Tc3cV6j Rg2GNjajRT8j3fo7+PDix5OP+xoFmE06a7M/kTswfFu7P/4xZMsQcIpLlz5t+nSAMx98EM0uzmGjDTfR 2YSZNtoQ8yA2o3V3VnkVWnghhhmOBxt7tcU22224xSffbgTkt1FR950o0X7EFafKHxpo8MEunVFD0GXS 5fjGDW9wc1CE2zGCloZFGnkkkkmKhMJds1H1JAuAvZfbbhIUQoAEHKWIX0V3JKPMfsXZEf/jjLvw0lk3 N8QhRxxx3PCmN97E8QYxMAQ5oWhK6rknn32W59IvYGA1aIdRihhfLSViyVF9hci3YkRLDediYqoYMqMG kUQCxjQwvLGmHKHKEaecPtq5C54U+rkqq626uhaTL0Uy5DNjYOXkCfC9R+KVvG1UX2BcTqRUMpPeIVFi BMioQSKMaHqmNjWoOWqcoc6JEwwnDJnnq916+y24HRUygQTQ3OrXiLoB9cdgWtpnFKQAMKVKRcjJ+EGz oUWi16fUjsrmDZfVgM1yE4Z7MMIJd0uAic9cxQIuWDrK65VBdeSbUSpa1J9FhSyrQS0PzcrIJgneECqp APMoxxvTSBP/msIxyzyzkUJJMIEuJzxTYolBYTnUxfbpFi8AilU05AczTjjyJjbd4M0O1bIJ6pzcbAIz zVlrvfVqWLJbSC1/MMxwUH98TZ9R8BJdKUWi1aJBqoxIE10c39i9g783ePUVCw9x/TfggbNV9s9CEVAI u4ePjXawhihwhx0UGT2RkCKLXMplcUAdtTdyBLz3V9iwEYngpZt+OkiGI95rxYpLwK5HGEOjiy3MzELc REZDDoCzvfsu8qzc2BRH1CoLvDc3do6OOvPNO3944kLxLLZvi140eX2O6KJLIoPc3lTuTfEnke8ji8aC 8DVo7k2P0k2HvJ3YbOI8/fUDbrPXVxbu/zPiGCmmFDMSoYsxRMMRzAAT7oijijsgMHIZERk20qe5Obnv MqBLnkx8Yb8NcjBmNqve2MSGOJ9l6XqKaQUzPkDAaOhiEGBKxjKMQyxj7U4jJNNL5jznvpuIBUFfGZ3f OijEIb7qda5jl88UJzagWWQAA1DFABSQwmhEY4UHJJb4GOilBjoQI2DYiTa8oiabSKcbCNGJ6CCGNSKy sY1KEorY2iUR6R3OVxVxRgYyQAhCZGBAY1ihM1oBuWRk0UtahBy9MoICNmDHK2X0yhmxcQ1rhKY7brwk Jov0OotdBCjWs8gf8ihKP1YxaQp4CuRkCCYudvEiL4ng3gzCEzTqpP9vz+iOJTOpy12+igCizKMGqFhK DWSAGa14RWIkRSmOnAA72piNJGmpk5Hdkla8vCY29TQAPopyRgRMmij3GItkprI4G2FEznT2EPXQUjvV xOWQsinPeWJoFr/Mo4CIeU9CKENMTmEbRqpZyYewgZbagic86anQhX4HKty8ZzhF2QRk/q8/5rTIWW6p UYKiMRK4fGc8GSrSkdLFoXqE6C8JEYtXLIOQ/vwn+I4GUng6axPXuNq2tkUkkvK0p2tpygD2GVFCNGGl yzhqDC1qnMlVZKY6nRA1fPFUn1K1qirxzyCEmkc+ThSpSHVpMp3CEZ0+VUJWPStaR+IflKY0Fl7/9SpY YxqSslozrXa9a0YSE1Q98vGhfB2nDItVzlSW5J0bxStiE1u0xChgEIP4wxMHwAxC4DEDf1DqS1spkpzm UrGexasqMAtFbg5AruF7yknIutPPshavihnAIAhR2utxLLW4bC1uEasYGCXShCqpZm6Da1cxzcU7wj0u VS+K3OUyFyRMbS50o+tb6VK3usiyLnazq93tcre73v0ueMMr3vGSt7zmPS9606ve9bK3ve59L3zjK9/5 0re+9r0vfvOr3/3yt7/+/S+AAyzgARO4wAY+MIITrOAFM7jBDn4whCMs4QlTuMIWvjCGM6zhDXO4wx7+ MIhDLOIRk7jEJj4x/4pTrOIVs7jFLn4xjGMs4xnTuMY2vjGOc6zjHfO4xz7+MZCDLOQhE7nIRj4ykpOs 5CUzuclOfjKUoyzlKVO5yla+MpazrOUtc7nLXv4ymMMs5jGTucxmPjOa06zmNbO5zW5+M5zjLOc507nO dr4znvOs5z3zuc9+/jOgAy3oQRO60IY+NKITrehFM7rRjn40pCMt6UlTutKWvjSmM63pTXO6057+NKhD LepRk7rUpj41qlOt6lWzutWufjWsYy3rWdO61ra+Na5zretd87rXvv41sIMt7GETu9jGPjayk63sZTO7 2c5+NrSjLe1pU7va1r42trOt7W1zu9ve/ja4w2At7nGTu9zmPje6063udbO73e5+N7zjLe9507ve9r43 vvOt733zu9/+/jfAAy7wgRO84AY/OMITrvCFM7zhDn84xCMu8YlTvOIWvzjGM67xjXO84x7/OMhDLvKR k1y8AQEAIfkECQMAAAAsAAAAAAACAAIACP8AAQgcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGj x48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qd SrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOI EytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu3 79/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4v/H0++vPnz6NOrX8++vfv38OPL n0+/vv37+PPr38+/v///AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKI JJbY2wCqmHidKiyqWB2LMLooHYyqoCjjcTS2COMAPLI4wI045ohijjUCadyQRCZpJHE0otijkisRsORl T+6YZIsaESClQloS8OOUlFlZ45UxZtTlIes8U5CWf3QJ5mI8IoQkkXP6mOJBNjak5SEnbHLCOV0Gyuab ifGo5UFk0kkjokUyRACfm2zCwjNdykLAHwMcSihimXZqkJCyzNJKK2IuWpCddyoEaaQsRCNoplp+/7lp YV7GKisATaoyy667ygLlp0jmidAYkRZ7ApvIZjrrYYZ2uiWPA/AqLa+5JuTkmDVKcI4EBEwgwY9gFFss C4C22eUffyxbWKfOdspEE/A2YY45zLQira+NJoTqOeiMccIJLPz77y/suICNCywUS2mlbqo7GKzNdhpv vObsCg6vspC6kJC3YGHwuABvgo022mAj7hiCWqqpw3/Z6vIAsshLcTnTziKLLBtbOQA6WLDwzjsHb2Iw Nu+QbLK40ZQrKMstG+olxANMHG/NorZiLbY+DvAHFtG48PPXRJNcMqvGQgPo0kzrVWuzL4caKo8372ov xnIGWyOPEmCBxQk/a/8DdNFiHy0uq2Yju2XadrEb69Nrt5surtLaa/Wpde6Yqd6PEP212CS7ILQLng9+ wsKXHo54XC4zzrbinuKqK8apEoS1zgTovXffnBsNuuehD35IrG2eLtfqqjt7KbSmw9grzoj2OCTc59iO RdhiE0NMybvvPvgYv6Mt/Ftrq14ruuTHKjuLc+dc482yMIPFI5i7oA033JBMf/0HZz9uNNyqvPL3cGHd +NDBDAKiSxbKEsjzVME8hTipV+l4hATfN7L7caMGNrCBG4ihv0idoHsNA2BX1FQRiA2wgAVEB7q8NJAc OYSBu0KHBGfIAuvNzw0YzKANaqAN/Y2BW6YTYVf/DkHEi9gKXeggoBKZscItocoh0WLGLWb4iGiM4R30 cwMOc7jDGrgBaAcbQwYSKMSvELGIJTQUupiBQgIysU0NNFVD2kdFK9aQfjXgog69yA2gbSID5vhfGaMS iUgghIgTeAYJKzK+P7QRhY70EvOGBJFZyFCC0YjGLjZxvxzqkY8lO8G8bjXIpxTylAY5IyIPYRFYrbGN SSwf88rkkFmwER3pcEQJfIENYnADhzrcoxv8hg1sPGJeQSxlU05ZyIIoEpGKnIBFnrZGA66RfFoTyJgq 2asCQoOXncxjDX7phvq9Y3fRMEc5lAmVQoLhlIxgBACecYgJ2POM9rwnPSWS/ynyqfBcpNQmlhwSKmYg 8ByHgMY0wnY9oLmgHTYUHBbMEVB2IsWdGB1DNJ6RT47i85mInMAhFtkQHpEPU4xjVOwYgo4S7EJrCIXG M3ihCYP9zBOb0IQniBY6FqjTostk5il3MQaOcjSR0DzBGIpKz0QeBJUGGZ8CIYaQfDWEEWeYBjT+kFBF btKmJtPEJqbhC18Uy1UVBSpOhMrMeLJVqIwwqirr+QyBKVUdHCUIIyKx12YaJE4DeRpgP7VShcx0Gmc4 Q0yfAY1dTMNr78CpJjThixJAAxpjYAE0BqvWnbjznfBUxzr6ykzQFlKR9JzrMzIbsH+NQZ4AeCtsGQKr ZP8K9CG7SOw0prGLy0JDHbvwhSaw4QkXiHUaJVjHIZgIjW+ltbM2Eeo7GWHFdbxVqHMloiIT5sETuBWe u4CnQxZn24EuhBdZnQYmJpvVEuxyGjUVqydY4Itd2OIPCHTec6dpW+hSRLYaHYN1r9tMkGo3EkIrFjwL 2VfSQhFaFTXvQTDxC0xgQrfw9URxDWbcyep0rCdYhy0MCmEndSSE/sVIJEwbCSsuVaOkZSsA7glNdXzO c7wgMFT1VKuqKqTCFr7wGSaLCQ0XE2gerulYS+CIW5BYv/uVCLJSrBG4utiKmYynlmMc1zMq0sa82wQv xrzgve4VIs2S00J+AeSsZlX/p+3wRDveoQn4bgKn0xBwOgjoK+fdDSHswMRDBCVIKk+ExZl88VIT7eLX Mvhfz5zAb80Kuk34Yszh3YWZ+xoRFMuOIULGRIZ1Kud2tGO9OvVcZZvMxvzeDcIGIRg7EELoWvfX0BDh KyPWgeVFv7jRY2CmwIqaSHX4QnvTwPR1IwItHy8k0GcocihCEWdTeyLIHs7zOtLR6puVWFgDYQc7CJYQ WxsO1xehLrAb7eKQoZcX72SBvJWqSEacANljzjGDNb3jkhZagQ2JtifeMYxhCMPU7UgsqjVB3xKkw8kG ReBAUGsQcVt81gchdJvM5Wl0PwShvfZ1oyPlOU0IeRrz/w72KfuUYLJeOrxw9euDLXIGToRCG8MgRjGo fepor5esyeV2xBsIAEyIW9ZnINgvkj7uM9D6XOb+t8e5dIh1B3ipLNidhy18BkszswQsiMSYI+VyZS97 vFFWCHrbEQpiDKMYxTh4OziBbbJu2403K8i4x430QF8c4xk/VxM37r2pM6Tqvk581kGnYQ2bHLFngHch IyX2XYx5t76IvCYSK3kGGxLtFYnEQ4UhjJwTQ+6dsHCdKwsNiNuM6AIR9xmObnEKzx7wUf3DOfiFjrPV +p6GZ4i6f73oe8/vYJ4gNZEjD4ZwsQDmludFWX0xjeImH7H65uvn/T2RvWKjHcIIBf8n2M7zU6sXueoY MRsNehC/M33vtR83QnafRFvY3/ddEmmWg78Qvq7j6kt1bxdkA+fkAsnneJsXeX7ieZEQfcKFcI7HeUIF ehBhZrxAXHUWZGuXcJPFeufQPjYDaLImbhfGDre3dBZnEElUf+uwDs1VOt3iYmDAfwoBT/5ydS4wgDbA DcTVeMlncokVeWxlefBlat9ngAmYfTK3ELd2EJsmdpDHXoUUbUOGfvfFPgpxcWx2dEbndyRIELyHDrYA DQCjVNEADQm1VCs2gzRoEEb3TmAAdpuwVJuARcC0g+fkg8knZMzHVmOmCe3wfXH2gxK4hAuRVjI1W7Gl a3xVAuz/ZWG8wAhgoHBklX7oAHsIYWGcsIls1ncXF4QCsYJJhFmSolSmOAbN13xtGGuaMzI/k3W+hEcZ RD89ZIDJdwaFBG99KFQ0JYjfF4FC2GmHoA6KeA7qQIxbpn261iceFnmMwAsXJmoloA7LlXYAwAmd4A7T Jn6yRjBMF42RdwhiuIK2sA6tZVepqIqrSBCYADhbtEMW9Et5VE710w7GRWb9tognAIUPJYjGFXm7QBG/ pYgAMJAN5lbxpA6Lx17hVXRZVV9X6BCdEAqkV5EW5oWyd2G8II6iOIp25VpgAG9gwA5suI4AsAn2I05w AAf0SDK+hEM2pA3twFuWx0wFgWCS/zJkcnaEkQeKEfFbuxCQBPFbyMhgWxYNQgM0yQZbF2aFmNIQ2ViR FdkJ3ihrQkaNYbiC52AL/mJXu5CO6miS2JBF4mQDcLCD12M/tAg42qAJLgVzhth8N6ZhCHdnexgRjABc yFgQxKhrB8kIxEI0B+ML6hAJusUL6rBVmIgQbCeVpNcJtyd7ZzCDbKJ75/A4AmFvdiV2ISmSuEeDz/AO WyROGMRH3GA9L6k5fuMCNImP8DYQzXdsRxY272Bt1yZ8CBkJx8hvzvRdWqZrgelQAZNbidVbKiSRFOmY oUCVFpdYAkFoBhGHZXgCqSiSqbiKipSD9BiPL6lF8ghGflRnu/8FX7uFaQAwmQhmU0VTm7Vpj7i4EA3G V3qpaWc2EE+4V2AQV33CU34CMIlVX4opkY4Zfu7ACd54YfIEnQZBhaGTjiSZip85dfT0DLMJRsVUTPPj RW6gQWDEmtOQU2IlnskWkJwXLmBVagj3nv3nebsAXDC3ZdCQjLxggmcQMsXkOQKTedOofpiyOgVhc8rp DqkHbYmFf/2FCeNnhKcWkmB5nTSYSCJzoVJ6ofMzgHnUQ9I3nklWZ2dAookFBovnAjo5Z9+nCdunEL7Z okUpnwDwXbyAWKImNPwZMGNgeaumQkwkWJwlENjYCZ2wiYBqoCaokfiHEJyAomwXZ5M5kvD/9qAlGXwj xQJTup5gI5rBVAPvEJRltVsJM1nJVkhCRpJCk3kCl6INCZ/aF09B6ZfqkJn4iV5cKjI/4zljgFfBtaNs 1CYlFkTjZnRG9wvsOKhdCkQJgQmmxnM8xwmLCpYmyQhDc2S5Y0E1sJIZ5AabEJTBRX3wNVnhBY1CJped OaYJB3O42YBZxQtwKRAxylfo9WaPpTl+clnAxQvr4AgqhF96yll/J24LGoQvmBBggKLld2qOOpImKRAX eKPUQzKelEdmuZJfdK1BKX3aWl80xQlAyHxwmFhwBpBnihDaR1MdeKoAUJh7NWZV+KGCuQnQMIbAlVwj hi7fFkRbmIIH/8F5rASwAYtwPMsJjhqhqwg6UsqWboAD1KpD1GpOummn2hpcypexYBltOqUJ+IimJztk nsoLBFGUxJlVcnpOvkBEv4WY9pqryNNs4fZ3CdFYWquznzioXZiOBysQZ/CsF/oOxFC0OBBMXQSPJQOQ FDtm6kBqGhZkX+pzqqdTI/qxBdFXk5htbTtPXPum3DU0m6AO6DBSQSliZvttsmKCFgesT5ez7dd8BRuW y/qoJlm3U4qh02q0fLtDGxRn4nlpFLutPshe0WabJneAXUqyBqGMbzZZkfubjICt3BWll5u5z9CitsBn 7AJrA6F0QBtYTWidI+mkBGG6qruI/CdqQ/+TPURzQSt5lsFUjwiXtZeXZLkrbRBYuEVGtYaYELnFpYcE lGYlMi5wAmZzCMfbsivkuYdzdKJLawoBocx6EHJLENrHf79wY5uQdL9QU1jERXAwTsKgDcKAt35Du2TF CyCaZEgoZwMLv4qrb1cFhZFLEAQghscIXAnGPedAlM8bSdELK7EnexWRvQ4Ksqf0qBNoeIK6Cb36C5tI YSKjDXmbR9zgmL6kDdTmeMnWrttKuNtobYOYuMHYEEu7wgpEAAh1jOtgbJISDYdwDs+QmCPWJbs6wORG EQ4alk9FYGbGuG3IZhRmxBRJP6HwM6RnPcVgPRvswYgZfVVMwu8wbbb/eW0auaopHE8EoatgnFAvXAKI 2b+/ZTa66rnSBACyBsfZ+6AMwYBPqIwH0cnBx2YGio3u0Mrj18ekZ0EN5cFC2aYiC4h9rMiM7JwAkGl2 7ISaFsmGElPH2Fi99bzDCMD45blcFQlNRxGn6xCM+F3KWJ9gKAFtuMpGjI1FV2Ry9g7CEIuneT3WNg18 JRCOtVulRm0XVp0MPL9PlZcFgUBg7LKX5bzPCw316kaeOwCay6+HtsAPwVal/LESkE93rMqbCAAou14k rMRwVwwGV5uekGOw1a5wNncamWNh2YC/bBCQHFXEDJQtO4rbdgv32qPDPIyWd2gPWr39h64LtmAE/6Et B43N2dyJA7Fi6GVhJEyRNjTI8gtbujW1QfilcLjTDcjFBDkQXOVbv/W8YugIjrBn67fJe3K8wOsQjloR R42ee4WMeNVUN30OqEyDqmyfe2V5CufTx6rIm4eu8tSuWcXWQdh8K8bAtYymrXq/voW59QcND5dEubrJ M3y8iRkR2jsRPb11kQhsS/UIImVPN72OnEAQ9eZWA6GJ62xtX3q8kde283rXix1bXGxYaJiY5GivK1jY /cTS9ITTDmGwFvGmW7p5fBWAp5ho0DAB23IOcysQqEVSAhFkdGltGil2kzlxbO2oeY2XDHFZZzyKVg1J bJQplMwIhxA8DVHaEf8xhbdtcoWkaC+WMCcQDbbgLQh9sM/Q1AURbYeK3KHtxbaMXun40RbBCLFkC3uG 0lf9RodNT5vMELT9X7kY3rjNVx+5n3Noxt6yLfYU3KDmzRqmrF3q3nQr0B3BL8xgfyjtRm/ERP4r4IIV EgsGBguXZJ8alCUwnVnnJ4tWTzd90BLOED7XeMl9wCuG3xWBRFJ91Y4k4s+k0peCmRvBgOB925w3sbwg b+dI3mZcTxFe4w1h3HS3xTrbvRiBRISNQgaFLjH1OxC2QhxRZtrHsVz6n+jKtJUlWjcI5Zm0USFN5Qvh cxm71wih5RiRQm50UkYuzNydETP9Vkwefdlqecn/JVpgxwLE92tbRucCweOI284E7hF/0OW5ykIlEZ/x yZdxhYaHEFwUS31y6EGNLmBbhuEH+0427nORpxIc/kZkXhJvlRD1ZNa+DQ1vultKpj0wTt7trWWQvojw vKBc5xCXrRGOtOwHROs2qRD5ZNZe5liTdU4XWmm//mLBbs01/sM8ThAKxxDYmOxbLuuy8OeZaBH5eMoH 7dvaJVMvvK0Hkz/ao1S+9uhUjp8Y9e3sKGgK4aedsBEntZgHAagDwYmj7BC4LrYyFaMvjK3k+TnF8qGM 7ujCXuPBLl38juyAegakaxFr9BDbbKCdyGYYkU9nlIgJ2aJLq2WZNp4wvwtX/xYNFy/h7e0vGr8RSMoO kVICyg4RgFphJe/vFCHtXaVlu8lvv+mXboVekBeJz/B/0TBa3M7e8ZQwa+jtGcFmviBvkaLqIYGkJE/y Jk8RYltvx4iQxpvqbP9uFh1Pz5BlNW+S9ZZZC+jtZ1pYDoEJZRgwYqYSffqnqlxh6ZaX08z2aj/3DP2i iD/n66hldi9vBDZPWiJhLaQK4HAHqvAHMQqmATNvCUNhJ5GN7kB6Y7/QFdH4+O4Q9JmXybj6hjZSJBVX 8eQvXp8wYcdizPQM8IMF6MAtBWEH5EAOTUAOMxwN3OXk/yJvYm+gRP8RUVl6cTfydNd9yYgRqp/qHhf3 Y/+g8upALLcvKcmf9bkYki0W5xM0AXbAInYwDlyz/GUo/sq/CYFqxEj6EaVfegVXcH8KEJwwDQRQ0OBB hAkVLmR4kNHDSA8ZFZQoseFFjBk1buTY0eNHkCFFjiRZ0uRJg88OjTmxaRMLlzFfxnSBzSUvXmDA4Dxz ZtcYoGOiRXuEboAdOwPGwGTB4kRTp1CfbsLGqRMnTr+y/kJZ8Jc7YcPEihW2VSvBrh8hTkzb1u1buHHl zqVbV2W0Ey7e2ZxJU682bdhcuNjk64wmTZg0nTlxIqhQCaokq3oktWnjqFCxvWvn7mpWTml/Yfo1uhNY zwJLk6570WJr2LFlz6Zdm/b/oWfPxmx615twzd7vtHEjvrcmNuSelGt62djxsz9/ZMlqJSvaZeyWNxHT 9q7T59AoVyf8jNY2Qrbn1a9n39697NyHDkEbozd4cMDEiHPrjfwdMQA584Qwl1gYAxp0EmSGmVnMuS67 p6DSBsDuXLiKK7rGe6+hQzb08EMQQ3RPJRJZ4q237lDcj5i9VCROm1DaQW4wFkpQBxpHbEnwD2bMWeqy CCUEkLu9wqNrIExEPOiQCSZQ8kkoo5RSJPmq1C0v4VAUbr/A9sKGy/uQw2YaXkooYR1HHEkHnVsySGc3 qKDaxAVu9OOuO15gS/JJJps8Z0pAAxUUUNysjIYl+7oD/wzMFokT5r7+NplmGl98MfNMRx7BYk2ZXoIJ myEBC2yXZwY9Sb5zmgSgzwmYNPVVWGO17ZkJSNQNKBZcEHVCbtzgJsXe+IPUN0orPcGXxkoQiigs8up0 TsCCE2wXaDqUFaQ+WT0k1Vav9fZbcE+qtVbcgmoMmwkB3E/azUKBVLBiKzVzjDOBGuoRqgQjcE7jBiMM GmjC7ajKKlvt80+BE1Z44YNqpTU3lVgCqqXh1P01OBc08aSdMG3ypcwSdlln5HWIeuRkLKjyd2XBZGIh PYYZmg9gVJtsss+Yc9b5VYgfpnUdc2GqeN3gNJlGk+P0JczGddRRxxEc09k0A6ozcP/2WZfP2FNgJrue IFWv5WsV4BurTZXbVp3ceW22RfTZ4dwe201X4uxsccyjkV7ZBRaaxhFgW9JJp+oMzDGnpQI9lYq00V5N O2yDv7ZZW5vPkQ8ap8u2OfJt2/b88/UedvjmWx1rie79LkZu0kkRY65AwG2RPcFbbjH8dsQLPGHbCUpg hzSBZBuAALeYBPtx3g+ufOzMb9ycW7FBl356uwrtWSX6HDMR3br1+xVe1g9TbJozSkDwnHOiW1AWZmQZ wP0Bomlu9wEkG8AgrbKKbQD+W0s78scxz2/Z2tzkqHdABJ5EJfJZIIlwAzSJLcUXevFenfjjgjOQryeG 4cUZcML/COlEx33TSQhpGHGI+iEFKefhX/9sMzmy0YyAZ0tbAm14w5DEp4FWWscCD8GICQ7mP1zaBC/I hBMkIrEg8EuhHRoiGTuMAxxOtE0LXagegMnwf5uzFg69+MWMONCHD2PgMxixC5ZVTBtFTCIYdsGLSMSx IKpQIR0xQsdwhIOKBlFhXazYwvVUSQKTWx4YDXnIi/iMYIWSDyNckkYXqMMgOomETixpEAJkknh3tEM4 kqHCZNzBDqG8gx9bOEJZqEdshiMAIVWFSFhOjx3s4IitcgONnjlyTgQ6ARx3sYuD9ESYPSlI+jK5kD0W pJNIuUMynPnMukSHACIcgAjX8wf+/xGAGYOcgNTUFktwsm2WZ8DQRirCiDimc5ebWEwS85SQntCSj8k8 CB3tqExmPvOZd2gFXaYTnWpG5w/noNl5JjOADGDhZI8gwGQkE06ILmyWs+yIO3nSE8IkZpjCJIkdoKjM O4Q0pPq0wx1UcUUqbQthAJgO+1oqnRZK4BCO2ZZA09cQ94kEfTc1SCvsp1CTlcOjJlVFRI0KrolOdCPC RIxiFNPUgXAUJVCUTCvyOA4pNtOZovSoFRNSP5Q2hBHPqNbs0LGg9TEDm9mUHwuekb4/oGOgKz2IQHkk wpbmdTr1U0hc0bej9smiHIbDArPMQdWiHlWxsErqLPOnGkw0tv+xmPCExly3GGK6xZ4lBcc4yPHZcZBy q6I86SkDy8T7aYRs6hgZ4BJ01vZlExpQGYNdo0PXYu4UfQJd0F31isr3DaAVcX2tgsxRteMqNAOysOdD F/vcKZ1Bsr+zSiisG6NOTHeWA2mqMN/pFhUO1bOfJcc4QsrMOp7yHAxqKVg3EldorONSZyqb7Iw50yBB gwAt3KRCdPvf3aqvt2p9KfvM+lrCIdcczJgMPaH74A9Fdrpaua4whHFd7W63JziRI3iR0lxwgKO8nz1v eJECjpPKIq4LmgVqN6Lic9hCHSWolLzMtA6APWMqTqHpflOLkbMBWLd3VStamRG4dMyuTQn/vh2DVWFS CEcZRBnmRCgsfOULcyKp0mVHOX+Zubc016OSuUOIZ4FVrpo4iuCopuwYFNjScoR9f7BFfEvAOua8bk4F ukw0JtDfjUjuHOjQbYL+ul7i2iJNapJaggtnuFl8OLFSprR72NEYMCQVE1e2soU78YvGJoSsBQWAJgFN EofacxarngU40qxmfspCdulA6175KmcVo8POvhDOnfrTsjidQB3y9EiqJLBTQh+6uIpetKaw4GjDlePJ 96x0tdUDhgidYKK/sK5wYNQJ0rDjDAwhqNk0KYG2pFAV1Vk1OFph0vDWcwDMQIeiab0+JnpkmvSWsS+4 VycKGSfYYChN/zk9UsBDH5rZmTLZsxVcuPpNxtoTtw0jWtIUX0TCF/zaiyfOAIaFSEACmZTpIaQpl+mw +t1EjbdBqhnjp6WjHG9230k/YtM6T6PX3KFQYOKU6YIb/COS+1qhD5GmR5jsZIS73XFrPmmKR701K4mT nPY87oOcw9RbP+Zc2Ntin9LRo310+UDng6ZboLXFzA2rRtRXb2joPD9DIgY2ss240oiLW39V9EKTvvTC Bb7ps5C41A0/FwI8qOoxYcEuCDDyx5sa8o9HN0rQ11fprLo6mxV7MgNKUKch6LQu/kj6+A0N3uRnQj6/ TJfznhZjz8fvC8XCcQ0n+NtJ27mH531bCP+wFMXBhPGO5zrkRV55hbyyIztFCFyxOR2fOtgOjADDM459 DnPcAhqYsgVMW1jaH3eEGbvVderT9Y5gux4uh6gzjmZf+6bH33BMuHXv7X8SCVy8KX0hzDR2oXXJO4dB QoeEOD7l64hki46CiCtpuh/qgLqEiIRDWQdbACrnOIFoOCyw4p8484jbQp9D2IXNiBZsSD+hS4s6az9o qEAseDb5u72mYzAHuz8a7AgJSJmZ4DGa8L9DGLnrE7IJGCSR+6bSI7SBOqsdgSmDgMAI3AXMaAx/eYkx MIdxsB/wC7+N4J+5Qgd1AA6+qDqQiwuCWUFbQJXbebT4ezQsrEE25Aj/CcAXmxA2+VAH4CsiaPhBdFAp bjFA5OOIKklC4kqys/IxjuignnikGZFCc2iF97nC+nuvf7Kc3dgzl3GK73ILy1kky0kVArA9T2SlrmtD UeQIArgFfNmEMcCCP4urOiuBE9gFHclD3hHAIBTCPvTDQzC0v0IHwUmHW5ArteqIYZoTMbEJA9HAUwoJ k4OpuDodmdgXFrjEtvCToqscAexENFywUdzGjsikhCqsFhRACeDFpLuRMky2rxFCARyJXBy04roFwflF 2OKRjTBEXtglMSEMFsjAtvuIdvyDTDoHZ8SalyA2t6jFvQvCIOzEpltDbnzIhfDGFmzBhEqohYoG/6ix BWMTxyE0ieLixTV5LbQ6OY3ooJ/IlcEQk5eIhiZgQpColpp6vKd4qmlwxUcijK2pi4T8g9txSIj8SYSQ gG/8xhY8maGIBjLswVoMQmXsooJIkF5MwgWZR2bgCMaYmF2KwhN4hJY0CbKqEssBA63xIHWoM3XYOJfA OthYSoY0B58ESrgUuTaZSIViiaHIEdmxheO7xY2oEoQoLsFRkHnjkd76g0LEhBI4SijkM8doghn8iCxa QYVgP/bDnAzKSf9BnwnokbeEy5/cS6EsSjg5gRzRQyL0Q5XoloKQj49MwhZSHwWsR0zoiYg4SrwwlzF4 BJeEzBzjENmZD17AJf9Jig1jmybPPE6DaJJjq8XQfISWcAxHUMrT1IiCGcMDK6678rH9+ierxATyyQmd YATbHAp7OYfd9AgzMiOYQQj2O8c8xCVoWM+4kByRQ87jRJ9jy0+Rs8jLGIN16JyBYSBGgkmzEkS54pHh sSIRMsySnIbZ/DhLksDxXJZqQYn0lE+DmI8yzMX5eAZ1eIi6kBz7PE7ltMXjU6jGAAocc8qLwI0GMpj5 aE8dCcwEcblsep8FTaWFQJKC6CDv7AlL0gl1sE10iiMwiASUOCcMXRXAoUxb8FB12IUlTQu+HFGIVEgT vcFDsc35yAhGWqSZyUsk+8XLs9FMUjHYPDWDQBL/YjojngBPSxLPoaC+IA3Dk3gI9VzSyyHDfvuYDy0V Kw3Ut1DHQTqHdLiXhZIPDvEaGJ0ZPkWykJQrhNivg/infkQSxeCFsTKjg6jTkqHTSnqLTUUnEFWIFbQz GquU5llPFhVUVy02kaPFc1C6pMMCAa0zsuqZL93TR+3FWCTAkRCIp9IEXkhPQJ2kOEWnuZAInPiYXzLV VK0xX1AHKH2NsQqYV83WYlvKi/S7Dl0op3FFG/GhGM2iOutFGsWtj8AEgVAOj+MFKT3WTq1TungInKAU JNoFJKWIN6oUFpCXLHIaRvjQ5pFXbT3YhlhKhfI7kyEb2zQRYVugyFzBNEHX/9dSV4/IH3fVhI+B110Y znm9pLo4o0np2I7V14GNUl7whWlwimlVwcz5pY/9UIStWYZolYV9hC1iv2hwmkPByk14RUcFnIpFVx3B WI/ACndVjiOqFHgdK4QQ2ZF9I/IhH6f12IeQ2UqhFAqE2VT9MjCzWbFdTb8zGDKC0pIB2pewERxpNkYT nFhE2o7AinZoh+XwIKd1Vqid11oyCUY4A8Ng2SPCCSmFiF9iWUtJE0UDGDOpsV0IGacZ25pNm0RlEloh l8zZ0joMWnpBk0comaI1ULnlCHat27p9V5OFV2olCWwliUgwokkB3JLlMImI0l2oFByDmhzZNXmRWYG9 1v8KldwRJZiTMdtxwY34giATiQmWcIyReYRM8VVCM4mz2Ji61YSI6FfVndKNIKiTaNYMqhTAzYlzklm2 bVscaVwbCxnIzZyvVFSEyA3h3UaCQZ7UXKAhPZSpYN5sG4NMeQS4TbaL6MyDKA2s4ITT1dRniATbjVyS sByDDYnbhd0MyiDyPacGJps0kS9XXN/H/eAvu1aDNdb5HcUFahVyvZkJwAuswUogcd4cKVOG6EeEYNfH Uo52wITCVU+nieCbOwSQHYk3MiLDoBQgjYQ8lYiPnZmRUZYxWF8zkdnHbd8gLog8LeFRtNyusZJaORSa YDy8eIonTBYcA9aFAKSL2Ir/A7YKT8AEBc6NhxDYkvgD3Pjeew3c7zwn9fwlRgCYdZBWoLCUppmvkPHd KjZW7sVi3lukRsUL4WM8DBTjCzwB+mpdhUDjhlgNdkXguuWEM0BiiEnZvR0JOiYrkxjiDDLijBsrPFXS X1LfY3niMyGZ+ZJiUjEIVh5VRTZhsVmgc0io5s22xki6SXbeG5lhTGaI/Nlk0w0eiTCj3/VhD5wPDFVL jYgEfV1ZwO2JwlXShwjjMZgxVzwWZMEUWmbfKP5QbCYVF03PXc5isJzLuizm3HyEYLYXgFkIyzEKAgaA rAAP022H8AhlstJlkoAvH7bmjCjSI90JOPJmPJ2YZBFn/xo7FjRxBJIZGV8Qvo4lXKJwGFZ+5zaM54oU zWKOBqBalpNp1YIYAJPcBZY+CKwAi6voBOsS6JTwYfklCV2jWYTIrIWuiDhS0iQWz8dI0XClsRLAaKYm mbwgDMQ1ltzEggvdaZGmQdZcMrrU3wtMxZydSAZFiAE4B15ADCBdiNMAi2IoBmGw6ZvGTLjQNU79aaAW q4qA41a+62f+WdzEnNAjGYym5ZooDGl1DJRuZ1ae66te5G2xHcJpQYlO0a9uQWwS6xYq68QYCCMpCE4A C2FY67UWBne46c2WC9CrYgDw0TCCaKLO67iRm4lt24smGZWJl+ZFaarGUziG48U+vP/I+YNH+8bbdA6h 8DvK1tGWBiuyxlTGOWB38OxhAO21trJQaOPWIKhSLQgkFcvZdI1ndu3W1mO+joauiczADux1eOrCmIYL xO0J0GtjlebejjJylYCmywCJnpjipj3pQC0r4gUkAQ0DtmkLEwvQdgNiuDCcvm6zTI+H4G64Rg/W/u4J Hyuo0RYm3mCMbl5o9BRmSQfEvtBEnm/oQmGDGbkPKyxzcQyj/Dt0WDX4Ab8/APCBMOD8AQsDB20bsAG2 DoXgaY16+1CYOaOeMI+EqPC81uNWTk4CQt4sGpkwRhyrY/EWLMNQxlMSjzpaERsnCa9vNMr9NkqUloVV +6MeDXD/A7YKdxgL6a4BG+CGUAA34jTLIEYnH+1u+RxV3YboJFbsJdkciSWrkblnVOxq3KZLK5fvLI8y RjqIDyPKopy9ocACmnsfEgIAgrNhrGDX02DztXZzG8gy2YA7Icfl19Wa2dRU7lVy1r7ZLYLR+Gpep2he uXE2umzBdBjdRX+wA8QnVRjKR2sCZriFnL03I2sprxDwAQ+LHAf1GhCGHLY8jYC5UqcIImfTiNiIPk9s 7g0gGE26YHYMmIggZrn1FmyoXb8/pBiAY/sDJmgCeCcHHEUHhbo3lxrJZB8NSSmNTggL6d5xHvfxhQjr 5Zv29nOaIYajSED1VM9ujGh1DlFh/5tZWPK0F5fQHqEwd4p8zHQ/PP6Bd/ozLTaBrWNHbtCYhsHYBK34 7LUGeDiAg2KI9gKs0ozQdYOwHLJ5ow2zc8rSqIgYcVzO5ddwdQKqnAoU84sPClu/dZvv+Ilzn3cnPA58 HyOrtcBKrQP+Bb0hjF9oh5Yvhpff8WJwh4gMiaZ/T4SPXdo8dU0QVjBweIzoc4yw3MdJTj8Rygd5jEO/ 9el0eqn7Pg5MsRRTu1pTQgAIul/IysHAhFAoBoAX+2FoB4UggKb3L4JXiDhW3/A5IkbwUU8QiIdWdAnP ZYzgouk8PgKwZ7nxar4Xfb+vNMD/vhGi+lkoeR1V49LYG/8YBv83hwMbqIFhiPPSFkeQkGGGCFfBNRqj 8SBNXXjK4gSPe3ugD/qhl5ktDrkgVH29N/daef37OyXh+r7SYp/az6v70fSCS8njGI5iqAH3rwE4vxCD C0WPkFTXmLGNZp1JMaLmBwhemDx54oTpDKNnjAAwbOjwIQBGEiFSBDDhUEWGEiSgizbmY7RHGTIMGIAO C0qFGVeybOnyJcyYMmfSrGnzJs6cOnfSLKlKlSxVJQcILSlrgKyjJZ/94tT06TQXUl1ge8eNW7EaWt1w c8fp60GGBDbaRPen5TN16kpMY6FJ0zRecnntisTrDEGDZ8BIXAjTr04JE8xhEWnu8GGiAwj/pHzG8zHk yJInU65s+bLNoUpbHQVadKgETE6d/vrFbipVbFfdaNXKTVgnp6Ix8TokgYDNP+fOsnwGTa2vtr7oyj1z hlekM5o8tfN0UKJjzBA3ljNX0o4qO0OzayegUjr48OLHky9v3uH2kq18DvXJ9GnpTVKxzecGx0brGm6I xS5t0KA6ZNV0zm4u/aaWR9Gos8sud02jyRmYLNccJ8dBR94EBDDjE3fcYffTeSGKOCKJJZLY3meKrTfA H9GAUZpp8s1HlX1yyIGfa+98BdZAmtTGG00EArmSb9BA8wiSjzDS4BnTPEgQc+0YhNxE5BFAlB3YOZRl dqqY+CWYYYo5/+ZL7REl1HpKleSdU5vISBWNcOBgow1ZFUOMlE9hsudB59yEDjrMtPSbkUkW9oxdvDj5 VnPtNOfJGZH0ZZ4dGXFHJqaZarqpeAOsB5SaZ6pXEkOMlMCCjNhoI6cc3nhTpxvFCCMajJhIekiBNf2B Tq4rEfpIYUk6Ypdx0zR5BieONkdbJAoB9qWXnEo7LbXVwoQUmiiaSRQA7Eg6xgknbEIMq63KgQNX2mBj rENjCTggr2ipcySSwRbG4F3EIetoKM2dscuk1go8MMEFh2jmT0oF5dNRE5jGDhhujgtHq656g8NV7/AS XUO3ETDkTOcEytI5viV5MrDPgIGcpHZN2P+vc7z0taTBNdt8M843faZUQ0OtyBCM7Lj5jg0VuypHDdps 8swEDm20EW42iewnRHdY3cpJwNaLspKSSmTXQO30K2WkEjW4S85pq712zuwNkBGp3bLz8AkuuGHu0XBw E8khfWtEgLs36RbvQ6pYnUwyspgVKDq3BFvvIbY4y0hyzIUyNm0SzYU22517/nmmn77tUmlnlCY0uRbb qPcJvvV9zm2wS3CTyIQ/ZDXuQd0Bzu7MFBasbrYYuSBeYl9+uSb4DlcX6M07/3x5ccM0NzvVb/JODebK AUcNLsh3wryA33Yb7YCCzJDVvN+RpR13IA6O78De8seuwv/Gy3KXa0P/jDDtyGWsXDgHvQESsIDmMc3D hla0G3EDGxFz08bO4a7Zlc8sFXEf7tqHO6vNAiV/+Bg67AeNXeSvGNzgXygkFJflRcKALnwhDCVTOojJ B3v6eUeT3OQCXzBCdoC7CTNCaEGKbHB9WdpgK/6AhY8Fz0gjxEQoiIEVYgyjf3BxUgCfFcMtcrGLGZkb Jqr3wOsR4x1hlBj4DiG+88lkV4ASFEU0aDX2tY99fwAWFuy3DnUwgheeCMUwTFiMYmgjFJ644vJmlpAL ebGRjizg6eb2i4gJRBOTRNUm5mUL2zwNJyKzRa8gIsc7eOiIjCmMR8C1qD8SY5BX4YY22nHFLCpy/2aP vCUuPVcrdoSxeuw4AztOwIIxqMMWxgTl+DwJqCHGMYNHpOMAMhCsaLBlle/YHzdYUwNuNOct6/JaLbWY y3GSc2C/AKbpqmeadPJiE2OI3DFtgQ7yKZNXbETfBunYoXNMcxeLUk47iKFN18SyHftzQV+cNblyMrSh 1DINJh4GMTD4IlxuegY8oSE8UFItN7Vjxj0BYLg50pF9QkHJI5i0Sm1kcyv6IQZLYYnQWn7HoTa9qZgi KUxxScxNJ4AGPOO5SZzUz54ZySd2TJqlAQSLWItSFTda44aBcuUdM51cwHCq1a2GiHoJwWg0MOmmd250 oxrdJDqkJsRzyKIi7f9T3/q4Y0TtOA4LfbwLXKzCGvywBgc4gIMb3oENbIDTllw9LGLL8zQCQEOsZBWq MQ/Bq8DJ5JNmaWszkVrSLJ2Scg7yBDFqQDEbkfZcNigjNk4ws2dwLLGufa1lJEigZ/AUqEGNJ68kIFsK vsSN8vwDZkWJQZKalDtMTQfliKUJloq2tN5YXdKwsYlFOgu21r1uZMZHgEOEK0AhLCtaPUZPmPiWmVXb XQa3xD6m2vVrK1OVQEerOu7tBxu1xC5+82sTjxHoENDYyHePiSvYEUCCvO0toH571A261Q78tMXMIiHh a2rDDXBQ3fZwxA0XFFa/Hv6wSwgEuLGMRTfwzK3/dg/8Esua9yHPXMkpofG1mZExmzh47uo0rK52jCGr IP4xkAGgXQP/IXY+pN94YcKMT8oTjhTx0EoYcQgsYNW92ZzqAv9qA76uxg3aYIGkgixmEOu2yAU+swQ/ +MF3tTHBRm1wllYCzpbN2YY2uPFf76OfqfKZGNIV55gD/VrAEdnAJB7LblRMXjcH6g5wrlRGKBfOlrmg Blu+8XP1vBU+N5DDgv60daFmaAnopsASHEtuhAgoWawvjlyKdC1b1hdsuOHSz8XBlrl8ZWJswmug/jVi SV3i8ZVathJUqzHRUY5ZtFqU7MtIYfsCTjC8Y68Uu0+uvVyVa07Xx8D+tkNj/4dmEhMb1TTZlSPW4Yhb LNtqEOnSSOfokAhLOsIuqLZW5JTrbaprsL0GN8C3emZxi7jUuo1aS57NEGbYYh3RiAa7me1okY6yiHF2 ydeqElVLZ/uEgnWBagEd8JHj8uCJJreZT63oR7ePGY8Yw8PTwQxmQ5p96XOf+rT0kkhsQuPajOpVYPrx RZK86OQUd5GdJuyDv6SkskhHgqLhCGbwruZHxB1cswMTMNxbr/uhsND9TXSjk/2RBF65kIXdUZZohhmE eThIaA5pAFx9uHONyWlcIMV3bIIF2x7sYFunkNaWvfDlJDXaHzKBW4yk8VhIEMxv0YqL073uzoxWTHja Y/+J9Bzw9oVOTQ0vetcSoPEjeXyCDLOhaNFRs3P/S7hYy1pGdJ4+0KHu6HOP2NI33hwZeESCsND7o+hz s0aMySJLkFCF1K0d3aZu6HUvfYeWw/TSrJf1zdEEctSRS5vVOsZl/1WFMkJcPJw9+aev/oYOwPfWf38G zEEOcSRjs92nY0ugP/uvLhL04pf9+gXgOKmC77kf/GmfOISDAoZD6yWVUr0eRYgf9IEedd1edQkgBjpS lhhg/I1EAWbALIzDAi6g/ZXSSwye/lVg+mUgCzaSdnDg+w1A+yTDCIbDXDkgBCLf/qHg7LWgD3oRZ72f AVpHSRGXzeVgTfDf4BHeDzb/oQFlCTOYHgyaQynN3WbxBPqNnRNuYQFxyWHE34a4Xe9dirN1yWPcXkJw oRpCz3pdiQyuV/XFH/i5GuXtxBKuIR66kD7JgjkwA+a52sQ9xv7lISF24XqByEogoU6wViE24gBdoSNG oofhnyRWIn5RoiVmImzVoSZ2oid+IiiGoiiOIimWoimeIiqmoiquIiu2oiu+IizGoizOIi3Woi3eIi7m oi7uIi/2oi/+IjAGozAOIzEWozEeIzImozIuIzM2ozM+IzRGozROIzVWozVeIzZmozZuIzd2ozd+IziG oziOIzmWozmeIzqmozquIzu2ozu+IzzGozzOIz3Woz3e/yM+5qM+7iM/9qM//iNABqRADiRBFqRBHiRC JqRCLiRDNqRDPiRERqRETiRFVqRFXiRGZqRGbiRHdqRHfiRIhqRIjiRJlqRJniRKpqRKriRLtqRLviRM xqRMziRN1qRN3iRO5qRO7iRP9qRP/iRQBqVQDiVRFqVRHiVSJqVSLiVTNqVTPiVURqVUTiVVVqVVXiVW ZqVWbiVXdqVXfiVYhqVYjiVZlqVZniVapqVariVbtqVbviVcxqVcziVd1qVd3iVe5qVe7iVf9qVf/iVg BqZgDiZhFqZhHiZiJqZiLiZjNqZjPiZkRqZkTiZlVqZlXiZmZqZmbiZndqZnfiZohkmmaI4maZamaZ4m aqamaq4ma7ama74mbMambM4mbdambd4mbuambu4mb/amb/4mcAancA4ncRancR4ncianci4nczancz6n TQYEACH5BAkDAAAALAAAAAAAAgACAAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8eP IEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1 qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMr Xsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/f wIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59P v779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYY3gCqSLgehRVamJ4qHGaoYXkYqjLAh+V1 yOGIJG5nYogrcphidibGyKKLL2IX440x1ngdizPi6BIBBOhYWosyntghiigBCaSQpB0pIo5QbqQkAJFE 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 J2gMhaJgAT1QjVqqn6+lJiMAhXIeZ/5pTXOOpw8RQHRGZ+VYTnTSQxTuENUVUGJORUQywhgop33O53Fa JXnup+jMAz2s53QexX9GZ+YQpI9d2nDKJ0zkZ0s0aFXOp7Hwp4RazwDk5nmuZ3QygyrcwQEcwHvyGqUp aIN+54i2Jnjq54SmqMaoAjNg6IVmAD0MAFh0aIcmQ5tRGoLGZ7Hkp306aEQuaIOqqJB2TNW46IDC6POA RTLQ/yjDfehVOCiQvsSILueQVmm22IF5vuiAMsOHqt+leYWU+iiKWimZUgpYIBWMvmgGcGmCuiAB6ShX RCkQlimdXqkqHOmRRmeSuqV7oqNrGMtx1qmgqlGFpik9+GeaYg6ckmZBgul3DiqkSgr0+KcSyGjVMMOA WqpK+NhsjGikfuqjdCbVDQCmyuhT8KlrBCqoruqk8FrmIAmVsqqsGkm5zaqtslSb3qqu+pOf7qqvNhOq /qqwDiuxFquxHiuyJquyLiuzNquzPiu0Rqu0Tiu1Vqu1Xiu2Zqu2biu3dqu3fiu4hqu4jiu5lqu5niu6 pqu6riu7tqu7viu8xqu8ziu91v+rvd4rvuarvu4rv/arv/4rwAaswA4swRaswR4swiaswi4swzaswz4s xEasxE4sxVasxV4sxmasxm4sx3asx34syIasyI4syZasyZ4syqasyq4sy7asy74szMaszM4szdaszd4s zuaszu4sz/asz/4s0Aat0A4t0Rat0R4t0iat0i4t0zat0z4t1Eat1E4t1Vat1V4t1mat1m4t13at134t 2Iat2I4t2Zat2Z4t2qat2q4t27at274t3Mat3M4t3dat3d4t3uat3u4t3/at3/4t4Aau4A4u4Rau4R4u 4iau4i4u4zau4z4u5Eau5E4u5Vau5V4u5mau5m4u53au535jLuiGruiOLumWrumeLuqmruquLuu2ruu+ LuzGruzOLu3Wru3eLu7mru7uLu/2ru/+LvAGr/AOL/EWr/EeL/Imr/IuL/M2r/M+L/RGr/ROL/VWr/Ve L/Zmr/ZuL/d2r/f+UEAAACH5BAkDAEsALAAAAAAAAgAChv/bBf/cDf/dFP/eG//lBv/qBf/jDP/pC//0 BP/yDP/8DP/iFP/pFP/iHP/qHP/0E//+E//zHP//Hv/fI//fKf/jJP/qJP/iLP/rK//yJf//I//yLP// K//iNP/sNP/jO//rPP/yNP//M//yO//+PP/lQ//rRP/mTP/rS//zQ///Qv/zTP/+TP/nVv/rVP/nWv/q XP/xVP//VP/yW///W//tYv/ta//yY///ZP/za//+a//vcf/0c//+dP/0ev/9e//2hP/+g//3if/+i//+ k///nP//o///rP//tP//vf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/ gEuCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7 vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3 +Pn6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKl y5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4od S7as2bNo06pdy7at27dw/+PKnUu3rt27ePPq3cu3r9+/gPEJCBC4b4AAAgrrPXxYMV7GjB3XhRxZclzG gxFXtoyW8uHMlAdz7gxa8+fSmEeXxczaM+vErgaonul5sADUqFkN2C17NkzXkDOXhq1qgIAGu33HBB4a cqkTJwod591b+cvaCwwEbyxqwAQVMmiooG6cN3HrLTELWLDgAIMFAJyP+k6jPgsKu6cPaIAc/UvbARjA HgPvAVhKB/WFJ8N4+wlQHm/+iWRcIowJSCCB7G0mygkJJjjBbvwht0ByEYLkICKfBTDghQwIyJ0jhEny Qgv11ShDB+SNiFx1JW6U33mDQLYAixhqF6Mjtx1pyP8AHRBSQw0vvCCDgjRM+SF5DpLYY0bG3TZhIYxl R+R7C7zYyGlK3haCCii8AAMMUUIpZYf2dYDffjtmyeOWFHlZHpBCGiDgkAwcUGYkrtkmQAgytCknlFC2 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 CQMASgAsAAAAAAACAAKG/9sF/9wN/90U/94b/+QG/+oF/+ML/+kM//QM//0K/+IU/+kU/+Mc/+oc//cU //0U//Md//8e/98j/98p/+Mk/+ok/+Es/+sr//Mk//8j//Is//8r/+I0/+w0/+M7/+s8//I0//8z//I7 //48/+VD/+tE/+ZM/+xM//RE//5C//NM//5M/+dW/+tU/+db/+pc//FT//9U//Jc//9b/+1i/+5r//Jk //9k//Nr//5r/+9x//R0//10//V7//17//aD//2E//eI//6L//6U//+c//+j//+s//+0//+8///AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/+ASoKDhIWGh4iJiouMjY6PkJGS k5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3O z9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wADChxIsKDBgwgT KlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fP n0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt2//A8Cd 20lAAAF0816yG6Cv3r+S+goGTLiR4MOFEx86fLexYsWC+TLua/dx3siYJ0+2/FayZs+N784awHkn5cN8 QQ+ONaB1adMCVDPmK6u169c6NeuWm8qFIdu2cefErEDBAdB4U7FYTmiAAOCkheM8rGDBAgWxV6PiEKN7 CgrOBzCw/Vz69L4GqlvH7hjVhBUz4sfgIL61AvHPo5unSdmA9fUKaGcKCTHIN0MMrY0HHQP71STYf/8p YIBfqLBQYHwH0vccA7GNd59+DZKUHCLoVafedROOWIoLLhR4YXcSJAidbQyGKFJ5iQhW3HUABkgKizWw 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 tmzbtm77tnAbt3I7t3Rbt3Z7t3ibt3q7t3zbt377t4AbuII7uIRbuIZ7uIibuIq7uIzbuI77uJAbuZI7 uZRbuZZ7uZibuZq7uZzbuZ77uaAbuqI7uqRbuqZ7uqibuqq7uqzbuq77urAbu7I7u7Rbu7Z7u7ibu7q7 u7zbu777u8AbvMI7vMRbvMZ7vMibvMq7vMzbvM77vNAbvdI7vdRbvdZ7vdibvdq7vdzbvd77veAbvuI7 vuRbvuZ7vuibvuprvYEAACH5BAkDAEgALAAAAAAAAgAChv/bBf/cDf/dFP/eG//kBv/pBf/jDP/pDv/x C//8Cv/iFP/pE//jHP/qHP/yFP//E//yG///Hv/fI//fKf/iJP/qJP/hLP/rK//yJP//I//yLP//K//i NP/rNP/jO//rPP/yNP//M//yO///PP/lQ//rRP/mTP/sTP/0RP/+Q//zTP//TP/nVv/rVP/nW//qXP/y VP//Vf/yW///W//tYv/ua//yY///ZP/za//+a//vcf/0c//9dP/1e//8e//2gv/9hP/+jP//k///nP// o///rP//s///vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/ gEiCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7 vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3 +Pn6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKl y5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gCwoI ELbsrrFm09oKwJas2rew/9qihUtX1di2bOvqNXUXb4C5ewNv8ktYrlvBiCEZXlz4cOLHiRo37gu5sqK+ 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 rlTxreqqCRAAqsO6pg2ArHE6oXT6D46xrvgaKNO6pouKrfSKEL2arwKrCQHQrsVKrfL6HtQ1sAw7aJq6 pm8xqITKfGvCpw17sZMQAA0QARCAfnHSABRbsc+KsevKOci3oiSbsjBylQmrsi77sjAbszI7szRbszZ7 szibszq7szzbsz77s0AbtEI7tERbtEZ7tEib/7RKu7RM27RO+7RQG7VSO7VUW7VWe7VYm7Vau7Vc27Ve +7VgG7ZiO7ZkW7Zme7Zom7Zqu7Zs27Zu+7ZwG7dyO7d0W7d2e7d4m7d6u7d827d++7eAG7iCO7iEW7iG e7iIm7iKu7iM27iO+7iQG7mSO7mUW7mWe7mYm7mau7mc27me+7mgG7qiO7qkW7qme7qom7qqu7qs27qu +7qwG7uyO7u0W7u2e7u4m7u6u7u827u++7vAG7zCO7zEW7zGe7zIm7zKu7zM27zO+7zQG73SO73UW73W e73Ym73au73c273e+73gG77iO77kW77me77om77qu77s277u+77wG7/yO0+/9Fu/9nu/+Ju/+ru//Nu/ /vu/ABzAAjzABFzABnzACJzACrzADNzADvzAEBzBEjzBFFzBFnzBGJzBGrzBHNzBHvzBIBzCIjzCJFzC whsIACH5BAkDAEcALAAAAAAAAgAChv/bBP/cDP/dFP/eHP/kBv/pBv/jDP/qDP/1Cv/9C//jFP/pE//i HP/qHP/zEv/+E//zG///Hv/fI//fKv/iJP/qJP/iLP/rK//yJP//I//yLP//K//iNP/rNP/jO//rPP/y NP//NP/zO//+PP/lQ//rRP/mTP/sTP/zRP/+Qv/zS///S//nVv/rVP/nW//qXf/xVP//VP/yXP//W//t Yv/ua//yY///Y//za//+a//vcv/0c//9dP/0e//8fP/2g//8hP/+jP//k///nP//ov//q///swAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gEeCg4SFhoeIiYqL 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 dccVADAAFFoPGNAASQeNneCc5SmjNfhQQEEJKxCiMbCj12IaE3WiwBmXWNGEARABFEoPIOAW8GOjzceh TVijf4Mw36AZItqjOyExDSqk2lmkTSgADZABv3MeooGkEaAyTTijzumcr3mezrIJPGGlK2Aa6BCfMsml eNoKwRABSCqmG3AeG9CnGTAAaUqLHgOlAloMpvEB7BmfjfebeRqpocCiYlqpfmqpENCONdaEGeqkEHH/ EJlyGmkiqaSqChKQAX0qqGaKqgJQqEUHpa+xFRyipUFaqrZqChIAAZa6qxmgAK7KdwS4VHY6MhR1q8aK PbqaqqnaqonKgc+pqI/aHnd6rNSaCZTKq2f6q0UHHwBmotX6rZ8woag6rpXKACb5KoEErurKLpYqqGJ6 rq6iJus6r69UqREQDA3Ap5narPPhrfRKrwLAp8x6OGqhrW4Cqf96q7bSqob6rAn7sKvhsBA7sRRbsRZ7 sRibsRq7sRzbsR77sSAbsiI7siRbsiZ7siibsiq7sizbsi77sjAbszI7szRbszZ7szibszq7szzbsz77 s0AbtEI7tERbtEZ7tEib/7RKu7RM27RO+7RQG7VSO7VUW7VWe7VYm7Vau7Vc27Ve+7VgG7ZiO7ZkW7Zm e7Zom7Zqu7Zs27Zu+7ZwG7dyO7d0W7d2e7d4m7d6u7d827d++7eAG7iCO7iEW7iGe7iIm7iKu7iM27iO +7iQG7mSO7mUW7mWe7mYm7mau7mc27me+7mgG7qiO7qkW7qme7qom7qqu7qs27qu+7qwG7uyO7u0W7u2 e7u4m7u6u7u827u++7vAG7zCO7zEW7zGe7zIm7zKu7zM27zO+7zQG73SO73UW73We73Ym73au73c273e +73gG77iO77kW77me77om77qu77s277u+77wG7/yOxm/9Fu/9nu/+Ju/+ru//Nu//vu/ABzA4RsIACH5 BAkDAEYALAAAAAAAAgAChv/bBP/cDP/dFP/eG//jBf/jDf/pDf/0DP/9C//jFP/pE//jHP/qHP/1Ef/9 Ev/0Hf//Hv/fI//fKv/iJP/qJP/iLP/rK//yJf//I//yLP//K//iNP/rNP/jO//rPP/zNP//NP/zPP// Pv/lQ//qRP/mS//rTP/zRP/+Q//zS///Sv/nVv/rVP/nXP/qXf/xVP//Vf/yXP//W//tYv/ua//yY/// Y//zav/9a//vcf/0dP/7dP/1e//9fP/2g//8g//3if/+jP/+k///mv//o///qwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gEaCg4SFhoeIiYqLjI2Oj5CR kpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zN zs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAwocSLCgwYMI EypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOn z59AgwodSrSo0aNI3QUIkLTpugACmDqdWm6pVapYwQkoEFWAV6hLBWQdSy2q1bNXyaqFdjYB2LBS/9fK VWbWLNy0c/MSQ+vWble9gIWFtbvU7dnAiHuBJXzWbuLHu+B2TWA4rK8BAyDrhaugc2WotFwgwpxZ89zC nRUk6LqUVosWhkhjNi03aoHUCQrAneWiRe9CAmTTlhsgtWfCsny7+C1ItvDhYwXgToDr9YrrJYw4dx58 NvSmxRMoaG3L+gsY6DlEiLC9O+nvTW8r0B3XdQv06GXAUCEihIcNG1RQwXbwJRUAZZbVYh0MMjTI4IP6 oafCgAMEV6BTb9UHy3ItXIeffg6CiJ4E710I3oHkvfJaby3M4NsKH+b3IAwePGciUlZFpWKLPK742n35 hSiDCjbeeNRbYrXyY/+PMzT5I4wN2mBDhBtgZqGROCXZyGIaquIij19++RoLUUopQwgLOIelTVY+kuMo WiayZI88usCClGbCQGGRa8JU4ZVb4vUJaIxw6GKTM9Dw2gt4TnlCmmr2GVOFbTqylVebxIlkI68dmkMO PvhAgwsy4DnkdqVJ6lJ3XlXoyGGZsIYWoYy8RkMOPITqAw8xmCpDdoR4p+pJlP75Z3CALsLaJpJl+MgM oOoKBA81lGoDDCvANuyqVhrrFbJxJvIWs4M56wiuoQIBxA+8NhjDcqJtuyqyVrJ67CJvZjrrYoNskIgO uuqqQw0xFAxvvPKuVK+39iKrCFicyCorVAJIAOD/ITPkmu4PP+hgMIevJdxSqw1T2qqwhgh6CVqMtRoB gB0YknGoP6yrgwkbeGDCCr0tJzJL9AZNcncPp4hJW32FhZmAMBfSosYc31ylIdr+nNK3C5NGtLJGW/LV gakFgNl6FQBottkmuDCDCwDvegMLIwxo9aTgYrYAAwwsgCkjCR5NsWqqCTDBBGWfDfMGI7Cgdgs08ODx CyZwsMDcMdFb4QIUZL7A5FvqqAlU4lEW+MuHn90BCYqvrXbBcMtNuUsM300BA7NzznfXsYoXuBFmd2C4 zge7UDDkHkzw+ksNb0477bbf3olZlBXQb84j/AdgCTwfHMMLLJDg7/Gwk2yE/+zLN69suJjUpUCcHpBg Agm+65z9csObUDz4NcmuuZtdrqzy6e+DH+IUF7wYwI0D+LPJ5mrHv05ArBAjcB8JSOCBDpiABe+ClwHh V4EE1iQ4d0vTq/pXCccUYoImSMEIjAC8Gqhue/b7ngdpojX0IcIs5KLVICZIwUHwzIXC26AHLDDDD5ps hDakxF8K0QEPVFCGRlAb/VgQwyIakVKv8lwmVMa7DfiOECuaovesiJARrHAVJEsVvkg4ib5N72KDUI7w iNdBMlbDjGdkBR7RWCxLsTESyyqEF6EYRQ2+j5B2jIYZS2BGRoyAkXmURB0H0YE98nFvztsi7s5GCO11 b/+IibwjHi0JwVE2chICEpAgNqACFFQwkqc4YqA+t0nfQVF7JhjBBiawAOqEUpGmtCQkg1mJVFpsAyhQ gQoqeUpUYG2EmlgiIQbZSResgHUk4AAFepnEXyajBOBc5DAXSU5SSlICFbDYB5S5THPG8k+N0KIluDjI W/pmeykIgeR66U1FjjOYwWRkJdBZuGS2kpnMTMW3ukkIHVbCjauE4yA0+IITeGCbq+knNPD4T4AOE5Vl 64AIDKpMZgK0maGQJb4Y+ghpvhGM1hRePi2wOV9q1BknfWRH3dmInImAnUAt6QiY6URiigKLW9oi+sxW CIpmE6M33agpmzjOjkqCpED/nVFOKxkzOCVLESyFpiAlKoiD2W+fYY3qMMpZvRCYlKPklEQTg6oCBjmI BGbkqilJwSdE/LGlS/ViNXn2gqf20qZqXQZcNyACEby1nAKVxFCxWtcGySAFJGDkY03Rqnimr0tNq+Zy UjDEzamGMolVrGY9MNL+DLMEmS2BCWZLicmyEwUjSIEJXqBbE4yzq6WoFL4woTdDMDWO8OqeNvF2N9Sm 9hhDzRlrG0vdSoKTBYrDLnZNUNuftvKRs01hCiD3PpSS4ltJtcQGOGC8skbUacqxnwW22RkGOPe5xDAj dfe73yYGsQYEEx4VKcFK3FZvBCk0AYAJBjlVoExcl9DZ/2yvEy+yGkE5K4jc7PJGGX7id615bW1jUcBf GBQMwDEgmMG4O4lXDhW8MbgBDmRcgwajAp6j2MBsWZAt0diyk/H1QAWYuxrKIJYWD/7wIBgZTpHyl7oo sBaKp1wDF/hWssE0QYxxMGMc1IAFqUCqKDbgPhasaAW6dNpyqMheD/PCRklW6yM5CoL9knjEDCLYghe8 Ylg6kqiLTPENZDzoGESWs2mN8IRjaicPqDnDQt7cL+wmGxHiF6AhuPOdlYkCLadYz59GMRWB5YipegDB guaylzPr55Sq8RPt2xkN1jaDd5G6kHbCGS+PnAvnQCrONw2mk0Xs3ROM99MnRnGK7f9UAuD+eZTWxWAN CF2D2ZrX1aN4HwtuoIMcWJMFt8Y1CyJtPl2gqkT4/SexR6yCCR67Bl7W857BzdNDjPLUeLygoGU8W7ye ApOgWMAIaqCDUZWggk29jvd2fZkBpGlzlH71h5td5yejgAQn2O2JbcDngr1rlOG2914HofFp34C31jaF q466sxzQAM2ETG6keY2LzQ1ucw9Ht5Lf2AEnk7h97ju2x2FobaMmIq+tNoKWAYzy8gY30cU0QYto0MWm 2imbvIS6KyZAAa5nbgIE2rm9NdvYOaOQBCk4AQ95+NpRHr0Ru02wbv19XlEIwAM81hYi1zzzTlzHE16n wHy7jir/sRsC2iYVaAU4wAEnAj2gbrcEgmc790OnVBQLQF3VYm7NyGXd73/fhMMXmLltOnz0Oje8Edhq zsU7ce07vXYkUBh3px9VFBPY2eYT3jo3b+I6ob+Erxdw83NLXOwnNUThGg/02D/SErClfMrhFIoN8Lhf huh8m7XOKeB3KFvAXwEkzj2I0x9f9YQA+fMPUTbmn5rVETT6JKJPXrpfHhR4F78gnB3FFvS+3JgAfuE3 gI9AfuWXeuhnCOO0CO3XRO83Z2wFfUH3PpbnCeeHCROAPfrHOwlnAh3AcJwwgOFnTRu4CAZYCMB2CCX4 SwhTSrJ3CADifurHUZKHdr31grpQ/wE7owjWlE2+lwnWQWEiuIKjEXaYAE6EEHIepDaIUG+IsHyvl1OW QHtFFww6tnvVxAIfaAQ0RwkUpjYuMoDWxAhgFymagD3gtAJKmEA/MgOHUIGNsHiMV1TJVwkRlGCZFQwe EHzZl2GIdAlTRwM64DgvJ4ImaIZnqIaKuIbgA4Y8wgmF43gQOHKTQIX2Fws9lwgWQAJE2Enj1l6cIIg8 MIqjWAOGmAiIeIbgtIpISEZ0UjWbIId0OINv2AiTF0BJtwo912o5c32I0Hl/CIgu0DikODA8Q4Cx0VcB eB3gpohq6Iph4iOeEFL49k/htoqNQIU4qAq76GiCUEE644squP8C9xOCHaI2uOI4MYWMwaKMlwAvTaKG rGhFYuIi6JEtvqEcmiCL+GZ0vtWKjoR2tgcLQ6VXBelE4tiHOAN64ZcxOTADQ7iCv/YJq5g98piGjCgy i9MpPAIDU4ItT5KRkdB+syhOJaBd2GiL4QWHuliQBVlJCNmCCVcCRPR7Isg4Yfh94Qdm2oGAl/CPaLiB GCkIPPk6HNkbh/Ia1vKRlpWLk2ABHCBdO8YzBMRj4CaShHB2LJkKeYVQPdc+LyCThJBh/GcEAAcJAiiA F6aThbACJLAnFzh/F0mE2FNEG5mUP7KUjaICwWgJ7YdBMbA2KvZt2IWVO9Rv21gKu9hzegX/PJ0YReJX k+NTL5MwhHEEfOxXhpvAigBZi0XEkT2yHNbCZTuwAzZwibGoMx4HasJjJ6NmmKsnQU5JYI/gkozpkmmT CGMoCDUlPpFgmWD0mD5ZmReJX3WClNZUKj3AMT/QA19WlJ7gAS/wAgbTca7JirNpBBK0lY/gbKdWagiF YODURIkTAytkAZMkCBuYN9yEXpAQhPjoCMMpCfO4cz7SGytQKjsQBPwZBDswbUDkM50wAtzzMQHWmhmW kosQQaxmCYvZPt64CIwZbS+wAlQEljFQPBZgARMgABUgYcXTS+15L46gk3y4CJCSCWgImxqlOskpJTvw A/3pOKV5Awu2/xyPiQh9KQizNZ2raXI2+m21OZCTgHRFVZaGEJ4niV0uADkkYEAoUAEcujQ6M0TsmQDH 4p6McIqN4HAq2pmq5yN6uZz8+QM7gAM68J8L5qI52i+ZqAhl5qNsswOOowNBCgkolJ1Hx1Wn5kSNsIs9 6nEsoFsxsAIgAALs5XBkZlhpwioL1Qhceohx6QhgmoCLk5+NggMx2pxnmqaDtmcHKpY8t6OytVs+Ooh0 ugMDM2ClNkHcuaDdaEYI1wgSxgLTOZ3jZWWM9QEdOgEQagHsyTA4tgjhV4CT2giVmoBG0CQsAiV4sgM9 4GWDhqY2CqqDeaJd9GNHB06og0HclqZ2av9AFvoIp3ZwtWVd/XZqSPqG+kZ0iiMIUqo3HzoCbQZxC/Wo i5CPbYqCx0qsyionynFmjNIoTLpnM+BC1nqgo/ZEh5MITFaqKRBjacoDN/Au2wWb5aqnTLSLgFlY3+kI Gsc99sNiRsChArAAiGOleZOlCzWpxSqfl8CihoeUXzIIDPKRVic8CQukVbawtmRLiMSZ4ZViaaqwFgqb DKqxlDRUJzk8EQqyGMQ9T1uyY1NJ9UoZ94qviKCWMFsJMqt6LHIIHVBXJJtwy3GwAMZtpbkD1bqwMOM7 X7RknFmqoWYwBjRqrUoCteVpCwkJCDadZXuAHzpEvNSbWXsy44itn7D/r/86UYlQNpBKP2lbmjrgqT3r W9XjeE+roEZQqtSpXe9yt/9oi6j5CKY6VJEQQdiFijmzAdu0OUNzuF/1fY0bDfAybWmqqjWqbFREpIgQ fQF0QdnFY/JIukpbCNY2tbSah4gwATmzXHlzuDWkpZhZu9PwQzegu7rLA2zLYPBDqXqbM8KLozyWrC5o h9UTCVylCB/KAfOFN+yJNdIrOBakuNb7DNc0uXTKMdxbsfYTt91ZZthloaO7CO1zvEyEurWpwE/oAcs1 O7WjN/LbshPAAbkVuPcrDbO1HNO2qUFgpjdwddYDCf4ivFZZn0dXuo7QROvahJWUCM5rpRAMv7Ar/7sR 8KHuw8AZLA1NVGaCxgPMqabM9kSSYMKFKVuLoMLgCQmMqYkOnDkXsGGZE79ZOwASEGsODIo7HA1w2wGy pTgdzL3da0C+pa2QsDPly7kiRwlN5LctjLJDNMUzXD6HKwEA9B9avMXQUE9eNHksAKTcFqRUVJA7yq5H bL6DgMCJfLxveggVrE0XAL/Ls2ESjDUWE0H/ocfVYDir5AFfzMGD9qm5Fl2FbAg7c5FfS64tfHhJJzju mzkPMMdT3J7dgTjVs8qavAyCZVyVxF1gbHIB5ltEDAmlCpSf0MYrjKRLo02ltzzOjHPGgjivmsvd8Ms2 +i65ZMbErMaZgMx/ev9DFVwBsizJOCfBAyC+qUzN14BddXuh2vwI3IwJSqvMAgCVpTfHIWS4VmxB6swO BVtlzPbO8JzOiqC8kjAAUjoBzkzOOIelgoM4/ewOTGow9CbQyErQiYDLtPq+ecOe5TwADh3DitwLIx3R jDDRAkZBu1zEnGDQk6A3w2qvrTK40BBeGGzSl8CkawZuFs0IGJ2kmlDJhbAaM11B6ckMJzlbMjsBN4zT ioDSgwzAxEwL5nwIrVLBAaLBSg0JErAeXS0I68HUTj0I2BWWdrJ/x5AAxVWEAFIBALgMiJwI6xEBTD0B Xc3UETDWhKDT0EkMEMeAQtav2jDXdE02dC0Bem3/CEzKuLpwlvZGIdjghIQwOBVw2HQt1ol9CNlVDD+Y CNyHDPjGvgJC2F791Zl9CBckqr3w2dcQUpVN2HYtpYzHAZXN1BXA1KZ92qhtv7nA2tEQAV0d1nbt1cRN 13I42xYw14TzASBw1Lq914wtEcM918EtAcEN3NYN3No92xzwAYx327hdcYj93InQ1xVB2F1t3emd3thN 2oR93FGZTl4NAihAYrdN3h9h3Np9w+5d3OvBCLSdTuo9YskEAtaN3xhx3cq93+N9Cb7DAfxV3/Vt4AhO Ea89ONTd4J3ASB4g4fUtAh/gRRpd4QVB2pswobv4khxrApxGYm7FVSNO4v4Q/9wOjuJfeZswjuM9Z6r6 wR8ijuIy3hEo/mI2vpg2ruKo8wINwpcTqq7rG+QTwcJDfuQqPuVFLlvUKQNVXuRQzhA6PqG2WeRFvuU2 Hnd4deMvqcNdXhBijuIVFON42pVu3sRrThAP2sio8EpHjud17g9OjolSrud03ufaoNo8DOY2Tujb4BvZ 8OZdxZhvrqwlnQ5UJybgcJsJmJjscLYrkgPdpigv8g3ebHgPKw8cErYu8imjqANrw9vXAOfeFE6LxAtr 4wvQ4umjYuiKzgopDoE/LQkAoJvMMQiIMmu/sDZytOunAElKOLYSMlUrLQq4U1a+4SRqQwO34nK/cDC1 rv/spTBn4cRkeCQj+8FO4DibfvpQXGQE2SNHgpiOD+kLuu7toJBT4x4hIbIfAsmtEmTTa2fTSh1bYFVk uqHY8JI9jaMrD+ki9G4ObPVPQRIkU0Kd5GXT2zWoKZDxvQvw/j5BmFxBpdfQiFWeTSo8APMDocLq89Pw 5DCD5IQfEq+pKDadtkrzt3qrMHDzt2qrutVbmMVDHqBP7jt4U8wACsABKZDzthoDOsAxPsAuEHnKLD8O HjXuQaKfPRCtDHbz24PzOs893JPxPS/2aXcCZn/2IZD2H7D2GZABF3ABIWBXOf8CMUozQPA26Tv14kBO 4m5GlZUfNoADPcCf0bo9hg//9mFP9hkfXms3QZrrRI239iGw9pQPApQfAkspAwWTvexCsVWm9+UA7qP0 91GiqTJK+DjQ9dyz8WePcSfgHxQE+ci9obQ/eBYQxRTw9rp/ARmgAo2ypjTwraoT3aAvSqZUVzMiA5qa 9acfBD1QsdvF+B5gUY7HeG2fARaA/V83OJLc/XjzAKnBABlgV5rfmsU+awdf/Jvs3OlXTpWF78sPrcvJ nM658UAv+9af/Rv69s0MCAyCggoJhgqIiAYKGSgwjzArLpMzLTMzLpaTRpydnp+goaKjpKWmp6ipqqus ra6vsLGys7S1tqIbFRukIyUjvx2QMDLDOD3HyD0/yDUv/yQkJyEhHtMcHBYZ2RkXFxQUF4PhggsMC+YJ DAqCHyqQJi6VlS3zlrf29/j5+vv8/f7/ADlV0CVhlyhfvn6daCejoQxjx5ZJXNZjx4sUJ6hJs3YtG7Zv 3Lh5GylogrmT5tIJosBxxCR4lyq5CEizps2bOHPq3Hlqw4aCBUX9KkGUqImjwx7+WMqUYkUcNmCkmObB moWr20KK7Dahq8ly5wwJSDAWUQFECQp0ykSvBc+3cOPKnUs3p4SCPnWFKnq0r18TNnDsaLpjB44bUG00 TGHtw9Wr3i48ACfukwABAQoE2BwAAOfPmz1Zole3tOnTqFOjzvszl8FOJf76TcHiBf8LFoF3HNuBuIbv GMSiQfZ2UhzaUaA9d96sPLToS6qjS59Ovfos1q5/fupbu/bRF7bBvwiMo3yMGjHSx3hhwoO3rigXjB1b IAFnUp89N1/u3FMm6wAGKOCAqFUA1E8H+tTJUd2J5+CD5eGwHni3tceJSeaMRVZ+zZXCHGgg9kfgiCSW aCI/P+ni04qt6aKLBx6Q0NCD4tUWHng2KGbbUSSEYl9+zOknoiiXFXkZkJ6dqOSSTDZJik94uQbUXVCu CKOMOUIlA40P1iYDCzziB4CQ/H1mypGc7Wemk03qYk0FbMYZoIoGtlYlawXBeEIK5JWXI5cUVtiXh6Bd NsAA5nT/ZQGh+3ECopxLbmCNgpBWKp2ddeJl4IExPsNnjqBuGd5tYP5VQo+lCLDAAIoO5GoFJg1A6Jqv EACApdFVsCiuvKJWkIpAAatLBydAA00KwlxEwi8kyNYsUSOYMikHG1wFH2b34YetLGP26u234M6SYGtR bhBjsScU+8wzrsHmV2xFlVAKCdXGihknQiaJ35CtdBvuvwAHPIprwOIpgQfoGqtuB3BuZwKpt73EyQoU +0jrJ/zeM+atNHnwmsAgh/yWlHj9uqLCxpLAwSiSTOKbbxXvq69NBNTMcU0weizyzjzXVKUELmZ3Zc5V sbzCDDXcUMMlM50SQE4125yTByMU/93z1Vjjc6fJrvpE9QiodkLx2GO/tAILpz1tRNQE7PT1CB+blnHW dKdmJ8FWenDqUWT3vQIoRZXG9uBvdVp1dBfXrThd5KrYAdjcveBCDC74zUtpBRhgwOBRFz6CCcvqfFME qzy6+Ok7ZWcu5BFTfh56lcdcXWYKbD7m4P6SkoA/5pqQAuge6DRBBBKQ7nSIaqOuPO8dUM0gC5Oj97J6 aAeoWVpGbAxA1NqXsjvvMfpuwuHCR0B8V6akafry7NvT7G3pvTx9DBWGXZ1ZBaiFr/baJx9KAQIICAc+ x57xBW8n5kvgBCSQKuTNrX0QTMXZ4ve681CuVMvqQNykcxYFaP/GE/zbmCkUEMCAVCBG4AFdtN5SvOKZ r3i6w1aIbhbBGhqNYr9BT3pcwIIVHMUDGmzXKYzHk7R00AAf7EQIaSiKBJCwJickAYWAF5fhJfCKTdRM chKXPhvu7G9iI5sLpjcJMHoiaBv0xKHiYoj6KGJz+steCP3XREPYJIo1Gt9ciMfHPkYAfZ0wxI/UB5rj edFbY/MExZrmN0nssIeloNQnDiWruQQAf5qrWRxv5pkSjmICgrAjFGOUgimSoANzqUACW6hA8w3vJPMB UiFFka1D4qqRkqBB7MjWw0SyIgKUNI0T81cAAuRvbgJgIigGUYibRNEEE6IiXV74Qhf+UZX/GFoAWQbZ nA5hjD+2vKXfZqADHeyyb62gJDBRk5bN2EozykSFCYygknLgJIo2koFvUnCmy9hklcSz5h+9cpI2OtAT 6wtnnMapAx7owHKsoOQaUVPCDy3nFSWwAAMekI5m3mQCHjDBC9KzmxdQywgrmIe8jECWIuXkiqz8oysX kE1DfIaYOA2AAEjYGYVCym88CKoOWuBLVUh0AESMywIm6cn95G4VJHAPRxGhTSPVBKTQjIEylmEDFaig BCsowQYGUCSdehInfLxLWhUIn5MoIDP509wi8icACEAAM9706ZL81tBy0mAV5lNnJVOR1H0wABT+7ESa 9NMKGHGAAuoY/0RLz+qPk0yAAymIwQ6CEIRlEOMRKpCAkVzKE4C6UK1sxVAiEqE5BTzArg+QoXL0eqJG wmQTqDgUMJG6iuH9wySIpewnZpYKc1UFsuUQJGaE2w8MWcADKcABZzurGEhsYLSJhcsqTyvQP6ZEEYlg gF3tOsgH0tY6uIToKI46UVT8ESDABQVZ8fEMjaJFLNmlCXwsEAIZTDcIO/isCjiAXeYisJrU5KNXvuLB s2BgvHbl4nkDlN5GhmIBu9WtKszXMH905bCWye8t2mMBtHBmuTexAHxCYANlcHYH1YWBCiKA3dKY9rR9 BKU2yQLh8dZywgSqcFHVKNF1ujeBAQFlKP8EMF98QKvEhajxTSgwgQrwSTAVCdUjUABMq5rmigFN64LL 8eAeQ4AsQN4rOuULzMDydoiu1C8FQGyZ9t6DKO4xi1mPlBMLjBRUipFBqIghAhqTFjUAdeXwsKIBDJS5 x0gtbJqDPGROIJW9R5bABORMZ6YamBZFyXMhWmpWnaQnMTlySKploIIKeFk11ARaBayhARCAQAONNjNS i4fNSVNadpc+qqRDQc1NB8Qb9lyyiO1RFA50FM1GOPRNkCLoQRNDBRmpwKqknRqgccQatrY1rh9tVwZ4 hY++prQHJsDewMLZhXKm8igMNVgnE8W+HpzLAp575VSHYFWKGt6hlo3/mm9/oNbhzjWEza3AdBPoKLqN tJ1H0cph82MkxgZFhgjeijQagQUzWIEHoBzHuIxl3zDwkwooUFWaWsskHDeNBTgS7nBfwK5lfoAVGehw 1LxZFOyduChkCm+aYBzo5JDPp2vBAvTkGYlzKRKiOFBt97AcJRN4uXyooysL1FoDH7iGwF8LgQdc0+I9 h8ulhy7selPclea7R4dFMYH3LLUTLlWVIMh6d1l43APAkcEJKIDEkgcElco20gA8IOPHEkebiXoMu/ue K1hdRRcWuOIAOIrktH85mESOuNBBYcU+2mMgHr/QSCggXyMtYM7moEXqTeCQlSNxtjVBvCcKLAAJ/4Sg WsMBSwJoWuWXU4etMoVp5z1flwwbWeCiRzsnKi59Vxho7qGo+0gSz+Q5z7kWcYvXCmJQXRBYYAE/PnyI ee/yDAwnQ5G3VnWKt8AwwyrWzKdL0FnljavstvqKtny1gHqlsHryRiRkJQAMgGyU9woboHucIH4zQAwo kHANSBO6p3S8N3xZdw0WwIBk8UcWoBfHF4Cll2P5FxdtJnG6lXXWcoGgcEXDw3O28CqkoH0fyHrrVSTD Nw7fAwsPuBdFsQIkIAI1lwEZZxMdgEqwooG8hyhX4YGwB4PTAWal1xURoErVl4IBsX8cpmK7QgoyGHe3 YIOkMBI5mCpMNnxsqP90sSBJnhAvI8ABR3gvObGEwVVgiJJ1jqFiVFiFA1F/sEJ/p8WFavd/wQYfpTBQ WriFrPAq2PcJOPgeaqgqw3cOS4cKcPgJ8fIBIGCE12Ve/xCERDJa5kABM/eCf6gaAuVC9YdFhvgWwdZ2 n6RpMHULKRIUn+QN7ucNp6AhKPGDbwiBnFgUGvQLcaFBxLh7puhykvKB8QUKqaeCcGdNC9QVdxGLshhx /4cBw9ZKVoSLqBeJn9B/GUCJqhAWmaiJ0xgv8SIXS7iMeDdaiMIJkqIrGBIKGnQaCJZUCaaNb5FhutVo heWK1FSG12cgN8iL0JiE6biOazEKQUQK7hg4cuH/E/IYbVJmj1aRj9KYkQHZa0NHgwCZE7M4ABiAa/44 PFdYg5C4kBTgEQf4Cm43Ck2DC/s4CkQRhysFj3jIfcI1a2LnkZ+wiXDhkCVZF5eWQCmZkhcwfWNIjrAg aylyhqgok0iJDzcZCg84jZcSj6VIcG4idrEHCsqYlMoTARTgaAlEAbh2AV0HZuIoa1Kpeld5jjrYD/Pw JDlJIEtIisE1CkJJlmXpCWeJlqcDZlekK1YxEAgJNLlQl0ZQdxeAlQDhFhK5IiXygD+5CpLyJm3FlX2J mHSTYwk0mBzgmLI3EEAja7sYk5b5D/UwMKM5IhgJkpHEEdAIg0GEm6QJMsk3/1BZiI9Z2QqQ6CILWZnu J3//AB1GME8fCZgkooyduQqD6YfaZJZd+Zt0Y0VXCEjiAiVmmH3m6BHFmQ97aQQ9WZQTeSKc6ZVPopt+ KIyd0JXwyZ3gQn8B6Ig9cReQqZqiMBLawJz/kAkz8TBc6TW+aR3xWJ3WKZ8YIlxd6aD4CTBg1oj8SQr+ 6SquSXe8OKAqFhDzMAMfZwJm9BrHaCFK0qALKpjfhp0w+J4VCpzCmYUC+IgE0zV1KaAgep7o2QI8BEn1 +YDPID4HtKK3+Qqo+YHnkKBgOaP/coIn6IAuMo6SWZ7LCZ6yWQlnUz2doEEhlQJiyk9MMqHSaZ2faRVh of+dnAml4UKGUOlbj8ihmwKgpPehHnEVrQCRpCAPFCOkQxqmv3OkS8KiLSoKY2kVV0efRqCM2+mmApOh 9UkQrwI0VqkNeeqj8xYLZnMbZlSfSzimp8Qm1EmhqTAQ1lAVTJqd0VmbkKo4rOkiVDkK5ACbeRqirMCn owCkL9FDXsoJQbQBYBNV9ykgf0mdSpqm1rCojNqbZ/qqV8OaVPkrdfl6trqcuLoKuioKI9oCECONK7KE QGSUJ8KixSoKFqCs15BcjDqhrgqtIoN6uUCtkrmAmIqtmqpssXAJ9EA/nwqsjto8QNSeTfKXbaqkQlkV 18ByYsGeGEmu8OotHcah9Gr/qaNgr5j6GHu6rdxKD70Krl0JRNSCkQCxQjTBmQ0KC6j6ohgCbV/am6Ya sSVipwmqIMe5KbnQqD6Cp7e6sbJgCVwqCb/6kTACsfuwoP9aC8d6sNaXsBzRsu0arM8qsyNSp5HYNTCy Ka2JehYrKZ+gDhbwAWKLrWGoCjGXCpjwEpSzlaKQM+d6CyY7CkNrCwH7rqc6mKp6fgvwRJ9AnY9KtTNr pQ1Dl5ICREHzkkNKKQlAAR8QAiiAAo5xDZI5bxwbCvNQOZMAPXMrjUB0Ey2atLTQoBOqsm4Sdh25Y3QU rqMLuLZZJykSmSpCNJWKnJ6wIroSkyeAAukiHCOYq2eL/woj+hKZy443Qagskw+3+aQIyxEKy6Qb0rdm aresOx1bG6tdwwF6wjAJSbNGEJlYEQLp4lUnYBW++7unEA+T8EioEbOeAKi3ILpM27TMK4WoC7LIOr0B Mq91qr/YSw3jO47kOhDYkAEf8LjYhhEckK95WLmgIA+8OjmbOxePcwpsawvJS7Cu4G3ftrDnQEeN+rAY jL/TcbgJaVzF4jHjCQpYkQ2OixEYMXLly8CfQA+YMAPnAbp0wb7+gcOz4LfK27SfqbCP1cF0tLTxK8K5 Imut2RoxQg304iqfNMAsnALYJhy5Wmr7+sBIQzk8DI9xK7ddHAuGarR3O5ghsKxEDP+9Biu9SFwXkEmv xiUNJDAN07jCmCoNZ5ya2sptrmCgMGHDFVwaUwsKJqoP7vrDGYy3psuw6ae69tnGdmO9vyIBzRNVbjsK j4GpfXgVQoQKyyXDn5AJ8XAJNVA5SQYL2PvFouC+h4oKMHussqAraSq215AhPzah40rGkMwTXVO9QEM0 GnR+GCMAk6ENH+ARVpGumvmLfNwKDhwTSBPG96DAtJmRcQs9+iC6S/g5sjCcqaqb2tQZxPU40DCwurzL ONGaB3J9kZmjEvAACjAmnWEAEIAByqkNujmyBFiJ5nsKNAzNmFATq3gKnRsKcfsOW9nKp+C3DxgbejSV blIVzRv/zswhEFdCrAGLznFBr7GaIq/i0TcHAQRwAAiAAA5QzLc6c3jTyUBJC/xqCTRwAzcQclclxhlJ jNhcn++Lsh3QF1FFuunKAbt7xueHV5uBiv2bEQE7yBpNEx3dIkp8sxXwAI4GASVd0gegDqj4GOmKRnlB uc3szP8s0zRNHVQjke37rwq90PEoqAYE0bMWAlSMEeNLAdvUfzMHI3BjpkFY0E3tM7lovZgyARfgaIZd 1VftAA1QeAOg0ivdT3s2CzTsAjGtNKasX7KAyF/qCe/wqWttCsc6AuJhAiXg161wFyeULmKaLgvbf/3X v0vbm1XDxn8td5AY1bA7EE1p2FZ9/9UmvdgAJBDYwcyvBgv8GhMybdk2Qc2ksM2iAIEmmtCfXQrKSAK0 USrj+qUgDJ93IdR7QsWs7dpoOCnbvYTjc5i1/Q8EYTLV6ypreQEK4AC+XdIOUN+1oz93w8yR/bNtMQOV Xcof5Xcx2zzte9nAag/mzQKldBQjYKgsigoDgTBjqgIYkYPDgYoNs9QhNT4PC6yrm9778NHUSmOZQdLz Xd+KfQBxtMz83M/nO6L+ndw1EMH9kJcOaNp9W+BbydSu0DwixR6/c0rmmrIQ7r/f/cI5iIpKnnHv2TxB XqrOOt0g/oi+3DABYAAmPt9XreJqw73KplM6RQvdegk0ENO6hP8TzD0wOO4JB005hinlpBCmNSLkPE3k qJDUCyGmRJ3kOSiMGPk5v9PgLLK0U94P7ayQjsIZBjDfB2AAs+Q0nwzKMxwPMH0DOjDTNP4JkooK0eiA zaPKAKtIBt6ocH4Q35FCQl635wwKeP7CVVF32GB+3uA/2/w7RwGzt/m2hZ7IVEKS3GTiB/AZYb3Aw74K Lx3jl17Wp1CTstDp1ufc+njNuOXhdKs3R7HgcOPgOoyoqTrUHNCHnggCeFmYjUoCCu47HuOsPL7rAwjF CLVcV17SmwHvqVBgYj7mlX0Doy6G0zzQp1AB0G6W0C0xAFvqb77NDt3gY4zep+oTqSoCKKD/AhVYcx+g 5HbdCeHDI6oLy+zOD+6e6NiCGQgQ7PPuwfNmU1jM32zh3+WE6YR1DywnCxag2S/bvsrevQaP84Y621Bu 56qA2tIK8V5VcyAwEvasABNwm1QjARmgAZTsrB3v8dh3YtiiJqlgCMnl4v48Gizf8vv+Sfhg46+QrhMs FBA4ftJd6tqOsnXu86mwtf5ZaxFP9Dl4AbUmAhlQpU2Pa+Wy6lF/C2gC5lSfhxpHCAyg9aZA6S1AAznQ 8gG97JueCmn+SeYCktXJAjGg7CTb41De9vHY5J99fRt6F0RP8V4HAkOPa6qv+njx+Tn/9/U+7yEvQ8JV Vv7kROFQVbQA/w80TAPlpAOlLM3Thw91NwsnBESgTuomi9DSresva66gv/bWqcTqXAGlT/QaIAJehQKr v/rb7fewLwuCX/Ky78GjpVMpYfiS/hxc7/stXwPCP5mTL/n+fgocwODJ/8OYb+B/CQhGgoOEhYZGHYmK i4kbjR2OjYeTRhUSlxKWmRkgnZ4gGp0aFBgYGqeoqRIbjpGslLCxsrO0tba3uLm6u7y8AgHAAYcCv8QJ CQwKyQwJvYQzLdEzMzo6PDc1LrULC86TFN3OHCQvJiUjHSOG6YQsLjMrg4rOkYqs9Yz1tJqYlhURnkJ9 0lChwgIFCJWZSkUQkr1E3iJKnEixosWLs/+KDQsgIEFHBiBBLmjmTRq0GTl48NBxI0a8WRMiYJwwwZsF cuVGoFsHUZCJd9oGRfKGj9EiVvNk+SvIT4LAT50sSBgUoIBVjgMYSnCItBXGr2DDih07Udgwj1WRhWRG stdJaTRUrsxWK4LMi+C8cfCQgoWJdB0MoQs8yB08eZAiFjX6qGesTPw0FcyggfKnu4KAAQiwOcDCUxPu cXVEtrTp06hTG+FIzBjIYx5LRmsxLeXKG4dnLRiAccGEcLwqbNirczBPdYNWxJgR1Ig+bw+jM761tF9B CqIIbQbQGVjWVBVUix9Pvryv1gVYH2stwNls2ih5+LhW4+WsCDUvTsj/y6sDh/+L6CRYIsgZ4U42L0FC GnRHNZhPcNYBlN9qmgWzmQAM8Wbehhx2WB5HCahHDGvs7UIDDdNM00JcP/xwTXOyRACcRfvNiIsHHXgA IIHs8ESYESawUANdgizCoFEbIOacY7oUhIkEmHEm5ZTAfEYBMB5mqeWWF43YkQAFGMNeMe3hQkMOOdBQ wzQ3WPODDzrUtw1mFlEw4S7+/ccBjwIWkogH7bhAJCJJ9cLYjxVFFh5VnXE3JQDfXfCLWVxWaumltLRG YjHAJBBmibasmIMPObBpjQ8u3gBjLHZpqB8Fiu0IWIGDGFfYcrlxhSieD4Hl5CWFBFMhdwAIgAEF/79g quyyzBoxJkfQjklmmbTQlhKpKN6wg0o7xMlCXa7iZeMuC+wIC2A//rRmc/YQ1W5YmQA7SYVSUtvsvfhm OaZHHoFJYmy2uBDNqPOdaI1K2MRgAgn3DUBnRQvw580Ee+1ayGC0rjCkCwkaaSiT8C5KiYVY5mvyyR2y B22/udBmrQ8w03ADD6lm41cHU7H6cEUUUMCARAu8EguB7cyAW8eS0JOllACg7PTT5LEH8CyzvQXNmTDP d3CcMcTAggdJsuowWDVOdCcl6BYmKHODgA0y1BRSCvfcdH/lJUeyqAhNNALDJR8QPwjhYpwzeG3CLA7j R7bEZKGzk0+Cron0gv91l1z35ZhLBGosVbsMXzQ0ZB3EEEL4gI3NtLQaVs/jhuWxICvMILkgrbyd+e24 554RMbS8I817As8gnw9ACCH4XH7dZ9fOFO3322npoAOoIAcyF1QjlOuu/fbb817t75+vrQPMQJQP8w89 1HC4LLsx3zxNrbte6IHr0v469/jnr38hfavYgqA96MEOzjQ8mAXhBziQAftUt7jnnWYw6dLYxorEiP1Z 8ILb25s0BBWEDv5gW8QTAhGIEIQVrGBVhojAAAZwtjpZ4Ge1aFpECPQ4I2gMGy7Qhq7ChsEe+nBun/td BzsoQiIU4YhE+IHAYtE+9zWPcbKQ4ZEcc8IhsY3/UA75oRa3eLLOyS5wQRDCEI6IRCHsYAYxWp5Y9gND WkjRGY6rIf0Q5Bx8cPGOeLwU+FqAgx8McYxkHEIQUJhCFa4wLBGDYize6AxFFMgEN5yGDnuVx0packNv kUYYwwhIIgzhBzGAicNaSCPW2UJujYRgcmqAG+awYAT44OElZ0nLseRQg8IbYgeHQATBraAFMZpA4sTS M0VSgjsTwViB3HE6jpWgQbWMpjQv4jlo9GCTQiBiB23wyzSqcCz7MeYkkCmRCkKOlZJ7pkNsN812ujNU 8HHBNYeYzU0GoQUmBCYlDPnNNZrSjaj8WNqoh07mrIAEOHoEIdj5zoa+03Mt/5in8XQ5RBNyzD4pdNgC nEiRnjlwFuQs559+dMJmusAvJFAlFi3m0Ja2kznRqIEfdVnPMP4AnybEKCE2Okyx+MYCFGhLFBkJR8f9 6EDYYM4LUhCkhZGABOZ0qVTb6bIcXnQFO6CnBy2az0Msb2z+7NkpiSrQpKgrqcwxgQleUA6mHmWqcJ3q CgKXTSH0IKf6zKhGyRLO+I2TrP0xKmEgycpWKmytbH0BQu8X18a6U55D3EEaexrWNoIUsLtIaDqmZyAX 3KCZfjFBCtj6F8Y69rTR5GOLCEkIYS6Po08U57wwyyvAqK2g9SmBWlmwAggiBbXATa1FY+QwsIITqH49 RP9IJQLBnpz1s9kYgQfM8cxYBve6l8Qnawnx2gEklyIRQ64tljtDwfpESJ+FrjodNBTsuveOOp1E4igb lv2ItxacqQgjlunZz8aptIsx7XsHXMnukhIjPbuvG2mri1nZ6idt2sEObrACza4TmgTOcCVXON/STMAC FhjJeBmcC6MgR13c0oELmuugQmn4xT/86oER7FGhyiK/FYGgHG8QuCHwYAbrPVRiYEzkHhZXhTO2SHhD bONFkhc6zS3MzHg5BB2oM5ZZLLKWL9gqBo4lvD67BbEWiYsc8ehHNeABL0kYAxYPectw1p8K5wzbioTT TmJ+ciEIwGdboItoPtFB8bL/eYMU6IQEKVABreLMaO3R+ZAeBrFs/8rgAhDA0rUQrGNGIOji/YAGK8CB qHFgAxg0+tS6m/Mok1xKBdNCSrLgc59pwaceleAGPhACEHwwDRuM2gYlQLWwMzdfu5ymmJNW7mZiPWta M8IDsTOaoIXwY3j4GgemHra251ZcFgrTNEtOtiHGzGw/D0a30ZZdepPKMVIHe9vwdtpr4QduCgA1qHkm cYl5xEoUqXvd01jBC7Id74LnC8kgtsBpwgnUJi8SxxSBoAlw0Eo2YQO6MM2rwTeuLJoknAMKN4197eRw WJBbvx4owQtiYEWLp1eSJ+S4zD2EZDp92AIgB+rC7d3w/zwHdIYdYEFiY3BL2Q2J3d2cudLLw8LE4efj CWd1nYop4hHru8QlEHoMXuCX2KW3sP5butjFIyMZeffmCQex1MGbYHCU/Jh6jghi2Zo8NhX2Bijq29j3 bpriuhbtaa8z2+0tbkNw5uq4IMfWt14OGxoNui5YDsc0zvfKYwTJTb95zi3w7dKAufCFODlF1Dr0cngA vbjxSwnebfnWf8WQTcR51I07lmK6+rIQn0g65s71Z6pgBwJUmHQ56/ri27nYCbdT2UXOc9APgliIl4Vg PUACodP9mSUQNeOXumjje78XZqcJC/Ejft/QfnVtfzvcf15mGjqyBBY1AY5GsHoWWP//Bd3/vv5xMcoV IpkbrtV04UI2koZvtkAAoldbAZII8McC56AIuvUCMiADULV/FpgLAihMuxET4xd+xoZIhAdU9hJFfBZ3 7acTf4aCOjYCAmcDCsNQFxiD3DVnG5iB3rVCwuRdgtcLiSRpBXCAfFYA0Tc0JnYo9PcCNrBUFSiDTDgJ 5IeDLLRRrmV+rjVnYMEAFHABQDUBP1gLstZscCRkKdgBKpcCTMVUTZiG3LUb42d+med3RyYWDHABF2Bv 3zVufGYAYNgLKLhfZ6YIiNYXTEV8aiiDNGhIULhRu7FROxgRc0iHzicIm/GF0FdUbsYY07VWaoUjrvBm hWiBr7X/gQHYiBLxiHSofobHHUFYiVMUR7MSIKKlVjuUPZ94gV/VdKQYEQKQhXR4AV0IUpxRgoe3bFD2 Z0bhASrgCCNghlC1Q7WYhho1hX3HAJVBhwxAAJcFfdCHgEOINvsFQcgIAyrgENL1CK0gS88Yg023Uadh LKFAhwrAjQn4fMQyjPLIXEbVXCoAA/w4jrWDFFyRjmpIZ6YRAAyAASAgAh9wAQqgjfMYjPUYkd14CEIW jvsojgqSkV2BjgKpjrnYC44CAaYgAijwAQywAAzwC/NIjw4JAAgYESxWJBcpjjCwQwrSXh3JhGsXEcQi AAdZCiIgAhpQChgAAQKwkixJAMNo/4K3QEPrIAL7qAIooCujwVI5eZW8wBEMIJJEGQpEiQEPcHhD1ZLs 15RWSUEhEALnOItY2ZbeMAClIJJc+ZVFKZZRZJeSWBqzSJVn6ZZ+GQv7QZeCuQBIGXrEmBobaZNC85eM aQsRQJRzKZJhyZTaMZEUUZW1k2WNuZmII5dF+ZVHSZkc0onnCJAcyZmoWQhzSZcJUJgekpmnmZqyOQmr +Zl1KZobEpCzuZuy8ACQuZVyGZrLspi8WZyHsABFGSLAQAwDMIzK0pfGyZsD8ABHGZ3WWTcqeZ3auZ3c 2Z3e+Z3gGZ7iOZ7kWZ7meZ7omZ7quZ7s2Z7u+Z7wGZ/yOZ/0Wf+f9nmf+Jmf+rmf/Nmf/vmfABqgAjqg BFqgBnqgCJqgCrqgDNqgDvqgEBqhEjqhFFqhFnqhGJqhGrqhHNqhHvqhIBqiIjqiJFqiJnqiKJqiKrqi LNqiLvqiMBqjMjqjNFqjNnqjOJqjOrqjPNqjPvqjQBqkQjqkRFqkRnqkSJqkSrqkTNqkTvqkUBqlUjql VFqlVnqlWJqlWrqlXNqlXvqlYBqmYjqmZFqmZnqmaJqmarqmbNqmbvqmcBqncjqndFqndnqneJqnerqn fNqnfvqngBqogjqohFqohnqoiJqoirqojNqojvqokBqpkjqplFqplnqpmJqpmrqpnNqpnvo3qaAaqqI6 qqRaqqZ6qqiaqqq6qqzaqq76qrAaq7I6q7Raq7Z6q7iaq7q6q7zaq776q8AarO4ZCAAh+QQJAwBHACwA AAAAAAIAAob/2wT/3Av/3RT/3hz/5AX/6wf/5A3/6gz/8gr//w3/4xT/6RT/4xz/6h3/9hD//RL/8xv/ /x7/3yP/3yn/4yT/6iT/4iz/6yv/8iX//yL/8Sz//yv/4jT/6jT/4zv/6jz/8jP//zL/8zz//z3/5UT/ 6kT/5kr/60z/80T//kT/8kv//kz/51b/61T/51z/6lz/8VT//1X/8Vz//1z/7WL/7Wv/8mP//2P/82r/ /Wv/73D/83P//XT/9Hv//Xv/9oP//IT/94j//on//pP//5z//6T//6gAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4BHgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZ 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 z772t8/97nv/++APv/jHT/7ym//86E+/+tfP/va7//3wj7/850//+tvZ//74z7/+98///vv//wAYgAI4 gARYgAZ4gAiYgAq4gAzYgA74gBAYgRI4gRRYgRZ4gRiYgRq4gRzYgR74gSAYgiI4giRYgiZ4giiYgiq4 gizYgi74gjAYgzI4gzRYgzZ4gziYgzq4gzzYgz74g0AYhEI4hERYhEZ4hEiYhEq4hEzYhE74hFAYhVI4 hVRYhVZ4hViYhVq4hVzYhV74hWAYhmI4hmRYhmZ4hmiYhmq4hmzYhm74hnAYh3I4h3RYh3Z4h3iYh3q4 h3zYh374h4AYiII4iIRYiOcUCAAh+QQJAwBBACwAAAAAAAIAAob/2wT/3Ar/3RT/3hz/5AX/6Qf/5Az/ 6Q3/4xT/6RT/4xz/6Rz/9Rv//h7/3yP/3yr/4yT/6iX/4iz/7Cv/8iX//yL/8iz//yz/4jT/6jT/4zv/ 6zz/8zL//zD/9Dz//jz/5UT/6kT/5kr/60v/9ET//UH/8Uz//kz/51b/7FT/51v/6lz/8FX//1T/8Vz/ /1v/7WL/7mv/8mP//2T/82v//Wv/73L/83P//HT/9Hv//Xz/9oP//YP//Ir//5P//53//6MAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAH/4BBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3 uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz 9PX29/j5+vv8/f7/AAMKHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOq XMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0Kb4ACBA4nQoOQQIDAahq1QY1QdSt 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 xWTErYQ9ab0g19NczakCyZsdUiOA0Rd9AZi82rm9DS4AAiigDLt93OdpMqSd3NH9QtJ93dm93d393eE9 3uV93um93u393vE93/V93/m93/393wE+4AV+4Am+4A3+4BE+4RV+4Rm+4R3+4SE+4iV+4im+4i3+4jE+ 4zV+4zm+4z3+40E+5EV+5Em+5E3+5FE+5VV+5Vm+5V3+5WE+5mV+5mm+5m3+5nE+53V+53m+533+54E+ 6IV+6Im+6I3+6JE+6ZV+6Zm+6Z3+6aE+6qV+6qm+6q3+6rE+67V+67m+673+68E+7MV+7Mm+7M3+7NE+ 7dV+7dm+7d3+7eFgPu7lfu7pvu7t/u7xPu/1fu/5vu/9/u8BP/AFf/AJv/AN//ARP/EVf/EZv/Ed//Eh P/Ilf/Ipv/It//IxP/M1f/M5v/M9//NBP/RFf/RJv/RN//RRP/VVf/VZv/XvNQgAACH5BAkDAD0ALAAA AAAAAgAChf/bA//cCv/dE//eHv/jBf/jDP/oCP/iFP/oE//jG//pHP/0Hv/5H//fI//fKv/jJP/pJf/h LP/rLP/yI//+If/zLP/+K//iNP/qM//jO//qPP/zMv/9Nf/zPf/8O//lRP/pRP/nSv/qTP/yRf/7Qv/y Tf/7TP/nVv/rU//nW//qXP/xU///U//xXP//Wv/sY//tav/zY///Zf/0a//9bf/vcf/yc//7cv/0fP/7 ev/2gv/9hP//iQAAAAAAAAAAAAb/wJ5wSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CweEwum8/otHrN brvf8Lh8Tq/b7/i8fs/v+/+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm 5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wCnHTgQsOCuAwUMKrx1AAHBhRBjIUwYsaKrgYJUWNzIKoWK FBxDmvqYAuSRCBdEqryU4sWLki+GfJgpAkSElTgllWxJ8sUJ/xEsgpZImbNoI5cwW54IETToB6NQFe1s +fLECRNNTWSIytVQ0qpMm7IosbWrWUAfX7YsiUIsixBEz8rVA1PtS58n2rJw8XSu3ztJ1wr2qEIFi75/ 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 tmM99mNBNmRFdmRJtmRN9mRRNmVVdmVZtmVd9mVhNmZldmZptmZt9mZxNmd1dmd5tmd99meBNmiFdmiJ tmiN9miRNmmVdmmZtmmd9mmhNmqldmqptmqt9mqxNmu1dmu5tmu99mvBNmzFdmzJtmzN9mzRNm3Vdm3Z tm3d9m3hNm7ldm7pf7Zu7fZu8TZv9XZv+bZv/fZvATdwBXdwCbdwDfdwETdxFXdxGbdxHfdxITdyJXdy KbdyLfdyMTdzNXdzObdzPfdzQTd0RXd0Sbd0Tfd0UTd1VXd1Wbd1Xfd1YTd2ZXd2abd2bfd2cTd3dXd3 ebd3ffd3gTd4hXd4ibd4jbdogwAAIfkECQMAMwAsAAAAAAACAAKF/9sD/9wK/90U/94c/+IF/+MM/+IV /+gQ/+Ic/+sd//Mf/98j/98p/+Mk/+kl/+Is/+os//Ml//sm//Iq//4q/+M0/+ky/+M7/+o8//Aw//E9 /+VE/+lE/+dK/+pM//JD//FN/+dX/+tT/+da/+pc//FU//lS//Jd/+xj/+1q//Nj//xi//Vs//lu/+9x //J0//hx//N6//aCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv/AmXBILBqP yKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaHiImK i4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXG x8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vuJBvz/xgr4 A0gQmIGBBRPyKqCwocOHECNKnJiFBAoSFDOiIkFiBMYiG0JW0EgyE8cRFz+S6OABhIcNJWNWOskRxYib IUyYAHFBps//SDdt2uQYQoTODj+TNkIZVGhRnSZgKp2KCIXNmzdJ5NQJQirVr4KsBg1KQkQJqD3BqvVT 8ypWjhxFiPC6tu4dmkzFkjixV+uGtHYDy7FYE2UKFy6swiVKV7BjNkMNx5BB2QXfxSsfa25j8TDlz4nh DuW4ubQaF5M/y3CxuOlH07DJWHXxOUbKk7dRxN795eLNFKlDk+ZNHMzY2TJepIBbvLkXtx5TKE/pvLqW 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 wwBxiHE6aHAa2AHgkGaEOenhLfQZN7Cs03MkzVI8bxjPoUr0hrb74y40OhiQZDKWQ/1Qif++ita1husk KFgbVXPhYaW4QAc8IJUqtDnWDy01Ld6GgGhi7NSRQx6bRYnfKegnHcX2p//m2dczDwDbXu7EdjrJ5g3c MrzRXceTrP3PYyfb1t6OklPZrJ9ydICbvomKOtKtbj711aU7Nu8ByrJgYOeixqohR1Xz7cxX8Ynbyu5y s1mRgEEdwM9XUSYzw8MEDNh0wAk/pYG5jT0DwyMBtem0gplJ8IxT5ksI97gfxRnNiLKhOxWH7jnTK5d6 s5w3kX45DLnt73lw+1UOSAB6es1IjC+43jHxxXh+vsvYulsUCEhAAiBggQYMh8rJU/kumr7gdjYUzlEf 9AAkHoEJGL3/TzcXey5KunN2sMPssRaA1a+e97ajfJthdzqZ6x5nAaA97wq4ugDsZXGmM/OOY2h5xwOf 4cHjPe9X3zuNdQ4/jcI68kQOQ18TYHjLxzuyl4OLzztv3WRsPe8YC3g/U59w7ezJ1HaBfexl/4DL4573 V9FO74EffOEPn/jFN/7xkZ985S+f+c13/vOhH33pT5/61bf+9bGffe1vn/vd9/73wR9+8Y+f/OU3//nR n371r5/97Xf/++Eff/nPn/71t//98Z9//e+f//33//8BMAAFcAAJsAAN8AARMAEVcAEZsAEd8AEhMAIl cAIpsAIt8AIxMAM1cAM5sAM98ANBMARFi3AESbAETfAEUTAFVXAFWbAFXfAFYTAGZXAGabAGbfAGcTAH dXAHebAHffAHgTAIhXAIibAIjfAIkTAJlXAJmbAJnfAJoTAKpXAKqbAKrfAKsTALtXALubALvfALwTAM xXAMybAMzfAM0TAN1XAN2bAN3fAN4TAO5XAO6bAO7fAO8TAP9XAP+ZD6ggAAIfkECQMAKQAsAAAAAAAC AAKF/9sE/90M/90U/94c/+EF/+IL/+IV/+gS/+Mb/+gb/98j/98q/+Qk/+kk/+Is/+kr//Un//kn/+M0 /+kz/+M7/+o8/+VE/+lF/+dK/+pL//BO/+dW/+tT/+da/+pb//BV//Jc/+xj/+1q//Nk//Rr/+9x//F0 //N8//WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 9mZ/9mif9mq/9mzf9m7/9nAf93I/93Rf93Z/93if93q/93zf937/94Af+II/+IRf+IZ/+Iif+Iq/+Izf +I7/+JAf+ZJ/C0EAACH5BAkDACQALAAAAAAAAgAChf/eBP/fCv/dFf/eHP/hBf/hDP/iFf/jG//fJf/f Kf/fMf/jJP/oJP/iLP/oL//iNP/pNf/jOv/pPf/kRP/pRP/nSv/qTP/nVv/rU//nWv/pW//wVv/xXf/s Y//ubP/yY//zbP/ucP/xdP/yeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb/QJJwSCwaj8ikcslsOp/Q qHRKrVqv2Kx2y+16v+CweEwum8/otHrNbrvf8Lh8Tq/b7/i8fs/v+/+AgYKDhIWGh4iJiouMjY6PkJGS k5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3O z9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wADChxIsKDBgwgT Klx4qgPDh5w0OCySQYMGiBgxacjAsaLFjxlDUtrYIUOHDhJTilwJqWTJiihRXmRJc9FGjjI/ZqjJE1EH /w9APXzcOLOn0UA/Q4wYEULoR5RHo/pRunSpCJgdJ0rdaodq1RE5TXIsyrXsGw9fl8aU6NKj2bds0H5t mvNmSbh41QANQVVE3ZN5A6OxeJKtzJyCE5MhbDEDhiEdySqezKWuhseQY1LevMXjxwtGLHIefcUk451H JJNe3eRkRY6sY2e5KVG27SpjK97eLeUw799OnqoGTpzI0OLIjchEnbw5icZanRdHLD05yOrIqWMnfn07 8KfeuZsM/30j+d8xmZ+33X09++HuSbuNbxsqfdma78cWrZ91+/6c2QfgaDINSBp/Br4xwQT71JagGwsu mA+CD7IRIYP4CFjhGhRceP/PXRuy0eGFGNJDYYhokDhBhybCh+IYI6rYIQUWYGAjZupo+OIYK6p4IY01 foRBjBSc4+KOXPjoY5AbcLABBhXIKGE4gCEZhpI+VmDRBhtosIEFWEbIohYWlGnBL0damUWMWFKAAZdd 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 sKHDhxAjSpxIsaLFixgzatzIsaPHjyD/Q4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59A gwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdylVWgQFdw4odS7as2bNo06pdy7at27dw48qdS7eu 3bt48+rdy7ev37+AAwvGUWAwKgIEDCtezLix48eQI0uevCYA5cuYM2vezLmz58+gQ4seTbq06dOoU6te zbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/g w5+yLL5JAAECyjMhQF69EvTulwhoH7++/fv48+vfz7+///8ABijg/4AEFmjggQgmqOCCDDbo4IMQRijh hBRWaOGFGGZ4hgEanmBAYR2SYACHIYpQwIcljgBWiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABink kEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinn nHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppbUAgOmmnHbq6aeghirq qKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7Fiz0EYr 7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs 8MAEF2zwwQgnrPDCDDfs8MMQRyxxjREAACH5BAkDAAMALAAAAAAAAgACgf/pSP/pTv/taQAAAAL/nI+p y+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1q t9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZaXmJmam5 ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19 jZ2tvc3d7f0NHi4+Tl5ufo6err7O3i4t4B7vIgAvb3+Pn6+/z9/v/w8woMCBBAsaPIgwocKFDBs6fAgx osSJFCtavIgxo8aN/xw7evwIMqTIkSRLmjyJMqXKlSxbunwJM6bMmTRr2ryJM6fOnTx7+vwJNKjQoUSL Gj2KNKnSpUybOn0KNarUqVSrWr2KNavWrVy7ev0KNqzYsWTLmj2LNq3atWzbuqUD4K3cuXTr2r2LN6/e vXz7+v0LOLDgwYQLGz6MOLHixYwbO34MObLkyZQrW76MObPmzZw7e/4MOrTo0aRLmz6NOrXq1axbu34N O7bs2bRr276NO7fu3bx7+/4NPLjw4cSLGz+OPLny5cybO38OPbr06dSrW7+OPbv27dy7e/8OPrz48eTL mz+PPr369ezbu38PP778+fTr27+PP7/fAPopBP/g318E/wVIYIEGHohgggouyGCDDj4IYYQSTkhhhRZe iGGGGm7IYYcefghiiCKOSGKJJp6IYooqrshiiy6+CGOMMs5IY4023ohjjjruyGOPPv4IZJBCDklkkUYe iWSSSi7JZJNOPglllFJOSWWVVl6JZZZabslll15+CWaYYo5JZplmnolmmmquyWabbr4JZ5xyzklnnXbe iWeeeu7JZ59+/glooIIOSmihhh6KaKKKLspoo44+Cmmkkk5KaaWWXopppppuymmnnn4Kaqiijkpqqaae imqqqq7KaquuvgprrLLOSmuttt6Ka6667sprr77+Cmywwg5LbLHGHotsssokLstss84+C2200k5LbbXW Xottttpuy2233n4LbrjijktuXwUAACH5BAkDAAAALAAAAAAAAgACAAj/AAEIHEiwoMGDCBMqXMiwocOH ECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0 qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq 3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevX sGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9P vrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjh hRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnk kUgmqeSSTDbp5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnn nXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrq qaimquqqrLbq6quwxv8q66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGK+201FZr 7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa6+S/tyr77789uvvvwAHLPDABBds 8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds 880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt 9tlop6322my37fbbcMct99x012333XjnrffefPdx7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRX bvnlmGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQX b/zxyCev/PLMN+/889BHL/301Fd/VUAAIf8LSW1hZ2VNYWdpY2sOZ2FtbWE9MC40NTQ1NDUAIfkECQMA AAAsAAAAAAACAAIAAv+Ej6nL7Q+jnLTai7PevPsPhuJIluaJpurKtu4Lx/JM1/aN5/rO9/4PDAqHxKLx iEwql8ym8wmNSqfUqvWKzWq33K73Cw6Lx+Sy+YxOq9fstvsNj8vn9Lr9js/r9/y+/w8YKDhIWGh4iJio uMjY6PgIGSk5SVlpeYmZqbnJ2en5CRoqOkpaanqKmqq6ytrq+gobKztLW2t7i5uru8vb6/sLHCw8TFxs fIycrLzM3Oz8DB0tPU1dbX2Nna29zd3t/Q0eLj5OXm5+jp6uvs7e7v4OHy8/T19vf4+fr7/P3+//DzCg wIEECxo8iDChwoUMGzp8CDGixIkUK1q8iDGjxo3/HDt6/AgypMiRJEuaPIkypcqVLFu6fAkzpsyZNGva vIkzp86dPHv6/Ak0qNChRIsaPYo0qdKlTJs6fQo1qtSpVKtavYo1q9atXLt6/Qo2rNixZMuaPYs2rdq1 bNu6fQs3rty5dOvavYs3r969fPv6/Qs4sODBhAsbPow4seLFjBs7fgw5suTJlCtbvow5s+bNnDt7/gw6 tOjRpEubPo06terVrFu7fg07tuzZtGvbvo07t+7dvHv7/g08uPDhxIsbP448ufLlzJs7fw49uvTp1Ktb v449u/bt3Lt7/w4+vPjx5MubP48+vfr17Nu7fw8/vvz59Ovbv48/v/79/Pv7//8PYIACDkhggQYeiGCC Ci7IYIMOPghhhBJOSGGFFl6IYYYabshhhx5+CGKIIo5IYokmnohiiiquyGKLLr4IY4wyzkhjjTbeiGOO Ou7IY48+/ghkkEIOSWSRRh6JZJJKLslkk04+CWWUUk5JZZVWXollllpuyWWXXn4JZphijklmmWaeiWaa aq7JZptuvglnnHLOSWeddt6JZ5567slnn37+CWiggg5KaKGGHopoooouymijjj4KaaSSTkpppZZeimmm mm7KaaeefgpqqKKOSmqppp6Kaqqqrspqq66+Cmusss5Ka6223oprrrruymuvvv4KbLDCDktsscYei2yy yhMuy2yzzj4LbbTSTktttdZea1oBADs= AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAkAAMMOAADDDgAAAAAAAAAA AACDiI4Uy83Ql+jr6+Tk5+ffz9LUvrm8v56lqa2AlZieZYiOlFF7gYhEb3Z+O2lxeTlpcXk4bnV9OnqB iEOIjpRQmJyiYKmssXm7v8KZ0tTWuubo6drn6enku77Br2pxeDDX2NtL+vn69OnX5P/lz9//9Orx//n2 +f/4+Pn89fb29u/y8e3p6+zm5ejo4OTn597k5+fe5ejo3+nr6+Xv8vHt9ff39fj4+fv59/n/9Orx/+TP 3//p1+T/9vb2+qqvs3Xs7e5g/Pr7/bR6pv+YSIT/o1yS/7F0ov++jLL/y6PB/9Oxy//exNj/483e/+TN 3v/kzd7/5M3e/97E2P/TsMr/y6LB/76Msv+xdKL/o1yR/5hIg/+0eqb/+vn6/8fJzYHw8PFR/fv8+rV9 pv+TQH7/lEF//5NAfv+TQH7/k0B+/5VDgP+XRoL/l0aC/5ZFgf+WRYH/l0aC/5ZGgv+VQoD/k0B+/5NA fv+TQH7/lEF//5NAfv+1fKf/+vn6/cXHynLs7e1D/fz99LuHrv+SPn3/lUJ//5VDgP+VQ4D/lUOA/5VD gP+UQoD/pF6S/72KsP+9irD/o16S/5RCf/+VQ4D/lUOA/5VDgP+VQ4D/lUJ//5I+ff+7hq7/+fn5+rzA wmPl5eY1/f797dGuyf+jXJL/nVGK/5hJhP+WRYH/lUOA/5RAf/+ydqP/7uHr//Lo8P/y6O//7uHq/7J2 o/+TQH7/lUOA/5ZEgf+YSIP/nE+I/6JYj//RrMj/9/j49q+zt1bh4uQo/f395vr2+f/y6PD/7N3o/+TP 3v/cwdX/1rbO/9Kvyf/v4uv/3cTX/6Rek/+kXpP/3cPX/+7h6//Rrcj/1LPM/9q+0//jzd3/6trm//Hm 7v/69vn/9vb38Kerr0Xa290e/P39297D1/+4gqv/xpq7/9GsyP/Zu9H/38bZ/+jW4//7+Pr/tX2o/5I+ ff+SPn3/tX2o//v4+v/o1uP/38fZ/9q+0//Tscv/yJ6+/7qFrf/fxtn/8vT06JyhpTnMz9AV+/38ztq+ 0/+UQn//k0B+/5RCf/+WRIH/lkWB/6Nbkf/v4uz/yqHA/5ZEgf+WRIH/yqHA/+/i7P+iW5H/lkWB/5ZE gf+UQn//k0B+/5RCf//bvtT/7/Hx35CUmS3BxMgL+/38v+LL3P+XR4P/lUOA/5VDgP+VQ4D/lUKA/5VD gP/HnLz/9u/0/9q/0//av9P/9u/1/8edvf+VQ4D/lUKA/5VDgP+VQ4D/lUOA/5dHg//iy9z/7e/v1H6C iCKipqkG+fv6sebS4f+aS4b/lUKA/5VDgP+VQoD/mUqG/5hJhP+ZSYT/voyy/9/G2f/fxtn/voyy/5lJ hP+YSIT/mUqF/5VCgP+VQ4D/lUKA/5pLhv/m0uH/6OrqyG91fBhYW2AD9/j3oe3f6f+eU4v/lEJ//5VD gP+WRYL/zabE/76Msv+TQH7/lEF//5dGgv+XRoL/lEF//5NAfv++jLH/zabD/5ZFgv+VQ4D/lEJ//55T i//u3+r/3+LjvFdcZRL///8A9vj3jvPp8P+iWY//lEJ//5RBf/+zeKX/+vb5/9/H2f+YSIT/lUOA/5VD gP+VQ4D/lUOA/5hIhP/fx9n/+vb5/7N4pf+UQX//lEJ//6JZj//z6fD/297frDY/SQz///8A9vf3ffXt 8/+mYJX/k0B+/55TjP/l0uH//////PXt8/+nY5b/lEF//5VDgP+VQ4D/lEF//6dilv/17fP//////eXS 4P+eU4z/k0B+/6Zfk//17fP/1tnbmwAHFQb///8A8fHxa/n1+P+tbp7/lEF//8qiwP/9/f308/T0pf79 /vLAkLT/k0B+/5VDgP+VQ4D/k0B+/8CQtP/8/Pz27Oztrf79/vHKocD/lEF//65unv/49Pf/zc/SiwAA AAP///8A7/DwVPz7/PuzeaX/rW2d//Xu9P/19vao3N7fJf///9DbwNT/l0aC/5VDgP+VQ4D/l0aC/9zA 1f/3+fjcvsHDMP///5317vT/rW2d/7R6pv/6+fr+xMbJdQAAAAD///8A7+/wNP7+/urgyNr/6Nfk//z9 /N7f4uMz////AP3+/pnw5e7/olmQ/5RCf/+UQX//olmP//Hm7v/r7e2rOUFKCfv7+yv////Z6Nfk/+DI 2v/6+/vvxMfJSf///wD///8A2NrbBvz8/Hr////h/v7+1vHx81sAEBwB////APf4+Fr7+fv7tn6o/5NA fv+TQH7/tn6p//v5+v3X2dtxAAAAAdDZ3AD6/v5U/v//1f///+L19fWBr7K2Cenq7AAAAAAA+Pn5APb2 9gX5+voh9/j4G9vb3gK9vb8A////AO7v8Sj////i0K3H/5RCgP+VQoD/0a3I//n7+uq/wsU5////AL/D xgD09/cC+vv7Gvf4+CHf4OAG8fHxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6+vsAOTk 5Qj+//+x6trm/5xQif+cUIn/6trm//Hz87+Ok5gTqKquAISMlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo+RAP///wD4+fpq+vf6/rJ2o/+ydqP/+vf5/9/h 4oAAAAACVFlhAIiPlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAPn5+wD29vgi////2OfV4//n1eP/+vv73sjLzTD///8AWF5nAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnp6gAdHSUA/Pz8Xv// /9v+/v7c8fLzZDZCTAL///8AYWlxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj5gAAAAAA9PT1A/v7+x/5+fkf0dLVBAAAAACvsbYAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAEAgQABAIEAQQDDAMMA/wD/AP+A/wD/gf8A/8H/AP/D /wA= ================================================ FILE: RaidCrawler.WinForms/SubForms/TickModifier.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class TickModifier { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { TB_Tick = new TextBox(); L_Tick = new Label(); B_Read = new Button(); B_Write = new Button(); B_NTP = new Button(); SuspendLayout(); // // TB_Tick // TB_Tick.Font = new Font("Consolas", 9F); TB_Tick.Location = new Point(50, 7); TB_Tick.Margin = new Padding(4, 3, 4, 3); TB_Tick.Name = "TB_Tick"; TB_Tick.Size = new Size(162, 22); TB_Tick.TabIndex = 45; // // L_Tick // L_Tick.AutoSize = true; L_Tick.Location = new Point(12, 9); L_Tick.Name = "L_Tick"; L_Tick.Size = new Size(31, 15); L_Tick.TabIndex = 44; L_Tick.Text = "Tick:"; L_Tick.TextAlign = ContentAlignment.MiddleRight; // // B_Read // B_Read.Location = new Point(12, 35); B_Read.Name = "B_Read"; B_Read.Size = new Size(96, 27); B_Read.TabIndex = 130; B_Read.Text = "Read"; B_Read.UseVisualStyleBackColor = true; B_Read.Click += B_Read_Click; // // B_Write // B_Write.Location = new Point(116, 35); B_Write.Name = "B_Write"; B_Write.Size = new Size(96, 27); B_Write.TabIndex = 131; B_Write.Text = "Write"; B_Write.UseVisualStyleBackColor = true; B_Write.Click += B_Write_Click; // // B_NTP // B_NTP.Location = new Point(12, 65); B_NTP.Name = "B_NTP"; B_NTP.Size = new Size(200, 27); B_NTP.TabIndex = 132; B_NTP.Text = "Reset Time (NTP)"; B_NTP.UseVisualStyleBackColor = true; B_NTP.Click += B_NTP_Click; // // TickModifier // AcceptButton = B_Write; AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(224, 96); Controls.Add(B_NTP); Controls.Add(B_Write); Controls.Add(B_Read); Controls.Add(TB_Tick); Controls.Add(L_Tick); FormBorderStyle = FormBorderStyle.FixedDialog; Name = "TickModifier"; ShowIcon = false; SizeGripStyle = SizeGripStyle.Hide; Text = "TickModifier"; ResumeLayout(false); PerformLayout(); } #endregion private TextBox TB_Tick; private Label L_Tick; private Button B_Read; private Button B_Write; private Button B_NTP; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/TickModifier.cs ================================================ using RaidCrawler.Core.Connection; using RaidCrawler.Core.Discord; namespace RaidCrawler.WinForms.SubForms { public partial class TickModifier : Form { readonly ConnectionWrapperAsync ConnectionWrapper; readonly NotificationHandler Webhook; readonly CancellationToken Token; public TickModifier(ulong tick, ConnectionWrapperAsync connectionWrapper, NotificationHandler webhook, CancellationToken token) { InitializeComponent(); TB_Tick.Text = tick.ToString(); ConnectionWrapper = connectionWrapper; Webhook = webhook; Token = token; } private async void B_Read_Click(object sender, EventArgs e) { try { var tick = await ConnectionWrapper.GetCurrentTime(Token).ConfigureAwait(false); if (InvokeRequired) Invoke(() => TB_Tick.Text = tick.ToString()); else TB_Tick.Text = tick.ToString(); } catch (Exception ex) { await this.DisplayMessageBox(Webhook, $"Could not read the date: {ex.Message}", Token).ConfigureAwait(false); } } private async void B_NTP_Click(object sender, EventArgs e) { try { await ConnectionWrapper.ResetTimeNTP(Token).ConfigureAwait(false); B_Read_Click(sender, e); } catch (Exception ex) { await this.DisplayMessageBox(Webhook, $"Could not reset the date: {ex.Message}", Token).ConfigureAwait(false); } } private async void B_Write_Click(object sender, EventArgs e) { try { var success = ulong.TryParse(TB_Tick.Text, out var time); if (success) { await ConnectionWrapper.SetCurrentTime(time, Token).ConfigureAwait(false); } else { await this.DisplayMessageBox(Webhook, $"Could not write the date: {TB_Tick.Text} could not be parsed as a ulong!", Token).ConfigureAwait(false); } } catch (Exception ex) { await this.DisplayMessageBox(Webhook, $"Could not write the date: {ex.Message}", Token).ConfigureAwait(false); } } } } ================================================ FILE: RaidCrawler.WinForms/SubForms/TickModifier.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 ================================================ FILE: RaidCrawler.WinForms/SubForms/UpdateNotifPopup.Designer.cs ================================================ namespace RaidCrawler.WinForms.SubForms { partial class UpdateNotifPopup { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { B_Close = new Button(); B_Download = new Button(); label1 = new Label(); L_Version = new Label(); label3 = new Label(); SuspendLayout(); // // B_Close // B_Close.DialogResult = DialogResult.Cancel; B_Close.Location = new Point(12, 61); B_Close.Name = "B_Close"; B_Close.Size = new Size(75, 25); B_Close.TabIndex = 1; B_Close.Text = "Ignore"; B_Close.UseVisualStyleBackColor = true; // // B_Download // B_Download.DialogResult = DialogResult.OK; B_Download.Location = new Point(93, 61); B_Download.Name = "B_Download"; B_Download.Size = new Size(150, 25); B_Download.TabIndex = 0; B_Download.Text = "Open download page"; B_Download.UseVisualStyleBackColor = true; // // label1 // label1.AutoSize = true; label1.Location = new Point(12, 9); label1.Name = "label1"; label1.Size = new Size(123, 15); label1.TabIndex = 2; label1.Text = "New update available!"; // // L_Version // L_Version.AutoSize = true; L_Version.Location = new Point(12, 26); L_Version.Name = "L_Version"; L_Version.Size = new Size(149, 15); L_Version.TabIndex = 3; L_Version.Text = "Current: v1.1.1 | New v9.9.9"; // // label3 // label3.AutoSize = true; label3.Location = new Point(12, 43); label3.Name = "label3"; label3.Size = new Size(228, 15); label3.TabIndex = 4; label3.Text = "It is advised to update as soon as possible!"; // // UpdateNotifPopup // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(255, 93); Controls.Add(label3); Controls.Add(L_Version); Controls.Add(label1); Controls.Add(B_Download); Controls.Add(B_Close); FormBorderStyle = FormBorderStyle.FixedDialog; Name = "UpdateNotifPopup"; Text = "Update available!"; Load += UpdateNotifPopup_Load; ResumeLayout(false); PerformLayout(); } #endregion private Button B_Close; private Button B_Download; private Label label1; private Label L_Version; private Label label3; } } ================================================ FILE: RaidCrawler.WinForms/SubForms/UpdateNotifPopup.cs ================================================ namespace RaidCrawler.WinForms.SubForms; public partial class UpdateNotifPopup : Form { private Version cv; private Version nv; public UpdateNotifPopup(Version currentVersion, Version newVersion) { cv = currentVersion; nv = newVersion; InitializeComponent(); } private void UpdateNotifPopup_Load(object sender, EventArgs e) { L_Version.Text = $"Current: v{cv.Major}.{cv.Minor}.{cv.Build} | New: v{nv.Major}.{nv.Minor}.{nv.Build}"; B_Download.Focus(); CenterToScreen(); } } ================================================ FILE: RaidCrawler.WinForms/SubForms/UpdateNotifPopup.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 ================================================ FILE: RaidCrawler.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.3.32819.101 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RaidCrawler.WinForms", "RaidCrawler.WinForms\RaidCrawler.WinForms.csproj", "{3137FDBF-AE30-4A9D-B334-C12524540401}" ProjectSection(ProjectDependencies) = postProject {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0} = {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0} EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RaidCrawler.Core", "RaidCrawler.Core\RaidCrawler.Core.csproj", "{EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RaidCrawler.Tests", "RaidCrawler.Tests\RaidCrawler.Tests.csproj", "{41EC55F6-39BE-45E9-A39C-932108DDB4F9}" ProjectSection(ProjectDependencies) = postProject {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0} = {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {3137FDBF-AE30-4A9D-B334-C12524540401}.Debug|Any CPU.ActiveCfg = Debug|x64 {3137FDBF-AE30-4A9D-B334-C12524540401}.Debug|Any CPU.Build.0 = Debug|x64 {3137FDBF-AE30-4A9D-B334-C12524540401}.Debug|x64.ActiveCfg = Debug|x64 {3137FDBF-AE30-4A9D-B334-C12524540401}.Debug|x64.Build.0 = Debug|x64 {3137FDBF-AE30-4A9D-B334-C12524540401}.Release|Any CPU.ActiveCfg = Release|x64 {3137FDBF-AE30-4A9D-B334-C12524540401}.Release|Any CPU.Build.0 = Release|x64 {3137FDBF-AE30-4A9D-B334-C12524540401}.Release|x64.ActiveCfg = Release|x64 {3137FDBF-AE30-4A9D-B334-C12524540401}.Release|x64.Build.0 = Release|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Debug|Any CPU.ActiveCfg = Debug|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Debug|Any CPU.Build.0 = Debug|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Debug|x64.ActiveCfg = Debug|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Debug|x64.Build.0 = Debug|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Release|Any CPU.ActiveCfg = Release|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Release|Any CPU.Build.0 = Release|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Release|x64.ActiveCfg = Release|x64 {EFA55E3C-6A2C-4529-A207-93B8EC5F08D0}.Release|x64.Build.0 = Release|x64 {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Debug|Any CPU.Build.0 = Debug|Any CPU {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Debug|x64.ActiveCfg = Debug|Any CPU {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Debug|x64.Build.0 = Debug|Any CPU {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Release|Any CPU.ActiveCfg = Release|Any CPU {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Release|Any CPU.Build.0 = Release|Any CPU {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Release|x64.ActiveCfg = Release|Any CPU {41EC55F6-39BE-45E9-A39C-932108DDB4F9}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8B52EA45-FFF0-41E2-86EB-E451868B9A5F} EndGlobalSection EndGlobal