diff --git a/64Inject.csproj b/64Inject.csproj new file mode 100644 index 0000000..1e77c90 --- /dev/null +++ b/64Inject.csproj @@ -0,0 +1,268 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{7980ACD9-F023-4721-BE4F-5C71343711D6}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>_64Inject</RootNamespace> + <AssemblyName>64Inject</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <ApplicationIcon>icon.ico</ApplicationIcon> + <IsWebBootstrapper>false</IsWebBootstrapper> + <FileUpgradeFlags> + </FileUpgradeFlags> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <OldToolsVersion>3.5</OldToolsVersion> + <TargetFrameworkProfile /> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x86\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\x86\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Beta|AnyCPU'"> + <OutputPath>bin\Beta\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Beta|x86'"> + <OutputPath>bin\x86\Beta\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Beta|x64'"> + <OutputPath>bin\x64\Beta\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Minor release|AnyCPU'"> + <OutputPath>bin\Minor release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Minor release|x86'"> + <OutputPath>bin\x86\Minor release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Minor release|x64'"> + <OutputPath>bin\x64\Minor release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Revision release|AnyCPU'"> + <OutputPath>bin\Revision release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Revision release|x86'"> + <OutputPath>bin\x86\Revision release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Revision release|x64'"> + <OutputPath>bin\x64\Revision release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="64InjectCMD.cs" /> + <Compile Include="64InjectGUI.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="64InjectGUI.Designer.cs"> + <DependentUpon>64InjectGUI.cs</DependentUpon> + </Compile> + <Compile Include="64Injector.cs" /> + <Compile Include="BootImage.cs" /> + <Compile Include="IconImage.cs" /> + <Compile Include="Log.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <Compile Include="RomN64.cs" /> + <Compile Include="NusContent.cs" /> + <Compile Include="Security.cs" /> + <Compile Include="Useful.cs" /> + <Compile Include="VCN64.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="64InjectGUI.resx"> + <DependentUpon>64InjectGUI.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <None Include="app.config" /> + <None Include="Resources\x-mark-16.png" /> + </ItemGroup> + <ItemGroup> + <None Include="Resources\checkmark-16.png" /> + </ItemGroup> + <ItemGroup> + <Content Include="icon.ico" /> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 2.0 %28x86%29</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.0 %28x86%29</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>false</Install> + </BootstrapperPackage> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> + <PropertyGroup> + <PreBuildEvent>"C:\Users\Alberto\source\repos\64Inject\64Inject\CllAssemblyVersion.exe" assemblyInfo "$(ProjectDir)Properties\AssemblyInfo.cs" projectPath "$(ProjectPath)" config "$(ConfigurationName)" platform "$(PlatformName)" title "$(SolutionName)" format "major.minor.build.revision" replaceIn "$(ProjectDir)64Injector.cs"</PreBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/64Inject.csproj.user b/64Inject.csproj.user new file mode 100644 index 0000000..beee08b --- /dev/null +++ b/64Inject.csproj.user @@ -0,0 +1,16 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0"> + <PropertyGroup> + <PublishUrlHistory>publish\</PublishUrlHistory> + <InstallUrlHistory> + </InstallUrlHistory> + <SupportUrlHistory> + </SupportUrlHistory> + <UpdateUrlHistory> + </UpdateUrlHistory> + <BootstrapperUrlHistory> + </BootstrapperUrlHistory> + <FallbackCulture>es-ES</FallbackCulture> + <VerifyUploadedFiles>false</VerifyUploadedFiles> + <ErrorReportUrlHistory /> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/64InjectCMD.cs b/64InjectCMD.cs new file mode 100644 index 0000000..4b3e7e5 --- /dev/null +++ b/64InjectCMD.cs @@ -0,0 +1,1089 @@ +using System; +using System.IO; + +namespace _64Inject +{ + public class _64InjectCMD + { + private _64Injector injector; + + public _64InjectCMD() + { + Cll.Log.SaveIn("64Inject_log.txt"); + Cll.Log.WriteLine(DateTime.UtcNow.ToString()); + Cll.Log.WriteLine("64Inject open in CMD mode."); + + injector = new _64Injector(); + } + + public void Run(string[] args) + { + Cll.Log.WriteLine("64Inject " + _64Injector.Release + " - by phacox.cll"); + Cll.Log.WriteLine(""); + + if (NusContent.GetJavaVersion() == null) + { + Cll.Log.WriteLine("Warning! Apparently the system does not have Java installed!"); + Cll.Log.WriteLine("Java is needed to NUSPacker (encrypt) and JNUSTool (decrypt)."); + Cll.Log.WriteLine(""); + } + else + { + if (!File.Exists("resources\\nuspacker\\NUSPacker.jar")) + { + Cll.Log.WriteLine("Warning! \"resources\\nuspacker\\NUSPacker.jar\" not found!"); + Cll.Log.WriteLine("NUSPacker allows you to encrypt the result for WUPInstaller."); + Cll.Log.WriteLine(""); + } + if (!File.Exists("resources\\jnustool\\JNUSTool.jar")) + { + Cll.Log.WriteLine("Warning! \"resources\\jnustool\\JNUSTool.jar\" not found!"); + Cll.Log.WriteLine("JNUSTool allows you to decrypt Wii U VC games to use as a base."); + Cll.Log.WriteLine(""); + } + } + + if (NusContent.CheckCommonKeyFiles()) + Cll.Log.WriteLine("Common Key found successfully."); + else + Cll.Log.WriteLine("Common Key not found. Use load-key option."); + + if (injector.BaseIsLoaded) + Cll.Log.WriteLine("Base loaded: " + injector.LoadedBase); + else + Cll.Log.WriteLine("Base not found. Use load-base option or specify one using the -base option."); + Cll.Log.WriteLine(""); + + if (args.Length == 0) + { + ConsoleHelp(); + } + else if (args.Length == 1 && args[0] == "help") + { + ConsoleHelp(); + } + else if (args.Length == 2 && args[0] == "load-key") + { + Cll.Log.WriteLine("load-key: " + args[1]); + + if (NusContent.LoadKey(args[1])) + Cll.Log.WriteLine("Common Key loaded successfully."); + else + Cll.Log.WriteLine("The load of the key failed. Is a valid Common Key?"); + } + else if (args.Length == 2 && args[0] == "load-base") + { + Cll.Log.WriteLine("load-base: " + args[1]); + Cll.Log.WriteLine("Loading base, please wait..."); + + if (injector.LoadBase(args[1])) + Cll.Log.WriteLine("Base loaded: " + injector.LoadedBase); + else + Cll.Log.WriteLine("The base was not loaded correctly."); + } + else if (args.Length >= 1 && args[0] == "create-image") + { + if (CreateImage(args)) + Cll.Log.WriteLine("Image created."); + else + Cll.Log.WriteLine("Image not created."); + } + else if (args.Length >= 1 && args[0] == "create-icon") + { + if (CreateIcon(args)) + Cll.Log.WriteLine("Icon created."); + else + Cll.Log.WriteLine("Icon not created."); + } + else if ((args.Length == 3 || args.Length == 5) && + (args[0] == "pack" || args[0] == "unpack")) + { + PackUnpack(args); + } + else + { + bool _continue = LoadArgs(args); + + if (_continue) + _continue = ValidArgs(); + + if (_continue) + Inject(); + } + Cll.Log.WriteLine("Close."); + Cll.Log.WriteLine("----------------------------------------------------------------"); + } + + private void ConsoleHelp() + { + Cll.Log.WriteText(global::_64Inject.Properties.Resources.Help, 80, 0, Cll.Log.TabMode.All); + } + + private bool CreateImage(string[] args) + { + BootImage bootImg = new BootImage(); + string framePath = null; + string titlePath = null; + string released = null; + string players = null; + string outPath = null; + + for (int i = 0; i < args.Length; i++) + { + switch (args[i]) + { + case "create-image": + break; + case "-frame": + if (i + 1 < args.Length && framePath == null) + { + framePath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-frame\" option."); + return false; + } + case "-title": + if (i + 1 < args.Length && titlePath == null) + { + titlePath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-title\" option."); + return false; + } + case "-name": + if (i + 1 < args.Length && bootImg.NameLine1 == null) + { + bootImg.NameLine1 = args[++i]; + bootImg.NameLine2 = ""; + bootImg.Longname = false; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-name\" option."); + return false; + } + case "-longname": + if (i + 2 < args.Length && bootImg.NameLine1 == null) + { + bootImg.NameLine1 = args[++i]; + bootImg.NameLine2 = args[++i]; + bootImg.Longname = true; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-longname\" option."); + return false; + } + case "-r": + if (i + 1 < args.Length && released == null) + { + released = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-r\" option."); + return false; + } + case "-p": + if (i + 1 < args.Length && players == null) + { + players = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-p\" option."); + return false; + } + case "-out": + if (i + 1 < args.Length && outPath == null) + { + outPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-out\" option."); + return false; + } + default: + Cll.Log.WriteLine("Invalid option \"" + args[i] + "\"."); + return false; + } + } + + if (framePath != null && !File.Exists(framePath)) + { + Cll.Log.WriteLine("The frame image \"" + framePath + "\" not exists."); + return false; + } + if (titlePath != null && !File.Exists(titlePath)) + { + Cll.Log.WriteLine("The title screen \"" + titlePath + "\" not exists."); + return false; + } + if (released != null) + { + try + { + bootImg.Released = Convert.ToInt32(released); + if (bootImg.Released < 1996) + { + Cll.Log.WriteLine("The year of release is less than 1996."); + return false; + } + } + catch + { + Cll.Log.WriteLine("The year of release is not an integer."); + return false; + } + } + if (players != null) + { + try + { + bootImg.Players = Convert.ToInt32(players); + if (bootImg.Players < 1 || bootImg.Players > 4) + { + Cll.Log.WriteLine("The number of players must be between 1 and 4."); + return false; + } + } + catch + { + Cll.Log.WriteLine("The number of players is not an integer."); + return false; + } + } + if (outPath != null) + { + if (!Directory.Exists(outPath)) + { + Cll.Log.WriteLine("The \"" + outPath + "\" folder not exist."); + return false; + } + } + else + outPath = Environment.CurrentDirectory; + + outPath += "\\image.png"; + Cll.Log.WriteLine("Creating image ----------------------------------------------------------------"); + if (titlePath != null) Cll.Log.WriteLine("title: " + titlePath); + if (framePath != null) Cll.Log.WriteLine("frame: " + framePath); + if (bootImg.NameLine1 != "") + { + if (bootImg.NameLine2 == "") Cll.Log.WriteLine("name: " + bootImg.NameLine1); + else Cll.Log.WriteLine("longname:\n" + bootImg.NameLine1 + "\n" + bootImg.NameLine2); + } + if (released != null) Cll.Log.WriteLine("released: " + released); + if (players != null) Cll.Log.WriteLine("players: " + players); + if (outPath != null) Cll.Log.WriteLine("out: " + outPath); + + System.Drawing.Bitmap image = null; + try + { + if (framePath != null) + bootImg.Frame = new System.Drawing.Bitmap(framePath); + if (titlePath != null) + bootImg.TitleScreen = new System.Drawing.Bitmap(titlePath); + image = bootImg.Create(); + image.Save(outPath, System.Drawing.Imaging.ImageFormat.Png); + image.Dispose(); + return true; + } + catch + { + return false; + } + finally + { + bootImg.Dispose(); + if (image != null) + image.Dispose(); + } + } + + private bool CreateIcon(string[] args) + { + IconImage iconImg = new IconImage(); + string framePath = null; + string titlePath = null; + string outPath = null; + + for (int i = 0; i < args.Length; i++) + { + switch (args[i]) + { + case "create-icon": + break; + case "-frame": + if (i + 1 < args.Length && framePath == null) + { + framePath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-frame\" option."); + return false; + } + case "-title": + if (i + 1 < args.Length && titlePath == null) + { + titlePath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-title\" option."); + return false; + } + case "-out": + if (i + 1 < args.Length && outPath == null) + { + outPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-out\" option."); + return false; + } + default: + Cll.Log.WriteLine("Invalid option \"" + args[i] + "\"."); + return false; + } + } + + if (framePath != null && !File.Exists(framePath)) + { + Cll.Log.WriteLine("The frame image \"" + framePath + "\" not exists."); + return false; + } + if (titlePath != null && !File.Exists(titlePath)) + { + Cll.Log.WriteLine("The title screen \"" + titlePath + "\" not exists."); + return false; + } + if (outPath != null) + { + if (!Directory.Exists(outPath)) + { + Cll.Log.WriteLine("The \"" + outPath + "\" folder not exist."); + return false; + } + } + else + outPath = Environment.CurrentDirectory; + + outPath += "\\icon.png"; + Cll.Log.WriteLine("Creating icon -----------------------------------------------------------------"); + if (titlePath != null) Cll.Log.WriteLine("title: " + titlePath); + if (framePath != null) Cll.Log.WriteLine("frame: " + framePath); + if (outPath != null) Cll.Log.WriteLine("out: " + outPath); + + System.Drawing.Bitmap icon = null; + try + { + if (framePath != null) + iconImg.Frame = new System.Drawing.Bitmap(framePath); + if (titlePath != null) + iconImg.TitleScreen = new System.Drawing.Bitmap(titlePath); + icon = iconImg.Create(); + icon.Save(outPath, System.Drawing.Imaging.ImageFormat.Png); + icon.Dispose(); + return true; + } + catch + { + return false; + } + finally + { + iconImg.Dispose(); + if (icon != null) + icon.Dispose(); + } + } + + private void PackUnpack(string[] args) + { + bool _continue = true; + if (args.Length == 3 && args[1] == "-in") + { + injector.InPath = args[2]; + injector.OutPath = Environment.CurrentDirectory + "\\" + args[0] + "_result"; + + if (Directory.Exists(injector.OutPath)) + Directory.Delete(injector.OutPath, true); + Directory.CreateDirectory(injector.OutPath); + } + else if (args.Length == 5 && args[1] == "-in" && args[3] == "-out") + { + injector.InPath = args[2]; + injector.OutPath = args[4]; + } + else + { + Cll.Log.WriteLine("Incorrect " + args[0] + " syntax."); + Cll.Log.WriteLine(""); + _continue = false; + } + + if (_continue) + { + if (!Directory.Exists(injector.InPath) || !Path.IsPathRooted(injector.InPath)) + { + Cll.Log.WriteLine("The input folder \"" + injector.InPath + "\" not exist."); + Cll.Log.WriteLine("Do not use relative paths."); + Cll.Log.WriteLine(""); + _continue = false; + } + if (!Directory.Exists(injector.OutPath) || !Path.IsPathRooted(injector.OutPath)) + { + Cll.Log.WriteLine("The output folder \"" + injector.OutPath + "\" not exist."); + Cll.Log.WriteLine("Do not use relative paths."); + Cll.Log.WriteLine(""); + _continue = false; + } + } + + if (_continue && Directory.Exists(injector.OutPath)) + if (Directory.GetDirectories(injector.OutPath).Length != 0 || + Directory.GetFiles(injector.OutPath).Length != 0) + { + Cll.Log.WriteLine("The \"" + injector.OutPath + "\" folder exist and not empty."); + Cll.Log.WriteLine(""); + _continue = false; + } + + if (_continue) + { + Cll.Log.WriteLine("in: " + injector.InPath); + Cll.Log.WriteLine("out: " + injector.OutPath); + Cll.Log.WriteLine(""); + + if (args[0] == "pack") + { + if (NusContent.Encrypt(injector.InPath, injector.OutPath)) + Cll.Log.WriteLine("The encryption was successful."); + else + Cll.Log.WriteLine("The encryption failed."); + } + else if (args[0] == "unpack") + { + if (NusContent.Decrypt(injector.InPath, injector.OutPath)) + Cll.Log.WriteLine("The decryption was successful."); + else + Cll.Log.WriteLine("The decryption failed."); + } + } + else if (args[0] == "pack") + Cll.Log.WriteLine("The encryption failed."); + else + Cll.Log.WriteLine("The decryption failed."); + } + + private bool Inject() + { + Cll.Log.WriteLine("Injecting - - - - - - - - - - - - - - - - - - - - - - - - - - - "); + if (injector.BasePath != null) Cll.Log.WriteLine("base: " + injector.BasePath); + if (injector.ShortName != null) Cll.Log.WriteLine("name: " + injector.ShortName); + if (injector.LongName != null) Cll.Log.WriteLine("longname:\n" + injector.LongName); + if (injector.InPath != null) Cll.Log.WriteLine("in: " + injector.InPath); + if (injector.RomPath != null) Cll.Log.WriteLine("rom: " + injector.RomPath); + if (injector.IniPath != null) Cll.Log.WriteLine("ini: " + injector.IniPath); + if (injector.BootTvPath != null) Cll.Log.WriteLine("tv: " + injector.BootTvPath); + if (injector.BootDrcPath != null) Cll.Log.WriteLine("drc: " + injector.BootDrcPath); + if (injector.IconPath != null) Cll.Log.WriteLine("icon: " + injector.IconPath); + if (injector.OutPath != null) Cll.Log.WriteLine("out: " + injector.OutPath); + Cll.Log.WriteLine("encrypt: " + injector.Encrypt.ToString()); + Cll.Log.WriteLine("Please wait..."); + + return injector.Inject(); + } + + private bool LoadArgs(string[] args) + { + for (int i = 0; i < args.Length; i++) + { + switch (args[i]) + { + case "-base": + if (i + 1 < args.Length && injector.BasePath == null) + { + injector.BasePath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-base\" option."); + return false; + } + case "-name": + if (i + 1 < args.Length && injector.ShortName == null) + { + injector.ShortName = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-name\" option."); + return false; + } + case "-longname": + if (i + 2 < args.Length && injector.LongName == null) + { + injector.LongName = args[++i] + "\n" + args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-longname\" option."); + return false; + } + case "no-darkfilter": + injector.DarkFilter = false; + break; + case "widescreen": + injector.Widescreen = true; + break; + case "-zoom": + if (i + 1 < args.Length && injector.Zoom == null) + { + injector.Zoom = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-zoom\" option."); + return false; + } + case "-in": + if (i + 1 < args.Length && injector.InPath == null) + { + injector.InPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-in\" option."); + return false; + } + case "-rom": + if (i + 1 < args.Length && injector.RomPath == null) + { + injector.RomPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-rom\" option."); + return false; + } + case "-ini": + if (i + 1 < args.Length && injector.IniPath == null) + { + injector.IniPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-ini\" option."); + return false; + } + case "-icon": + if (i + 1 < args.Length && injector.IconPath == null) + { + injector.IconPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-icon\" option."); + return false; + } + case "-tv": + if (i + 1 < args.Length && injector.BootTvPath == null) + { + injector.BootTvPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-tv\" option."); + return false; + } + case "-drc": + if (i + 1 < args.Length && injector.BootDrcPath == null) + { + injector.BootDrcPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-drc\" option."); + return false; + } + case "-out": + if (i + 1 < args.Length && injector.OutPath == null) + { + injector.OutPath = args[++i]; + break; + } + else + { + Cll.Log.WriteLine("Error in the \"-out\" option."); + return false; + } + case "not-encrypt": + injector.Encrypt = false; + break; + default: + Cll.Log.WriteLine("Invalid option \"" + args[i] + "\"."); + return false; + } + } + return true; + } + + #region Validations + + private bool ValidArgs() + { + if (!ValidBasePath()) + return false; + + if (!ValidInPath()) + return false; + + if (!ValidRomPath()) + return false; + + if (!ValidIniPath()) + return false; + + if (!ValidShortName()) + return false; + + if (!ValidLongName()) + return false; + + if (!ValidZoom()) + return false; + + if (!ValidBootTvPath()) + return false; + + if (!ValidBootDrcPath()) + return false; + + if (!ValidIconPath()) + return false; + + if (!ValidOutPath()) + return false; + + return true; + } + + private bool ValidBasePath() + { + if (injector.BasePath != null) + { + Cll.Log.WriteLine("Loading base, please wait..."); + + if (injector.LoadBase(injector.BasePath)) + { + Cll.Log.WriteLine("Base loaded: " + injector.LoadedBase); + Cll.Log.WriteLine(""); + } + else + { + Cll.Log.WriteLine("The base was not loaded correctly."); + Cll.Log.WriteLine(""); + return false; + } + } + else if (!injector.BaseIsLoaded) + { + Cll.Log.WriteLine("There is not a loaded base."); + Cll.Log.WriteLine(""); + return false; + } + return true; + } + + private bool ValidShortName() + { + if (injector.ShortName != null) + { + if (injector.ShortName.Length == 0) + { + Cll.Log.WriteLine("The name of the game is empty."); + return false; + } + else if (injector.ShortName.Length > 256) + { + Cll.Log.WriteLine("The name is not valid, it has more than 256 characters."); + return false; + } + } + else + { + injector.ShortName = injector.Rom.Title; + } + return true; + } + + private bool ValidLongName() + { + if (injector.LongName != null) + { + if (injector.ShortName.Length == 0) + { + Cll.Log.WriteLine("The long name of the game is empty."); + return false; + } + else if (injector.LongName.Length > 512) + { + Cll.Log.WriteLine("The long name is not valid, it has more than 512 characters."); + return false; + } + } + else + { + injector.LongName = injector.ShortName; + } + return true; + } + + private bool ValidZoom() + { + if (injector.Zoom != null) + { + try + { + injector.Scale = Convert.ToSingle(injector.Zoom); + if (injector.Scale < 50.0F || injector.Scale > 200.0F) + { + Cll.Log.WriteLine("The zoom value must be between 50 and 200."); + return false; + } + } + catch + { + Cll.Log.WriteLine("The zoom value is not a number."); + return false; + } + + if (injector.ShortName.Length == 0) + { + Cll.Log.WriteLine("The name of the game is empty."); + return false; + } + else if (injector.ShortName.Length > 256) + { + Cll.Log.WriteLine("The name is not valid, it has more than 256 characters."); + return false; + } + } + else + { + injector.Scale = 100.0F; + } + return true; + } + + private bool ValidInPath() + { + if (injector.InPath != null) + { + if (!Directory.Exists(injector.InPath)) + { + Cll.Log.WriteLine("The input folder \"" + injector.InPath + "\" not exists."); + return false; + } + } + else + Cll.Log.WriteLine("The input folder was not specified."); + return true; + } + + private bool ValidRomPath() + { + if (injector.RomPath != null) + { + if (File.Exists(injector.RomPath)) + { + injector.Rom = new RomN64(injector.RomPath); + if (!injector.Rom.IsValid) + { + Cll.Log.WriteLine("The ROM file is not valid."); + return false; + } + } + else + { + Cll.Log.WriteLine("The ROM file \"" + injector.RomPath + "\" not exists."); + return false; + } + } + else + { + if (injector.InPath != null) + { + injector.RomPath = injector.InPath + "\\rom.z64"; + if (File.Exists(injector.RomPath)) + { + injector.Rom = new RomN64(injector.RomPath); + if (!injector.Rom.IsValid) + { + Cll.Log.WriteLine("The ROM file is not valid."); + return false; + } + } + else + { + Cll.Log.WriteLine("The ROM file \"" + injector.RomPath + "\" not exists."); + return false; + } + } + else + { + //Cll.Log.WriteLine("The input folder was not specified."); + Cll.Log.WriteLine("ROM not found."); + return false; + } + } + return true; + } + + private bool ValidIniPath() + { + if (injector.IniPath != null) + { + if (File.Exists(injector.IniPath)) + { + if (!injector.LoadIni(injector.IniPath)) + { + Cll.Log.WriteLine("The INI file is not valid."); + return false; + } + } + else + { + Cll.Log.WriteLine("The INI file \"" + injector.IniPath + "\" not exists."); + return false; + } + } + else + { + if (injector.InPath != null) + { + injector.IniPath = injector.InPath + "\\vc.ini"; + if (File.Exists(injector.IniPath)) + { + if (!injector.LoadIni(injector.IniPath)) + { + Cll.Log.WriteLine("The INI file is not valid."); + return false; + } + } + else + { + injector.IniPath = null; + Cll.Log.WriteLine("The INI file \"" + injector.IniPath + "\" not exists."); + Cll.Log.WriteLine("An empty INI file will be used."); + } + } + else + { + //Cll.Log.WriteLine("The input folder was not specified."); + Cll.Log.WriteLine("An empty INI file will be used."); + } + } + return true; + } + + private bool ValidBootTvPath() + { + if (injector.BootTvPath != null) + { + if (!File.Exists(injector.BootTvPath)) + { + Cll.Log.WriteLine("The boot tv image file \"" + injector.BootTvPath + "\" not exists."); + return false; + } + else + injector.BootTvImg.IsDefault = false; + } + else + { + if (injector.InPath != null) + { + injector.BootTvPath = injector.InPath + "\\tv.png"; + if (!File.Exists(injector.BootTvPath)) + { + Cll.Log.WriteLine("The boot tv image file \"" + injector.BootTvPath + "\" not exists."); + if (File.Exists("resources\\boot.png")) + injector.BootTvPath = "resources\\boot.png"; + else + injector.BootTvPath = null; + Cll.Log.WriteLine("A default image will be used as boot tv."); + } + else + injector.BootTvImg.IsDefault = false; + } + else + { + //Cll.Log.WriteLine("The input folder was not specified."); + if (File.Exists("resources\\boot.png")) + injector.BootTvPath = "resources\\boot.png"; + else + injector.BootTvPath = null; + Cll.Log.WriteLine("A default image will be used as boot tv."); + } + } + return true; + } + + private bool ValidBootDrcPath() + { + if (injector.BootDrcPath != null) + { + if (!File.Exists(injector.BootDrcPath)) + { + Cll.Log.WriteLine("The boot drc image file \"" + injector.BootDrcPath + "\" not exists."); + return false; + } + else + injector.BootDrcImg.IsDefault = false; + } + else + { + if (injector.InPath != null) + { + injector.BootDrcPath = injector.InPath + "\\drc.png"; + if (!File.Exists(injector.BootDrcPath)) + { + Cll.Log.WriteLine("The boot drc image file \"" + injector.BootDrcPath + "\" not exists."); + injector.BootDrcPath = injector.BootTvPath; + if (!File.Exists(injector.BootDrcPath)) + { + if (File.Exists("resources\\boot.png")) + injector.BootDrcPath = "resources\\boot.png"; + else + injector.BootDrcPath = null; + Cll.Log.WriteLine("A default image will be used as boot drc."); + } + else + Cll.Log.WriteLine("The boot tv image will be used as boot drc."); + } + else + injector.BootDrcImg.IsDefault = false; + } + else + { + //Cll.Log.WriteLine("The input folder was not specified."); + injector.BootDrcPath = injector.BootTvPath; + if (!File.Exists(injector.BootDrcPath)) + { + if (File.Exists("resources\\boot.png")) + injector.BootDrcPath = "resources\\boot.png"; + else + injector.BootDrcPath = null; + Cll.Log.WriteLine("A default image will be used as boot drc."); + } + else + Cll.Log.WriteLine("The boot tv image will be used as boot drc."); + } + } + return true; + } + + private bool ValidIconPath() + { + if (injector.IconPath != null) + { + if (!File.Exists(injector.IconPath)) + { + Cll.Log.WriteLine("The icon file \"" + injector.IconPath + "\" not exists."); + return false; + } + else + injector.IconImg.IsDefault = false; + } + else + { + if (injector.InPath != null) + { + injector.IconPath = injector.InPath + "\\icon.png"; + if (!File.Exists(injector.IconPath)) + { + Cll.Log.WriteLine("The icon file \"" + injector.IconPath + "\" not exists."); + if (File.Exists("resources\\icon.png")) + injector.IconPath = "resources\\icon.png"; + else + injector.IconPath = null; + Cll.Log.WriteLine("A default image will be used as icon."); + } + else + injector.IconImg.IsDefault = false; + } + else + { + //Cll.Log.WriteLine("The input folder was not specified."); + if (File.Exists("resources\\icon.png")) + injector.IconPath = "resources\\icon.png"; + else + injector.IconPath = null; + Cll.Log.WriteLine("A default image will be used as icon."); + } + } + return true; + } + + private bool ValidOutPath() + { + if (injector.OutPath != null) + { + if (!Directory.Exists(injector.OutPath)) + { + Cll.Log.WriteLine("The \"" + injector.OutPath + "\" folder not exist."); + return false; + } + } + else + { + Cll.Log.WriteLine("The output folder was not specified."); + injector.OutPath = Environment.CurrentDirectory; + Cll.Log.WriteLine("The root folder of 64Inject will be used as the output folder."); + } + + injector.OutPath += "\\" + injector.ShortNameASCII + " [" + injector.TitleId + "]"; + + if (Directory.Exists(injector.OutPath)) + if (Directory.GetDirectories(injector.OutPath).Length != 0 || + Directory.GetFiles(injector.OutPath).Length != 0) + { + Cll.Log.WriteLine("The \"" + injector.OutPath + "\" folder exist and not empty."); + return false; + } + + return true; + } + + #endregion + } +} diff --git a/64InjectGUI.Designer.cs b/64InjectGUI.Designer.cs new file mode 100644 index 0000000..e99a227 --- /dev/null +++ b/64InjectGUI.Designer.cs @@ -0,0 +1,840 @@ +namespace _64Inject +{ + partial class _64InjectGUI + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(_64InjectGUI)); + this.buttonRom = new System.Windows.Forms.Button(); + this.buttonIni = new System.Windows.Forms.Button(); + this.textBoxShortName = new System.Windows.Forms.TextBox(); + this.labelRom = new System.Windows.Forms.Label(); + this.labelIni = new System.Windows.Forms.Label(); + this.labeShortName = new System.Windows.Forms.Label(); + this.labelProductCode = new System.Windows.Forms.Label(); + this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.textBoxRom = new System.Windows.Forms.TextBox(); + this.textBoxIni = new System.Windows.Forms.TextBox(); + this.buttonInject = new System.Windows.Forms.Button(); + this.groupBoxImages = new System.Windows.Forms.GroupBox(); + this.buttonTitleScreen = new System.Windows.Forms.Button(); + this.comboBoxPlayers = new System.Windows.Forms.ComboBox(); + this.comboBoxReleased = new System.Windows.Forms.ComboBox(); + this.labelPlayers = new System.Windows.Forms.Label(); + this.labelReleased = new System.Windows.Forms.Label(); + this.checkBoxShowName = new System.Windows.Forms.CheckBox(); + this.buttonBootDrc = new System.Windows.Forms.Button(); + this.pictureBoxBootDrc = new System.Windows.Forms.PictureBox(); + this.pictureBoxIcon = new System.Windows.Forms.PictureBox(); + this.buttonIcon = new System.Windows.Forms.Button(); + this.buttonBootTv = new System.Windows.Forms.Button(); + this.pictureBoxBootTv = new System.Windows.Forms.PictureBox(); + this.tabControlMain = new System.Windows.Forms.TabControl(); + this.tabPageMain = new System.Windows.Forms.TabPage(); + this.groupBoxGameLayout = new System.Windows.Forms.GroupBox(); + this.checkBoxDarkFilter = new System.Windows.Forms.CheckBox(); + this.numericUpDownZoom = new System.Windows.Forms.NumericUpDown(); + this.checkBoxWidescreen = new System.Windows.Forms.CheckBox(); + this.labelZoom = new System.Windows.Forms.Label(); + this.checkBoxPackUpResult = new System.Windows.Forms.CheckBox(); + this.labelTitleId = new System.Windows.Forms.Label(); + this.textBoxLNLine2 = new System.Windows.Forms.TextBox(); + this.textBoxLNLine1 = new System.Windows.Forms.TextBox(); + this.checkBoxLongName = new System.Windows.Forms.CheckBox(); + this.tabPageConfig = new System.Windows.Forms.TabPage(); + this.labelBy = new System.Windows.Forms.Label(); + this.labelBaseFrom = new System.Windows.Forms.Label(); + this.panelLoadedBase = new System.Windows.Forms.Panel(); + this.labelLoadedBase = new System.Windows.Forms.Label(); + this.panelValidKey = new System.Windows.Forms.Panel(); + this.checkBoxImagesDir = new System.Windows.Forms.CheckBox(); + this.buttonImagesDir = new System.Windows.Forms.Button(); + this.textBoxImagesDir = new System.Windows.Forms.TextBox(); + this.labelCommonKey = new System.Windows.Forms.Label(); + this.textBoxCommonKey = new System.Windows.Forms.TextBox(); + this.buttonBaseFrom = new System.Windows.Forms.Button(); + this.buttonIniDir = new System.Windows.Forms.Button(); + this.buttonRomDir = new System.Windows.Forms.Button(); + this.textBoxBaseFrom = new System.Windows.Forms.TextBox(); + this.textBoxIniDir = new System.Windows.Forms.TextBox(); + this.textBoxRomDir = new System.Windows.Forms.TextBox(); + this.checkBoxAskBase = new System.Windows.Forms.CheckBox(); + this.checkBoxIniDir = new System.Windows.Forms.CheckBox(); + this.checkBoxRomDir = new System.Windows.Forms.CheckBox(); + this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); + this.groupBoxImages.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBootDrc)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBootTv)).BeginInit(); + this.tabControlMain.SuspendLayout(); + this.tabPageMain.SuspendLayout(); + this.groupBoxGameLayout.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownZoom)).BeginInit(); + this.tabPageConfig.SuspendLayout(); + this.SuspendLayout(); + // + // buttonRom + // + this.buttonRom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonRom.Location = new System.Drawing.Point(644, 4); + this.buttonRom.Name = "buttonRom"; + this.buttonRom.Size = new System.Drawing.Size(24, 23); + this.buttonRom.TabIndex = 0; + this.buttonRom.Text = "..."; + this.buttonRom.UseVisualStyleBackColor = true; + this.buttonRom.Click += new System.EventHandler(this.buttonRom_Click); + // + // buttonIni + // + this.buttonIni.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonIni.Location = new System.Drawing.Point(644, 108); + this.buttonIni.Name = "buttonIni"; + this.buttonIni.Size = new System.Drawing.Size(24, 23); + this.buttonIni.TabIndex = 1; + this.buttonIni.Text = "..."; + this.buttonIni.UseVisualStyleBackColor = true; + this.buttonIni.Click += new System.EventHandler(this.buttonIni_Click); + // + // textBoxShortName + // + this.textBoxShortName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxShortName.Location = new System.Drawing.Point(81, 32); + this.textBoxShortName.MaxLength = 256; + this.textBoxShortName.Name = "textBoxShortName"; + this.textBoxShortName.Size = new System.Drawing.Size(587, 20); + this.textBoxShortName.TabIndex = 2; + this.textBoxShortName.TextChanged += new System.EventHandler(this.textBoxShortName_TextChanged); + // + // labelRom + // + this.labelRom.AutoSize = true; + this.labelRom.Location = new System.Drawing.Point(8, 9); + this.labelRom.Name = "labelRom"; + this.labelRom.Size = new System.Drawing.Size(59, 13); + this.labelRom.TabIndex = 4; + this.labelRom.Text = "ROM path:"; + // + // labelIni + // + this.labelIni.AutoSize = true; + this.labelIni.Location = new System.Drawing.Point(8, 113); + this.labelIni.Name = "labelIni"; + this.labelIni.Size = new System.Drawing.Size(48, 13); + this.labelIni.TabIndex = 5; + this.labelIni.Text = "INI path:"; + // + // labeShortName + // + this.labeShortName.AutoSize = true; + this.labeShortName.Location = new System.Drawing.Point(8, 35); + this.labeShortName.Name = "labeShortName"; + this.labeShortName.Size = new System.Drawing.Size(64, 13); + this.labeShortName.TabIndex = 6; + this.labeShortName.Text = "Short name:"; + // + // labelProductCode + // + this.labelProductCode.AutoSize = true; + this.labelProductCode.Location = new System.Drawing.Point(330, 156); + this.labelProductCode.Name = "labelProductCode"; + this.labelProductCode.Size = new System.Drawing.Size(74, 13); + this.labelProductCode.TabIndex = 7; + this.labelProductCode.Text = "Product code:"; + // + // textBoxRom + // + this.textBoxRom.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxRom.Location = new System.Drawing.Point(81, 6); + this.textBoxRom.Name = "textBoxRom"; + this.textBoxRom.Size = new System.Drawing.Size(557, 20); + this.textBoxRom.TabIndex = 8; + // + // textBoxIni + // + this.textBoxIni.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxIni.Location = new System.Drawing.Point(81, 110); + this.textBoxIni.Name = "textBoxIni"; + this.textBoxIni.Size = new System.Drawing.Size(557, 20); + this.textBoxIni.TabIndex = 9; + // + // buttonInject + // + this.buttonInject.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.buttonInject.Enabled = false; + this.buttonInject.Location = new System.Drawing.Point(3, 480); + this.buttonInject.Name = "buttonInject"; + this.buttonInject.Size = new System.Drawing.Size(570, 40); + this.buttonInject.TabIndex = 10; + this.buttonInject.Text = "Inject"; + this.buttonInject.UseVisualStyleBackColor = true; + this.buttonInject.Click += new System.EventHandler(this.buttonInject_Click); + // + // groupBoxImages + // + this.groupBoxImages.Controls.Add(this.buttonTitleScreen); + this.groupBoxImages.Controls.Add(this.comboBoxPlayers); + this.groupBoxImages.Controls.Add(this.comboBoxReleased); + this.groupBoxImages.Controls.Add(this.labelPlayers); + this.groupBoxImages.Controls.Add(this.labelReleased); + this.groupBoxImages.Controls.Add(this.checkBoxShowName); + this.groupBoxImages.Controls.Add(this.buttonBootDrc); + this.groupBoxImages.Controls.Add(this.pictureBoxBootDrc); + this.groupBoxImages.Controls.Add(this.pictureBoxIcon); + this.groupBoxImages.Controls.Add(this.buttonIcon); + this.groupBoxImages.Controls.Add(this.buttonBootTv); + this.groupBoxImages.Controls.Add(this.pictureBoxBootTv); + this.groupBoxImages.Location = new System.Drawing.Point(8, 187); + this.groupBoxImages.Name = "groupBoxImages"; + this.groupBoxImages.Size = new System.Drawing.Size(660, 288); + this.groupBoxImages.TabIndex = 11; + this.groupBoxImages.TabStop = false; + this.groupBoxImages.Text = "Images"; + // + // buttonTitleScreen + // + this.buttonTitleScreen.Location = new System.Drawing.Point(327, 257); + this.buttonTitleScreen.Name = "buttonTitleScreen"; + this.buttonTitleScreen.Size = new System.Drawing.Size(94, 23); + this.buttonTitleScreen.TabIndex = 13; + this.buttonTitleScreen.Text = "Title screen"; + this.buttonTitleScreen.UseVisualStyleBackColor = true; + this.buttonTitleScreen.Click += new System.EventHandler(this.buttonTitleScreen_Click); + // + // comboBoxPlayers + // + this.comboBoxPlayers.FormattingEnabled = true; + this.comboBoxPlayers.Items.AddRange(new object[] { + "None", + "1", + "2", + "3", + "4"}); + this.comboBoxPlayers.Location = new System.Drawing.Point(168, 259); + this.comboBoxPlayers.Name = "comboBoxPlayers"; + this.comboBoxPlayers.Size = new System.Drawing.Size(50, 21); + this.comboBoxPlayers.TabIndex = 12; + this.comboBoxPlayers.Text = "None"; + this.comboBoxPlayers.SelectedIndexChanged += new System.EventHandler(this.comboBoxPlayers_SelectedIndexChanged); + // + // comboBoxReleased + // + this.comboBoxReleased.FormattingEnabled = true; + this.comboBoxReleased.Items.AddRange(new object[] { + "None", + "1996", + "1997", + "1998", + "1999", + "2000", + "2001", + "2002", + "2018"}); + this.comboBoxReleased.Location = new System.Drawing.Point(62, 259); + this.comboBoxReleased.Name = "comboBoxReleased"; + this.comboBoxReleased.Size = new System.Drawing.Size(50, 21); + this.comboBoxReleased.TabIndex = 11; + this.comboBoxReleased.Text = "None"; + this.comboBoxReleased.SelectedIndexChanged += new System.EventHandler(this.comboBoxReleased_SelectedIndexChanged); + // + // labelPlayers + // + this.labelPlayers.AutoSize = true; + this.labelPlayers.Location = new System.Drawing.Point(123, 262); + this.labelPlayers.Name = "labelPlayers"; + this.labelPlayers.Size = new System.Drawing.Size(44, 13); + this.labelPlayers.TabIndex = 10; + this.labelPlayers.Text = "Players:"; + // + // labelReleased + // + this.labelReleased.AutoSize = true; + this.labelReleased.Location = new System.Drawing.Point(6, 262); + this.labelReleased.Name = "labelReleased"; + this.labelReleased.Size = new System.Drawing.Size(55, 13); + this.labelReleased.TabIndex = 9; + this.labelReleased.Text = "Released:"; + // + // checkBoxShowName + // + this.checkBoxShowName.AutoSize = true; + this.checkBoxShowName.Checked = true; + this.checkBoxShowName.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBoxShowName.Location = new System.Drawing.Point(237, 261); + this.checkBoxShowName.Name = "checkBoxShowName"; + this.checkBoxShowName.Size = new System.Drawing.Size(82, 17); + this.checkBoxShowName.TabIndex = 8; + this.checkBoxShowName.Text = "Show name"; + this.checkBoxShowName.UseVisualStyleBackColor = true; + this.checkBoxShowName.CheckedChanged += new System.EventHandler(this.checkBoxShowName_CheckedChanged); + // + // buttonBootDrc + // + this.buttonBootDrc.Location = new System.Drawing.Point(426, 198); + this.buttonBootDrc.Name = "buttonBootDrc"; + this.buttonBootDrc.Size = new System.Drawing.Size(94, 38); + this.buttonBootDrc.TabIndex = 7; + this.buttonBootDrc.Text = "Boot Drc"; + this.buttonBootDrc.UseVisualStyleBackColor = true; + this.buttonBootDrc.Click += new System.EventHandler(this.buttonBootDrc_Click); + // + // pictureBoxBootDrc + // + this.pictureBoxBootDrc.BackColor = System.Drawing.SystemColors.Window; + this.pictureBoxBootDrc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBoxBootDrc.Location = new System.Drawing.Point(426, 19); + this.pictureBoxBootDrc.Name = "pictureBoxBootDrc"; + this.pictureBoxBootDrc.Size = new System.Drawing.Size(228, 128); + this.pictureBoxBootDrc.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBoxBootDrc.TabIndex = 6; + this.pictureBoxBootDrc.TabStop = false; + // + // pictureBoxIcon + // + this.pictureBoxIcon.BackColor = System.Drawing.SystemColors.Window; + this.pictureBoxIcon.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBoxIcon.Location = new System.Drawing.Point(526, 153); + this.pictureBoxIcon.Name = "pictureBoxIcon"; + this.pictureBoxIcon.Size = new System.Drawing.Size(128, 128); + this.pictureBoxIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBoxIcon.TabIndex = 5; + this.pictureBoxIcon.TabStop = false; + // + // buttonIcon + // + this.buttonIcon.Location = new System.Drawing.Point(426, 243); + this.buttonIcon.Name = "buttonIcon"; + this.buttonIcon.Size = new System.Drawing.Size(94, 38); + this.buttonIcon.TabIndex = 4; + this.buttonIcon.Text = "Icon"; + this.buttonIcon.UseVisualStyleBackColor = true; + this.buttonIcon.Click += new System.EventHandler(this.buttonIcon_Click); + // + // buttonBootTv + // + this.buttonBootTv.Location = new System.Drawing.Point(426, 153); + this.buttonBootTv.Name = "buttonBootTv"; + this.buttonBootTv.Size = new System.Drawing.Size(94, 38); + this.buttonBootTv.TabIndex = 3; + this.buttonBootTv.Text = "Boot Tv"; + this.buttonBootTv.UseVisualStyleBackColor = true; + this.buttonBootTv.Click += new System.EventHandler(this.buttonBootTv_Click); + // + // pictureBoxBootTv + // + this.pictureBoxBootTv.BackColor = System.Drawing.SystemColors.Window; + this.pictureBoxBootTv.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBoxBootTv.Location = new System.Drawing.Point(6, 19); + this.pictureBoxBootTv.Name = "pictureBoxBootTv"; + this.pictureBoxBootTv.Size = new System.Drawing.Size(414, 232); + this.pictureBoxBootTv.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBoxBootTv.TabIndex = 2; + this.pictureBoxBootTv.TabStop = false; + // + // tabControlMain + // + this.tabControlMain.Controls.Add(this.tabPageMain); + this.tabControlMain.Controls.Add(this.tabPageConfig); + this.tabControlMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControlMain.Location = new System.Drawing.Point(0, 0); + this.tabControlMain.Name = "tabControlMain"; + this.tabControlMain.SelectedIndex = 0; + this.tabControlMain.Size = new System.Drawing.Size(684, 549); + this.tabControlMain.TabIndex = 12; + // + // tabPageMain + // + this.tabPageMain.BackColor = System.Drawing.SystemColors.Control; + this.tabPageMain.Controls.Add(this.groupBoxGameLayout); + this.tabPageMain.Controls.Add(this.checkBoxPackUpResult); + this.tabPageMain.Controls.Add(this.labelTitleId); + this.tabPageMain.Controls.Add(this.textBoxLNLine2); + this.tabPageMain.Controls.Add(this.textBoxLNLine1); + this.tabPageMain.Controls.Add(this.checkBoxLongName); + this.tabPageMain.Controls.Add(this.labelRom); + this.tabPageMain.Controls.Add(this.groupBoxImages); + this.tabPageMain.Controls.Add(this.buttonRom); + this.tabPageMain.Controls.Add(this.buttonInject); + this.tabPageMain.Controls.Add(this.buttonIni); + this.tabPageMain.Controls.Add(this.textBoxIni); + this.tabPageMain.Controls.Add(this.textBoxShortName); + this.tabPageMain.Controls.Add(this.textBoxRom); + this.tabPageMain.Controls.Add(this.labelProductCode); + this.tabPageMain.Controls.Add(this.labelIni); + this.tabPageMain.Controls.Add(this.labeShortName); + this.tabPageMain.Location = new System.Drawing.Point(4, 22); + this.tabPageMain.Name = "tabPageMain"; + this.tabPageMain.Padding = new System.Windows.Forms.Padding(3); + this.tabPageMain.Size = new System.Drawing.Size(676, 523); + this.tabPageMain.TabIndex = 0; + this.tabPageMain.Text = "Main"; + // + // groupBoxGameLayout + // + this.groupBoxGameLayout.Controls.Add(this.checkBoxDarkFilter); + this.groupBoxGameLayout.Controls.Add(this.numericUpDownZoom); + this.groupBoxGameLayout.Controls.Add(this.checkBoxWidescreen); + this.groupBoxGameLayout.Controls.Add(this.labelZoom); + this.groupBoxGameLayout.Location = new System.Drawing.Point(8, 136); + this.groupBoxGameLayout.Name = "groupBoxGameLayout"; + this.groupBoxGameLayout.Size = new System.Drawing.Size(296, 45); + this.groupBoxGameLayout.TabIndex = 21; + this.groupBoxGameLayout.TabStop = false; + this.groupBoxGameLayout.Text = "Game layout"; + // + // checkBoxDarkFilter + // + this.checkBoxDarkFilter.AutoSize = true; + this.checkBoxDarkFilter.Checked = true; + this.checkBoxDarkFilter.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBoxDarkFilter.Location = new System.Drawing.Point(6, 19); + this.checkBoxDarkFilter.Name = "checkBoxDarkFilter"; + this.checkBoxDarkFilter.Size = new System.Drawing.Size(71, 17); + this.checkBoxDarkFilter.TabIndex = 17; + this.checkBoxDarkFilter.Text = "Dark filter"; + this.checkBoxDarkFilter.UseVisualStyleBackColor = true; + this.checkBoxDarkFilter.CheckedChanged += new System.EventHandler(this.checkBoxDarkFilter_CheckedChanged); + // + // numericUpDownZoom + // + this.numericUpDownZoom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.numericUpDownZoom.Increment = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.numericUpDownZoom.Location = new System.Drawing.Point(251, 18); + this.numericUpDownZoom.Maximum = new decimal(new int[] { + 200, + 0, + 0, + 0}); + this.numericUpDownZoom.Minimum = new decimal(new int[] { + 50, + 0, + 0, + 0}); + this.numericUpDownZoom.Name = "numericUpDownZoom"; + this.numericUpDownZoom.Size = new System.Drawing.Size(40, 20); + this.numericUpDownZoom.TabIndex = 20; + this.numericUpDownZoom.Value = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.numericUpDownZoom.ValueChanged += new System.EventHandler(this.numericUpDownZoom_ValueChanged); + // + // checkBoxWidescreen + // + this.checkBoxWidescreen.AutoSize = true; + this.checkBoxWidescreen.Location = new System.Drawing.Point(92, 19); + this.checkBoxWidescreen.Name = "checkBoxWidescreen"; + this.checkBoxWidescreen.Size = new System.Drawing.Size(83, 17); + this.checkBoxWidescreen.TabIndex = 18; + this.checkBoxWidescreen.Text = "Widescreen"; + this.checkBoxWidescreen.UseVisualStyleBackColor = true; + this.checkBoxWidescreen.CheckedChanged += new System.EventHandler(this.checkBoxWidescreen_CheckedChanged); + // + // labelZoom + // + this.labelZoom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.labelZoom.AutoSize = true; + this.labelZoom.Location = new System.Drawing.Point(213, 20); + this.labelZoom.Name = "labelZoom"; + this.labelZoom.Size = new System.Drawing.Size(37, 13); + this.labelZoom.TabIndex = 19; + this.labelZoom.Text = "Zoom:"; + // + // checkBoxPackUpResult + // + this.checkBoxPackUpResult.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.checkBoxPackUpResult.AutoSize = true; + this.checkBoxPackUpResult.Location = new System.Drawing.Point(579, 493); + this.checkBoxPackUpResult.Name = "checkBoxPackUpResult"; + this.checkBoxPackUpResult.Size = new System.Drawing.Size(94, 17); + this.checkBoxPackUpResult.TabIndex = 16; + this.checkBoxPackUpResult.Text = "Pack up result"; + this.checkBoxPackUpResult.UseVisualStyleBackColor = true; + // + // labelTitleId + // + this.labelTitleId.AutoSize = true; + this.labelTitleId.Location = new System.Drawing.Point(500, 156); + this.labelTitleId.Name = "labelTitleId"; + this.labelTitleId.Size = new System.Drawing.Size(44, 13); + this.labelTitleId.TabIndex = 15; + this.labelTitleId.Text = "Title ID:"; + // + // textBoxLNLine2 + // + this.textBoxLNLine2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxLNLine2.Enabled = false; + this.textBoxLNLine2.Location = new System.Drawing.Point(100, 84); + this.textBoxLNLine2.MaxLength = 255; + this.textBoxLNLine2.Name = "textBoxLNLine2"; + this.textBoxLNLine2.Size = new System.Drawing.Size(568, 20); + this.textBoxLNLine2.TabIndex = 14; + this.textBoxLNLine2.TextChanged += new System.EventHandler(this.textBoxLNLine2_TextChanged); + // + // textBoxLNLine1 + // + this.textBoxLNLine1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxLNLine1.Enabled = false; + this.textBoxLNLine1.Location = new System.Drawing.Point(100, 58); + this.textBoxLNLine1.MaxLength = 255; + this.textBoxLNLine1.Name = "textBoxLNLine1"; + this.textBoxLNLine1.Size = new System.Drawing.Size(568, 20); + this.textBoxLNLine1.TabIndex = 13; + this.textBoxLNLine1.TextChanged += new System.EventHandler(this.textBoxLNLine1_TextChanged); + // + // checkBoxLongName + // + this.checkBoxLongName.AutoSize = true; + this.checkBoxLongName.Location = new System.Drawing.Point(12, 66); + this.checkBoxLongName.Name = "checkBoxLongName"; + this.checkBoxLongName.Size = new System.Drawing.Size(82, 17); + this.checkBoxLongName.TabIndex = 12; + this.checkBoxLongName.Text = "Long name:"; + this.checkBoxLongName.UseVisualStyleBackColor = true; + this.checkBoxLongName.CheckedChanged += new System.EventHandler(this.checkBoxLongName_CheckedChanged); + // + // tabPageConfig + // + this.tabPageConfig.BackColor = System.Drawing.SystemColors.Control; + this.tabPageConfig.Controls.Add(this.labelBy); + this.tabPageConfig.Controls.Add(this.labelBaseFrom); + this.tabPageConfig.Controls.Add(this.panelLoadedBase); + this.tabPageConfig.Controls.Add(this.labelLoadedBase); + this.tabPageConfig.Controls.Add(this.panelValidKey); + this.tabPageConfig.Controls.Add(this.checkBoxImagesDir); + this.tabPageConfig.Controls.Add(this.buttonImagesDir); + this.tabPageConfig.Controls.Add(this.textBoxImagesDir); + this.tabPageConfig.Controls.Add(this.labelCommonKey); + this.tabPageConfig.Controls.Add(this.textBoxCommonKey); + this.tabPageConfig.Controls.Add(this.buttonBaseFrom); + this.tabPageConfig.Controls.Add(this.buttonIniDir); + this.tabPageConfig.Controls.Add(this.buttonRomDir); + this.tabPageConfig.Controls.Add(this.textBoxBaseFrom); + this.tabPageConfig.Controls.Add(this.textBoxIniDir); + this.tabPageConfig.Controls.Add(this.textBoxRomDir); + this.tabPageConfig.Controls.Add(this.checkBoxAskBase); + this.tabPageConfig.Controls.Add(this.checkBoxIniDir); + this.tabPageConfig.Controls.Add(this.checkBoxRomDir); + this.tabPageConfig.Location = new System.Drawing.Point(4, 22); + this.tabPageConfig.Name = "tabPageConfig"; + this.tabPageConfig.Padding = new System.Windows.Forms.Padding(3); + this.tabPageConfig.Size = new System.Drawing.Size(676, 523); + this.tabPageConfig.TabIndex = 1; + this.tabPageConfig.Text = "Config"; + // + // labelBy + // + this.labelBy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.labelBy.AutoSize = true; + this.labelBy.Location = new System.Drawing.Point(592, 482); + this.labelBy.Name = "labelBy"; + this.labelBy.Size = new System.Drawing.Size(55, 13); + this.labelBy.TabIndex = 18; + this.labelBy.Text = "phacox.cll"; + // + // labelBaseFrom + // + this.labelBaseFrom.AutoSize = true; + this.labelBaseFrom.Location = new System.Drawing.Point(6, 165); + this.labelBaseFrom.Name = "labelBaseFrom"; + this.labelBaseFrom.Size = new System.Drawing.Size(83, 13); + this.labelBaseFrom.TabIndex = 17; + this.labelBaseFrom.Text = "Load base from:"; + // + // panelLoadedBase + // + this.panelLoadedBase.BackColor = System.Drawing.SystemColors.Control; + this.panelLoadedBase.BackgroundImage = global::_64Inject.Properties.Resources.x_mark_16; + this.panelLoadedBase.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.panelLoadedBase.Location = new System.Drawing.Point(120, 194); + this.panelLoadedBase.Name = "panelLoadedBase"; + this.panelLoadedBase.Size = new System.Drawing.Size(20, 20); + this.panelLoadedBase.TabIndex = 16; + // + // labelLoadedBase + // + this.labelLoadedBase.AutoSize = true; + this.labelLoadedBase.Location = new System.Drawing.Point(146, 191); + this.labelLoadedBase.Name = "labelLoadedBase"; + this.labelLoadedBase.Size = new System.Drawing.Size(69, 13); + this.labelLoadedBase.TabIndex = 15; + this.labelLoadedBase.Text = "Base loaded:\r\n"; + // + // panelValidKey + // + this.panelValidKey.BackColor = System.Drawing.SystemColors.Control; + this.panelValidKey.BackgroundImage = global::_64Inject.Properties.Resources.x_mark_16; + this.panelValidKey.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.panelValidKey.Location = new System.Drawing.Point(342, 110); + this.panelValidKey.Name = "panelValidKey"; + this.panelValidKey.Size = new System.Drawing.Size(20, 20); + this.panelValidKey.TabIndex = 14; + // + // checkBoxImagesDir + // + this.checkBoxImagesDir.AutoSize = true; + this.checkBoxImagesDir.Checked = true; + this.checkBoxImagesDir.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBoxImagesDir.Location = new System.Drawing.Point(8, 34); + this.checkBoxImagesDir.Name = "checkBoxImagesDir"; + this.checkBoxImagesDir.Size = new System.Drawing.Size(106, 17); + this.checkBoxImagesDir.TabIndex = 13; + this.checkBoxImagesDir.Text = "Images directory:"; + this.checkBoxImagesDir.UseVisualStyleBackColor = true; + // + // buttonImagesDir + // + this.buttonImagesDir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonImagesDir.Location = new System.Drawing.Point(644, 30); + this.buttonImagesDir.Name = "buttonImagesDir"; + this.buttonImagesDir.Size = new System.Drawing.Size(24, 23); + this.buttonImagesDir.TabIndex = 12; + this.buttonImagesDir.Text = "..."; + this.buttonImagesDir.UseVisualStyleBackColor = true; + this.buttonImagesDir.Click += new System.EventHandler(this.buttonImagesDir_Click); + // + // textBoxImagesDir + // + this.textBoxImagesDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxImagesDir.Location = new System.Drawing.Point(120, 32); + this.textBoxImagesDir.Name = "textBoxImagesDir"; + this.textBoxImagesDir.Size = new System.Drawing.Size(518, 20); + this.textBoxImagesDir.TabIndex = 11; + // + // labelCommonKey + // + this.labelCommonKey.AutoSize = true; + this.labelCommonKey.Location = new System.Drawing.Point(6, 113); + this.labelCommonKey.Name = "labelCommonKey"; + this.labelCommonKey.Size = new System.Drawing.Size(100, 13); + this.labelCommonKey.TabIndex = 10; + this.labelCommonKey.Text = "Wii U Common key:"; + // + // textBoxCommonKey + // + this.textBoxCommonKey.Location = new System.Drawing.Point(120, 110); + this.textBoxCommonKey.Name = "textBoxCommonKey"; + this.textBoxCommonKey.Size = new System.Drawing.Size(216, 20); + this.textBoxCommonKey.TabIndex = 9; + this.textBoxCommonKey.TextChanged += new System.EventHandler(this.textBoxCommonKey_TextChanged); + // + // buttonBaseFrom + // + this.buttonBaseFrom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonBaseFrom.Location = new System.Drawing.Point(644, 160); + this.buttonBaseFrom.Name = "buttonBaseFrom"; + this.buttonBaseFrom.Size = new System.Drawing.Size(24, 23); + this.buttonBaseFrom.TabIndex = 8; + this.buttonBaseFrom.Text = "..."; + this.buttonBaseFrom.UseVisualStyleBackColor = true; + this.buttonBaseFrom.Click += new System.EventHandler(this.buttonBaseFrom_Click); + // + // buttonIniDir + // + this.buttonIniDir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonIniDir.Location = new System.Drawing.Point(644, 56); + this.buttonIniDir.Name = "buttonIniDir"; + this.buttonIniDir.Size = new System.Drawing.Size(24, 23); + this.buttonIniDir.TabIndex = 7; + this.buttonIniDir.Text = "..."; + this.buttonIniDir.UseVisualStyleBackColor = true; + this.buttonIniDir.Click += new System.EventHandler(this.buttonIniDir_Click); + // + // buttonRomDir + // + this.buttonRomDir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonRomDir.Location = new System.Drawing.Point(644, 4); + this.buttonRomDir.Name = "buttonRomDir"; + this.buttonRomDir.Size = new System.Drawing.Size(24, 23); + this.buttonRomDir.TabIndex = 6; + this.buttonRomDir.Text = "..."; + this.buttonRomDir.UseVisualStyleBackColor = true; + this.buttonRomDir.Click += new System.EventHandler(this.buttonRomDir_Click); + // + // textBoxBaseFrom + // + this.textBoxBaseFrom.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxBaseFrom.Location = new System.Drawing.Point(120, 162); + this.textBoxBaseFrom.Name = "textBoxBaseFrom"; + this.textBoxBaseFrom.Size = new System.Drawing.Size(518, 20); + this.textBoxBaseFrom.TabIndex = 5; + // + // textBoxIniDir + // + this.textBoxIniDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxIniDir.Location = new System.Drawing.Point(120, 58); + this.textBoxIniDir.Name = "textBoxIniDir"; + this.textBoxIniDir.Size = new System.Drawing.Size(518, 20); + this.textBoxIniDir.TabIndex = 4; + // + // textBoxRomDir + // + this.textBoxRomDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxRomDir.Location = new System.Drawing.Point(120, 6); + this.textBoxRomDir.Name = "textBoxRomDir"; + this.textBoxRomDir.Size = new System.Drawing.Size(518, 20); + this.textBoxRomDir.TabIndex = 3; + // + // checkBoxAskBase + // + this.checkBoxAskBase.AutoSize = true; + this.checkBoxAskBase.Location = new System.Drawing.Point(8, 226); + this.checkBoxAskBase.Name = "checkBoxAskBase"; + this.checkBoxAskBase.Size = new System.Drawing.Size(165, 17); + this.checkBoxAskBase.TabIndex = 2; + this.checkBoxAskBase.Text = "Ask for a base when injecting"; + this.checkBoxAskBase.UseVisualStyleBackColor = true; + this.checkBoxAskBase.CheckedChanged += new System.EventHandler(this.checkBoxAskBase_CheckedChanged); + // + // checkBoxIniDir + // + this.checkBoxIniDir.AutoSize = true; + this.checkBoxIniDir.Checked = true; + this.checkBoxIniDir.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBoxIniDir.Location = new System.Drawing.Point(8, 60); + this.checkBoxIniDir.Name = "checkBoxIniDir"; + this.checkBoxIniDir.Size = new System.Drawing.Size(86, 17); + this.checkBoxIniDir.TabIndex = 1; + this.checkBoxIniDir.Text = "INI directory:"; + this.checkBoxIniDir.UseVisualStyleBackColor = true; + // + // checkBoxRomDir + // + this.checkBoxRomDir.AutoSize = true; + this.checkBoxRomDir.Checked = true; + this.checkBoxRomDir.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBoxRomDir.Location = new System.Drawing.Point(8, 8); + this.checkBoxRomDir.Name = "checkBoxRomDir"; + this.checkBoxRomDir.Size = new System.Drawing.Size(97, 17); + this.checkBoxRomDir.TabIndex = 0; + this.checkBoxRomDir.Text = "ROM directory:"; + this.checkBoxRomDir.UseVisualStyleBackColor = true; + // + // _64InjectGUI + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(684, 549); + this.Controls.Add(this.tabControlMain); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MinimumSize = new System.Drawing.Size(700, 588); + this.Name = "_64InjectGUI"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "64InjectGUI"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this._64InjectGUI_FormClosing); + this.groupBoxImages.ResumeLayout(false); + this.groupBoxImages.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBootDrc)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBootTv)).EndInit(); + this.tabControlMain.ResumeLayout(false); + this.tabPageMain.ResumeLayout(false); + this.tabPageMain.PerformLayout(); + this.groupBoxGameLayout.ResumeLayout(false); + this.groupBoxGameLayout.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownZoom)).EndInit(); + this.tabPageConfig.ResumeLayout(false); + this.tabPageConfig.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button buttonRom; + private System.Windows.Forms.Button buttonIni; + private System.Windows.Forms.TextBox textBoxShortName; + private System.Windows.Forms.Label labelRom; + private System.Windows.Forms.Label labelIni; + private System.Windows.Forms.Label labeShortName; + private System.Windows.Forms.Label labelProductCode; + private System.Windows.Forms.OpenFileDialog openFileDialog; + private System.Windows.Forms.TextBox textBoxRom; + private System.Windows.Forms.TextBox textBoxIni; + private System.Windows.Forms.Button buttonInject; + private System.Windows.Forms.GroupBox groupBoxImages; + private System.Windows.Forms.Button buttonIcon; + private System.Windows.Forms.Button buttonBootTv; + private System.Windows.Forms.PictureBox pictureBoxBootTv; + private System.Windows.Forms.PictureBox pictureBoxIcon; + private System.Windows.Forms.TabControl tabControlMain; + private System.Windows.Forms.TabPage tabPageMain; + private System.Windows.Forms.TabPage tabPageConfig; + private System.Windows.Forms.Label labelCommonKey; + private System.Windows.Forms.TextBox textBoxCommonKey; + private System.Windows.Forms.Button buttonBaseFrom; + private System.Windows.Forms.Button buttonIniDir; + private System.Windows.Forms.Button buttonRomDir; + private System.Windows.Forms.TextBox textBoxBaseFrom; + private System.Windows.Forms.TextBox textBoxIniDir; + private System.Windows.Forms.TextBox textBoxRomDir; + private System.Windows.Forms.CheckBox checkBoxAskBase; + private System.Windows.Forms.CheckBox checkBoxIniDir; + private System.Windows.Forms.CheckBox checkBoxRomDir; + private System.Windows.Forms.TextBox textBoxLNLine2; + private System.Windows.Forms.TextBox textBoxLNLine1; + private System.Windows.Forms.CheckBox checkBoxLongName; + private System.Windows.Forms.Label labelTitleId; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog; + private System.Windows.Forms.CheckBox checkBoxImagesDir; + private System.Windows.Forms.Button buttonImagesDir; + private System.Windows.Forms.TextBox textBoxImagesDir; + private System.Windows.Forms.Panel panelValidKey; + private System.Windows.Forms.Label labelLoadedBase; + private System.Windows.Forms.Label labelBaseFrom; + private System.Windows.Forms.Panel panelLoadedBase; + private System.Windows.Forms.CheckBox checkBoxPackUpResult; + private System.Windows.Forms.PictureBox pictureBoxBootDrc; + private System.Windows.Forms.Button buttonBootDrc; + private System.Windows.Forms.Label labelBy; + private System.Windows.Forms.ComboBox comboBoxPlayers; + private System.Windows.Forms.ComboBox comboBoxReleased; + private System.Windows.Forms.Label labelPlayers; + private System.Windows.Forms.Label labelReleased; + private System.Windows.Forms.CheckBox checkBoxShowName; + private System.Windows.Forms.Button buttonTitleScreen; + private System.Windows.Forms.NumericUpDown numericUpDownZoom; + private System.Windows.Forms.Label labelZoom; + private System.Windows.Forms.CheckBox checkBoxWidescreen; + private System.Windows.Forms.CheckBox checkBoxDarkFilter; + private System.Windows.Forms.GroupBox groupBoxGameLayout; + } +} \ No newline at end of file diff --git a/64InjectGUI.cs b/64InjectGUI.cs new file mode 100644 index 0000000..69e0f85 --- /dev/null +++ b/64InjectGUI.cs @@ -0,0 +1,892 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Text; +using System.Windows.Forms; +using System.Xml; +using System.Drawing.Drawing2D; + +namespace _64Inject +{ + public partial class _64InjectGUI : Form + { + private _64Injector injector; + + private XmlDocument XmlConfig; + private XmlWriterSettings XmlSettings; + + private string ResultDir; + + public _64InjectGUI() + { + Cll.Log.SaveIn("64Inject_log.txt"); + Cll.Log.WriteLine(DateTime.UtcNow.ToString()); + Cll.Log.WriteLine("64Inject open in GUI mode."); + + injector = new _64Injector(); + + InitializeComponent(); + + this.Text = "64Inject " + _64Injector.Release; + + XmlSettings = new XmlWriterSettings + { + Indent = true, + IndentChars = " ", + NewLineChars = "\r\n", + NewLineHandling = NewLineHandling.Replace + }; + XmlConfig = new XmlDocument(); + + LoadXmlConfig(); + + if (NusContent.GetJavaVersion() == null) + MessageBox.Show("Warning! Apparently the system does not have Java installed!\n" + + "Java is needed to NUSPacker (encrypt) and JNUSTool (decrypt).", + "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); + else + { + StringBuilder sb = new StringBuilder(); + bool warning = false; + if (!File.Exists("resources\\nuspacker\\NUSPacker.jar")) + { + sb.AppendLine("Warning! \"resources\\nuspacker\\NUSPacker.jar\" not found!"); + sb.AppendLine("NUSPacker allows you to encrypt the result for WUPInstaller."); + sb.AppendLine(""); + warning = true; + } + if (!File.Exists("resources\\jnustool\\JNUSTool.jar")) + { + sb.AppendLine("Warning! \"resources\\jnustool\\JNUSTool.jar\" not found!"); + sb.AppendLine("JNUSTool allows you to decrypt Wii U VC games to use as a base."); + warning = true; + } + + if (warning) + MessageBox.Show(sb.ToString(), "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + + if (NusContent.CheckCommonKeyFiles()) + { + textBoxCommonKey.Enabled = false; + panelValidKey.BackgroundImage = Properties.Resources.checkmark_16; + } + else + { + textBoxCommonKey.Enabled = true; + panelValidKey.BackgroundImage = Properties.Resources.x_mark_16; + } + + labelLoadedBase.Text = "Base loaded: " + injector.LoadedBase; + if (injector.BaseIsLoaded) + panelLoadedBase.BackgroundImage = global::_64Inject.Properties.Resources.checkmark_16; + + if (File.Exists("resources\\boot.png")) + { + injector.BootTvImg.Frame = new Bitmap("resources\\boot.png"); + injector.BootDrcImg.Frame = new Bitmap("resources\\boot.png"); + } + + if (File.Exists("resources\\icon.png")) + injector.IconImg.Frame = new Bitmap("resources\\icon.png"); + + if (File.Exists("resources\\title_screen.png")) + { + injector.BootTvImg.TitleScreen = new Bitmap("resources\\title_screen.png"); + injector.BootDrcImg.TitleScreen = new Bitmap("resources\\title_screen.png"); + injector.IconImg.TitleScreen = new Bitmap("resources\\title_screen.png"); + } + + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + UpdateIconPictureBox(); + } + + private void _64InjectGUI_FormClosing(object sender, FormClosingEventArgs e) + { + SaveXmlConfig(); + Cll.Log.WriteLine("Close."); + Cll.Log.WriteLine("----------------------------------------------------------------"); + } + + #region Config + + private Stream CreateXmlConfig() + { + Stream xmlStream = new MemoryStream(); + XmlWriter config = XmlWriter.Create(xmlStream, XmlSettings); + + config.WriteStartElement("Config"); + + config.WriteStartElement("ROMDir"); + config.WriteAttributeString("type", "String"); + config.WriteValue(""); + config.WriteEndElement(); + config.WriteStartElement("INIDir"); + config.WriteAttributeString("type", "String"); + config.WriteValue(""); + config.WriteEndElement(); + config.WriteStartElement("ImagesDir"); + config.WriteAttributeString("type", "String"); + config.WriteValue(""); + config.WriteEndElement(); + + config.WriteStartElement("ROMDirCheck"); + config.WriteAttributeString("type", "Boolean"); + config.WriteValue("True"); + config.WriteEndElement(); + config.WriteStartElement("INIDirCheck"); + config.WriteAttributeString("type", "Boolean"); + config.WriteValue("True"); + config.WriteEndElement(); + config.WriteStartElement("ImagesDirCheck"); + config.WriteAttributeString("type", "Boolean"); + config.WriteValue("True"); + config.WriteEndElement(); + + config.WriteStartElement("BaseFrom"); + config.WriteAttributeString("type", "String"); + config.WriteValue(""); + config.WriteEndElement(); + config.WriteStartElement("BaseAsk"); + config.WriteAttributeString("type", "Boolean"); + config.WriteValue("False"); + config.WriteEndElement(); + config.WriteStartElement("PackUpResult"); + config.WriteAttributeString("type", "Boolean"); + config.WriteValue("False"); + config.WriteEndElement(); + config.WriteStartElement("ResultDir"); + config.WriteAttributeString("type", "String"); + config.WriteValue(""); + config.WriteEndElement(); + + config.WriteEndElement(); + + config.Close(); + xmlStream.Position = 0; + + return xmlStream; + } + + private void LoadXmlConfig() + { + if (File.Exists("resources\\gui_config")) + { + try + { + XmlConfig.Load("resources\\gui_config"); + + XmlNode nodeROMDir = XmlConfig.SelectSingleNode("Config/ROMDir"); + XmlNode nodeINIDir = XmlConfig.SelectSingleNode("Config/INIDir"); + XmlNode nodeImagesDir = XmlConfig.SelectSingleNode("Config/ImagesDir"); + + XmlNode nodeROMDirCheck = XmlConfig.SelectSingleNode("Config/ROMDirCheck"); + XmlNode nodeINIDirCheck = XmlConfig.SelectSingleNode("Config/INIDirCheck"); + XmlNode nodeImagesDirCheck = XmlConfig.SelectSingleNode("Config/ImagesDirCheck"); + + XmlNode nodeBaseFrom = XmlConfig.SelectSingleNode("Config/BaseFrom"); + XmlNode nodeBaseAsk = XmlConfig.SelectSingleNode("Config/BaseAsk"); + XmlNode nodePackUpResult = XmlConfig.SelectSingleNode("Config/PackUpResult"); + XmlNode nodeResultDir = XmlConfig.SelectSingleNode("Config/ResultDir"); + + textBoxRomDir.Text = nodeROMDir.InnerText; + textBoxIniDir.Text = nodeINIDir.InnerText; + textBoxImagesDir.Text = nodeImagesDir.InnerText; + + checkBoxRomDir.Checked = Convert.ToBoolean(nodeROMDirCheck.InnerText); + checkBoxIniDir.Checked = Convert.ToBoolean(nodeINIDirCheck.InnerText); + checkBoxImagesDir.Checked = Convert.ToBoolean(nodeImagesDirCheck.InnerText); + + textBoxBaseFrom.Text = nodeBaseFrom.InnerText; + checkBoxAskBase.Checked = Convert.ToBoolean(nodeBaseAsk.InnerText); + checkBoxPackUpResult.Checked = Convert.ToBoolean(nodePackUpResult.InnerText); + ResultDir = nodeResultDir.InnerText; + } + catch + { + XmlConfig.Load(CreateXmlConfig()); + } + } + else + { + XmlConfig.Load(CreateXmlConfig()); + } + } + + private void SaveXmlConfig() + { + if (!Directory.Exists("resources")) + Directory.CreateDirectory("resources"); + + XmlNode nodeROMDir = XmlConfig.SelectSingleNode("Config/ROMDir"); + XmlNode nodeINIDir = XmlConfig.SelectSingleNode("Config/INIDir"); + XmlNode nodeImagesDir = XmlConfig.SelectSingleNode("Config/ImagesDir"); + + XmlNode nodeROMDirCheck = XmlConfig.SelectSingleNode("Config/ROMDirCheck"); + XmlNode nodeINIDirCheck = XmlConfig.SelectSingleNode("Config/INIDirCheck"); + XmlNode nodeImagesDirCheck = XmlConfig.SelectSingleNode("Config/ImagesDirCheck"); + + XmlNode nodeBaseFrom = XmlConfig.SelectSingleNode("Config/BaseFrom"); + XmlNode nodeBaseAsk = XmlConfig.SelectSingleNode("Config/BaseAsk"); + XmlNode nodePackUpResult = XmlConfig.SelectSingleNode("Config/PackUpResult"); + XmlNode nodeResultDir = XmlConfig.SelectSingleNode("Config/ResultDir"); + + nodeROMDir.InnerText = textBoxRomDir.Text; + nodeINIDir.InnerText = textBoxIniDir.Text; + nodeImagesDir.InnerText = textBoxImagesDir.Text; + + nodeROMDirCheck.InnerText = checkBoxRomDir.Checked.ToString(); + nodeINIDirCheck.InnerText = checkBoxIniDir.Checked.ToString(); + nodeImagesDirCheck.InnerText = checkBoxImagesDir.Checked.ToString(); + + nodeBaseFrom.InnerText = textBoxBaseFrom.Text; + nodeBaseAsk.InnerText = checkBoxAskBase.Checked.ToString(); + nodePackUpResult.InnerText = checkBoxPackUpResult.Checked.ToString(); + nodeResultDir.InnerText = ResultDir; + + XmlWriter config = XmlWriter.Create("resources\\gui_config", XmlSettings); + XmlConfig.Save(config); + config.Close(); + } + + #endregion + + #region Main tab + + private void buttonRom_Click(object sender, EventArgs e) + { + openFileDialog.FileName = ""; + openFileDialog.Filter = "N64 ROM|*.z64;*.n64;*.v64;*.u64|All files|*.*"; + if (checkBoxRomDir.Checked && Directory.Exists(textBoxRomDir.Text)) + openFileDialog.InitialDirectory = textBoxRomDir.Text; + else + openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); + + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + injector.RomPath = openFileDialog.FileName; + textBoxRom.Text = injector.RomPath; + + if (injector.Rom != null) + injector.Rom.Dispose(); + + injector.Rom = new RomN64(injector.RomPath); + + if (injector.Rom.IsValid) + { + this.Text = "64Inject " + _64Injector.Release + " :: " + injector.Rom.Title; + labelProductCode.Text = "Product code: " + injector.Rom.ProductCode + + (injector.Rom.Version != 0 ? " (Rev " + injector.Rom.Revision + ")" : ""); + } + else + { + this.Text = "DSInject " + _64Injector.Release; + labelProductCode.Text = "Product code:"; + } + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.Rom.IsValid && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + + if (textBoxShortName.Text.Length > 0) + buttonInject.Enabled = true; + else + buttonInject.Enabled = false; + } + else + { + labelTitleId.Text = "Title ID:"; + buttonInject.Enabled = false; + } + } + } + + private void buttonIni_Click(object sender, EventArgs e) + { + openFileDialog.FileName = ""; + openFileDialog.Filter = "INI file|*.ini|All files|*.*"; + if (checkBoxIniDir.Checked && Directory.Exists(textBoxIniDir.Text)) + openFileDialog.InitialDirectory = textBoxIniDir.Text; + else + openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); + + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + injector.IniPath = openFileDialog.FileName; + textBoxIni.Text = injector.IniPath; + + if (!injector.LoadIni(injector.IniPath)) + { + buttonInject.Enabled = false; + labelTitleId.Text = "Title ID:"; + MessageBox.Show("The INI file is not valid.", + "64Inject", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + else if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + if (textBoxShortName.Text.Length > 0) + buttonInject.Enabled = true; + else + buttonInject.Enabled = false; + } + } + } + + private void textBoxShortName_TextChanged(object sender, EventArgs e) + { + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null) && + textBoxShortName.Text.Length > 0) + buttonInject.Enabled = true; + else + buttonInject.Enabled = false; + + UpdateBootName(); + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + } + + private void checkBoxLongName_CheckedChanged(object sender, EventArgs e) + { + if (checkBoxLongName.Checked) + { + textBoxLNLine1.Enabled = true; + textBoxLNLine2.Enabled = true; + injector.BootTvImg.Longname = true; + injector.BootDrcImg.Longname = true; + } + else + { + textBoxLNLine1.Text = ""; + textBoxLNLine2.Text = ""; + textBoxLNLine1.Enabled = false; + textBoxLNLine2.Enabled = false; + injector.BootTvImg.Longname = false; + injector.BootDrcImg.Longname = false; + } + + UpdateBootName(); + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + } + + private void textBoxLNLine1_TextChanged(object sender, EventArgs e) + { + UpdateBootName(); + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + } + + private void textBoxLNLine2_TextChanged(object sender, EventArgs e) + { + UpdateBootName(); + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + } + + private void checkBoxDarkFilter_CheckedChanged(object sender, EventArgs e) + { + injector.DarkFilter = checkBoxDarkFilter.Checked; + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + } + } + + private void checkBoxWidescreen_CheckedChanged(object sender, EventArgs e) + { + injector.Widescreen = checkBoxWidescreen.Checked; + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + } + } + + private void numericUpDownZoom_ValueChanged(object sender, EventArgs e) + { + injector.Scale = (float)(numericUpDownZoom.Value / 100.0M); + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + } + } + + private void buttonBootTv_Click(object sender, EventArgs e) + { + openFileDialog.FileName = ""; + openFileDialog.Filter = "Image file|*.png;*.jpg;*.bmp"; + if (checkBoxImagesDir.Checked && Directory.Exists(textBoxImagesDir.Text)) + openFileDialog.InitialDirectory = textBoxImagesDir.Text; + else + openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); + + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + injector.BootTvImg.Frame = new Bitmap(openFileDialog.FileName); + injector.BootTvImg.IsDefault = false; + UpdateBootTvPictureBox(); + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + } + } + } + + private void buttonBootDrc_Click(object sender, EventArgs e) + { + openFileDialog.FileName = ""; + openFileDialog.Filter = "Image file|*.png;*.jpg;*.bmp"; + if (checkBoxImagesDir.Checked && Directory.Exists(textBoxImagesDir.Text)) + openFileDialog.InitialDirectory = textBoxImagesDir.Text; + else + openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); + + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + injector.BootDrcImg.Frame = new Bitmap(openFileDialog.FileName); + injector.BootDrcImg.IsDefault = false; + UpdateBootDrcPictureBox(); + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + } + } + } + + private void buttonIcon_Click(object sender, EventArgs e) + { + openFileDialog.FileName = ""; + openFileDialog.Filter = "Image file|*.png;*.jpg;*.bmp"; + if (checkBoxImagesDir.Checked && Directory.Exists(textBoxImagesDir.Text)) + openFileDialog.InitialDirectory = textBoxImagesDir.Text; + else + openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); + + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + injector.IconImg.Frame = new Bitmap(openFileDialog.FileName); + injector.IconImg.IsDefault = false; + UpdateIconPictureBox(); + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + } + } + } + + private void comboBoxReleased_SelectedIndexChanged(object sender, EventArgs e) + { + switch (comboBoxReleased.SelectedItem.ToString()) + { + case "1996": + injector.BootTvImg.Released = 1996; + injector.BootDrcImg.Released = 1996; + break; + case "1997": + injector.BootTvImg.Released = 1997; + injector.BootDrcImg.Released = 1997; + break; + case "1998": + injector.BootTvImg.Released = 1998; + injector.BootDrcImg.Released = 1998; + break; + case "1999": + injector.BootTvImg.Released = 1999; + injector.BootDrcImg.Released = 1999; + break; + case "2000": + injector.BootTvImg.Released = 2000; + injector.BootDrcImg.Released = 2000; + break; + case "2001": + injector.BootTvImg.Released = 2001; + injector.BootDrcImg.Released = 2001; + break; + case "2002": + injector.BootTvImg.Released = 2002; + injector.BootDrcImg.Released = 2002; + break; + case "2018": + injector.BootTvImg.Released = 2018; + injector.BootDrcImg.Released = 2018; + break; + default: + injector.BootTvImg.Released = 0; + injector.BootDrcImg.Released = 0; + break; + } + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + } + + private void comboBoxPlayers_SelectedIndexChanged(object sender, EventArgs e) + { + switch (comboBoxPlayers.SelectedItem.ToString()) + { + case "1": + injector.BootTvImg.Players = 1; + injector.BootDrcImg.Players = 1; + break; + case "2": + injector.BootTvImg.Players = 2; + injector.BootDrcImg.Players = 2; + break; + case "3": + injector.BootTvImg.Players = 3; + injector.BootDrcImg.Players = 3; + break; + case "4": + injector.BootTvImg.Players = 4; + injector.BootDrcImg.Players = 4; + break; + default: + injector.BootTvImg.Players = 0; + injector.BootDrcImg.Players = 0; + break; + } + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + } + + private void checkBoxShowName_CheckedChanged(object sender, EventArgs e) + { + UpdateBootName(); + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + } + + private void buttonTitleScreen_Click(object sender, EventArgs e) + { + openFileDialog.FileName = ""; + openFileDialog.Filter = "Image file|*.png;*.jpg;*.bmp"; + if (checkBoxImagesDir.Checked && Directory.Exists(textBoxImagesDir.Text)) + openFileDialog.InitialDirectory = textBoxImagesDir.Text; + else + openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); + + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + injector.BootTvImg.TitleScreen = new Bitmap(openFileDialog.FileName); + injector.BootDrcImg.TitleScreen = new Bitmap(openFileDialog.FileName); + injector.IconImg.TitleScreen = new Bitmap(openFileDialog.FileName); + + injector.BootTvImg.IsDefault = false; + injector.BootDrcImg.IsDefault = false; + injector.IconImg.IsDefault = false; + + UpdateBootTvPictureBox(); + UpdateBootDrcPictureBox(); + UpdateIconPictureBox(); + + if ((injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + } + } + } + + private void buttonInject_Click(object sender, EventArgs e) + { + bool _continue = true; + + if (textBoxShortName.Text.Length != 0) + injector.ShortName = textBoxShortName.Text; + else + { + _continue = false; + MessageBox.Show("The name of the game is empty.", + "Short name", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + if (_continue) + { + if (checkBoxLongName.Checked) + { + if (textBoxLNLine1.Text.Length != 0 && textBoxLNLine2.Text.Length != 0) + injector.LongName = textBoxLNLine1.Text + "\n" + textBoxLNLine2.Text; + else + { + _continue = false; + MessageBox.Show("The long name of the game is empty.", + "Long name", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + else + injector.LongName = injector.ShortName; + } + + if (_continue && checkBoxAskBase.Checked) + { + _continue = AskBase(); + if (_continue) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + this.Update(); + } + else + { + labelTitleId.Text = "Title ID:"; + MessageBox.Show("The base was not loaded correctly.", + "64Inject", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + folderBrowserDialog.Description = "Select the folder where the result will be saved."; + folderBrowserDialog.SelectedPath = ResultDir; + if (_continue && folderBrowserDialog.ShowDialog() == DialogResult.OK) + { + injector.Encrypt = checkBoxPackUpResult.Checked; + injector.OutPath = folderBrowserDialog.SelectedPath + "\\" + injector.ShortNameASCII + " [" + injector.TitleId + "]"; + ResultDir = folderBrowserDialog.SelectedPath; + + if (Directory.Exists(injector.OutPath)) + if (Directory.GetDirectories(injector.OutPath).Length != 0 || + Directory.GetFiles(injector.OutPath).Length != 0) + { + _continue = false; + MessageBox.Show("The \"" + injector.OutPath + "\" folder exist and not empty.", + "64Inject", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + if (_continue) + { + Cll.Log.WriteLine("Injecting - - - - - - - - - - - - - - - - - - - - - - - - - - - "); + if (injector.BasePath != null) Cll.Log.WriteLine("base: " + injector.BasePath); + if (injector.ShortName != null) Cll.Log.WriteLine("name: " + injector.ShortName); + if (injector.LongName != null) Cll.Log.WriteLine("longname:\n" + injector.LongName); + if (injector.InPath != null) Cll.Log.WriteLine("in: " + injector.InPath); + if (injector.RomPath != null) Cll.Log.WriteLine("rom: " + injector.RomPath); + if (injector.IniPath != null) Cll.Log.WriteLine("ini: " + injector.IniPath); + if (injector.BootTvPath != null) Cll.Log.WriteLine("tv: " + injector.BootTvPath); + if (injector.BootDrcPath != null) Cll.Log.WriteLine("drc: " + injector.BootDrcPath); + if (injector.IconPath != null) Cll.Log.WriteLine("icon: " + injector.IconPath); + if (injector.OutPath != null) Cll.Log.WriteLine("out: " + injector.OutPath); + Cll.Log.WriteLine("encrypt: " + injector.Encrypt.ToString()); + Cll.Log.WriteLine("Please wait..."); + + if (injector.Inject()) + MessageBox.Show("Injection completed successfully!", + "64Inject", MessageBoxButtons.OK, MessageBoxIcon.Information); + else + MessageBox.Show("The injection failed.\nCheck the log file \"" + Cll.Log.Filename + "\".", + "64Inject", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + private void UpdateBootName() + { + if (checkBoxShowName.Checked) + { + if (checkBoxLongName.Checked) + { + injector.BootTvImg.NameLine1 = textBoxLNLine1.Text; + injector.BootTvImg.NameLine2 = textBoxLNLine2.Text; + injector.BootDrcImg.NameLine1 = textBoxLNLine1.Text; + injector.BootDrcImg.NameLine2 = textBoxLNLine2.Text; + } + else + { + injector.BootTvImg.NameLine1 = textBoxShortName.Text; + injector.BootTvImg.NameLine2 = ""; + injector.BootDrcImg.NameLine1 = textBoxShortName.Text; + injector.BootDrcImg.NameLine2 = ""; + } + } + else + { + injector.BootTvImg.NameLine1 = ""; + injector.BootTvImg.NameLine2 = ""; + injector.BootDrcImg.NameLine1 = ""; + injector.BootDrcImg.NameLine2 = ""; + } + } + + private void UpdateBootTvPictureBox() + { + if (pictureBoxBootTv.Image != null) + pictureBoxBootTv.Image.Dispose(); + + pictureBoxBootTv.Image = injector.BootTvImg.Create(); + } + + private void UpdateBootDrcPictureBox() + { + if (pictureBoxBootDrc.Image != null) + pictureBoxBootDrc.Image.Dispose(); + + pictureBoxBootDrc.Image = injector.BootDrcImg.Create(); + } + + private void UpdateIconPictureBox() + { + if (pictureBoxIcon.Image != null) + pictureBoxIcon.Image.Dispose(); + + pictureBoxIcon.Image = injector.IconImg.Create(); + } + + #endregion + + #region Config tab + + private void buttonRomDir_Click(object sender, EventArgs e) + { + folderBrowserDialog.Description = "Select the folder where your N64 ROM collection is located."; + + if (Directory.Exists(textBoxRomDir.Text)) + folderBrowserDialog.SelectedPath = textBoxRomDir.Text; + else + folderBrowserDialog.SelectedPath = + Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + + if (folderBrowserDialog.ShowDialog() == DialogResult.OK) + textBoxRomDir.Text = folderBrowserDialog.SelectedPath; + } + + private void buttonIniDir_Click(object sender, EventArgs e) + { + folderBrowserDialog.Description = "Select the folder where your INI file collection is located."; + + if (Directory.Exists(textBoxIniDir.Text)) + folderBrowserDialog.SelectedPath = textBoxIniDir.Text; + else + folderBrowserDialog.SelectedPath = + Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + + if (folderBrowserDialog.ShowDialog() == DialogResult.OK) + textBoxIniDir.Text = folderBrowserDialog.SelectedPath; + } + + private void buttonImagesDir_Click(object sender, EventArgs e) + { + folderBrowserDialog.Description = "Select the folder where your image collection is located."; + + if (Directory.Exists(textBoxImagesDir.Text)) + folderBrowserDialog.SelectedPath = textBoxImagesDir.Text; + else + folderBrowserDialog.SelectedPath = + Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + + if (folderBrowserDialog.ShowDialog() == DialogResult.OK) + textBoxImagesDir.Text = folderBrowserDialog.SelectedPath; + } + + private void textBoxCommonKey_TextChanged(object sender, EventArgs e) + { + if (NusContent.LoadKey(textBoxCommonKey.Text)) + { + textBoxCommonKey.Text = ""; + textBoxCommonKey.Enabled = false; + panelValidKey.BackgroundImage = Properties.Resources.checkmark_16; + } + else + { + textBoxCommonKey.Enabled = true; + panelValidKey.BackgroundImage = Properties.Resources.x_mark_16; + } + } + + private void buttonBaseFrom_Click(object sender, EventArgs e) + { + if ((AskBase() || injector.BaseIsLoaded || checkBoxAskBase.Checked) && + injector.RomIsLoaded && + (injector.IniIsLoaded || injector.IniPath == null)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + + if (textBoxShortName.Text.Length > 0) + buttonInject.Enabled = true; + else + buttonInject.Enabled = false; + } + else + { + labelTitleId.Text = "Title ID:"; + buttonInject.Enabled = false; + } + } + + private void checkBoxAskBase_CheckedChanged(object sender, EventArgs e) + { + if (injector.RomIsLoaded && + (injector.BaseIsLoaded || checkBoxAskBase.Checked)) + { + labelTitleId.Text = "Title ID: " + injector.TitleId; + if (textBoxShortName.Text.Length > 0) + buttonInject.Enabled = true; + else + buttonInject.Enabled = false; + } + else + { + labelTitleId.Text = "Title ID:"; + buttonInject.Enabled = false; + } + } + + private bool AskBase() + { + folderBrowserDialog.Description = "Select the folder of the N64 VC game you want to use as a base."; + + if (Directory.Exists(textBoxBaseFrom.Text)) + folderBrowserDialog.SelectedPath = textBoxBaseFrom.Text; + else + folderBrowserDialog.SelectedPath = + Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + + if (folderBrowserDialog.ShowDialog() == DialogResult.OK) + { + labelLoadedBase.Text = "Base loaded: Wait..."; + panelLoadedBase.BackgroundImage = global::_64Inject.Properties.Resources.x_mark_16; + this.Update(); + + textBoxBaseFrom.Text = folderBrowserDialog.SelectedPath; + + Cll.Log.WriteLine("Loading base."); + if (injector.LoadBase(textBoxBaseFrom.Text)) + { + labelLoadedBase.Text = "Base loaded: " + injector.LoadedBase; + panelLoadedBase.BackgroundImage = global::_64Inject.Properties.Resources.checkmark_16; + Cll.Log.WriteLine("Base loaded: " + injector.LoadedBase); + return true; + } + else + { + labelLoadedBase.Text = "The base is not valid."; + panelLoadedBase.BackgroundImage = global::_64Inject.Properties.Resources.x_mark_16; + } + } + return false; + } + + #endregion + } +} diff --git a/64InjectGUI.resx b/64InjectGUI.resx new file mode 100644 index 0000000..2432372 --- /dev/null +++ b/64InjectGUI.resx @@ -0,0 +1,2662 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>180, 17</value> + </metadata> + <metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + 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 + AAAAAAAAH///AI///wDAf/8A4D//APAf/wDgD/8A4Af/AOAD/wDwAf8A+AD/APwAYwD+AAMA/wAHAP+A + DwD/wA8A/+AGAP/wAAD/8AAA/+EBAP/jgwD/94cA//+PAP//HwD//x8AKAAAACAAAABAAAAAAQAgAAAA + AACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAADEAAAAVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAADSAAAAWAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAADSAAAAWAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ABUAAADSAAAAWAAAAAAAAAAAAAAAAAAAAAcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAABUAAADSAAAAkQAAAK0AAADTAAEA7QABAPUAAABSAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkRAwD/WhIB/3kYAf9IYQT/ImcE/wEFAPkAAABVAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgTUSAf+pIgL/qSIC/0OBBf8wkwb/I2sE/wIF + APoAAABXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsJUMD/6YlAv+kJgL/No0G/zCT + Bv8wkwb/ImcQ/gIGAPoAAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8iZgT/kjgD/5gx + A/8xkgb/MJMG/zCTBv8iWIT9I20G/wIGAPsAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAA1xZD + A/9mXwT/hUMD/zCTBv8wkwb/MJIH/xoz1f4thiL/JG8E/wIGAPsAAABgAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAiAAEA5SY1Av9pXQT/MJIG/xhLA/8pehL+FiX0/iVka/8wkwb/JXAE/wIHAPsAAABiAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAgAQAA5Bs8Av8WQgL/DSkC/yp7L/0UH/P/GzrG/zCTBv8wkwb/JXIF/wIH + APwAAABmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAA4gYSAf8ujQb/HVgf/QUHN/8WI/T/LooY/zCT + Bv8wkwb/JHQL/gEJCvwAAABpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAA4Q4rAv8DBx7/Exzh/xIc + 3v8jZzD/MJMG/yuXHv4Ltsn9AZjK/wALDvwAAABrAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAA3wgM + Xv8SG9b/AgQf/xg5e/8lnkD9Bbzq/gHA//8BwP//CJPB/ggEA/wAAABuAAAAAQAAAAAAAAAAAAAAAQAA + AFcAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAaAAAA3QEBDP8PF7f/Fine/gczLv1fWUz6a1xf+l5pc/ePOyn8iBsC/wsCAP0AAABxAAAAAQAA + AAEAAABtAAAA/AAAAOIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAZAAAA3AgMX/8FCDr/GUsD/ziJBv6MKwL+qSIC/6kiAv+pIgL/ihwC/wwC + AP0AAAB0AAAAbgAAAPwAAADyAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAA2gkdAf8vjwb/FUAC/xcvAv+NPAP9qSIC/6ki + Av+pIgL/ixwC/wcBAP4AAAD+AAAA8gAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAA2AgYAf8OKwL/L48G/yZj + BP+AKgL9qSIC/6kiAv9hEwH/AgAA/wAAAPIAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAA1xE0 + Av8fXwT/BxYB/yyFFv5MeYH9SCol/gIAAP8CAQD/AAAAygAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAUAAAA1AIHAP8iiTD+B7rg/gFtkf8AAgL/CggA/5V0AP80KAD/AAAAvAAAAAkAAAAAAAAAAAAA + AAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAASAAAA0gFAUv8Ba47/AAIC/woIAP+beQD/x5oA/8CVAf80KAD/AAAAvAAA + AAkAAAAAAAAAAAAAAFMAAADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAA5AAAAP8AAAD/dlsA/8eaAP/ZulL/7uCw/8+x + SP80KAD/AAAAvAAAAAkAAABTAAAA+QAAAOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAG4AAAD8AAAA8gAAAHwIBwD6pY4//+LK + ef/JnQn/7d6t/8CUAP80KAD/AAAA0gAAAPkAAADnAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABuAAAA/AAAAPIAAAA3AAAAAAAA + AFcKCQX6mHcH/+rZoP/SrjT/x5oA/4FjAP8BAAD/AAAA5wAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwAAAPwAAADyAAAANwAA + AAAAAAAAAAAAAAAAAFcKCgj6oIUp/8eaAP+GaAD/BAMA/wAAAOcAAAAjAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAtAAA + ADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFcIBgD6ZU4A/wQDAP8AAADnAAAAIwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4AAAD/AAAA5wAAACMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA+QAAAOcAAAAjAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUwAAAPkAAADnAAAAIwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNAAAA5gAA + ACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AB4AAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////j////8f////jn///8A////gH + ///4A///+AH///gA///wAH//+AA///wAH//+AA///wAD//+AAY//wAAH/+AAD//wAB//+AA///wAP//+ + AB7//wAM//+AAP//AAD//ggB//4cA//+Pgf///8P///+H////D////x////8/ygAAAAwAAAAYAAAAAEA + IAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAAAAuAAAAIkAAAAIAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAO8AAAC4AAAACQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ADMAAADvAAAAuQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAyAAAA7wAAALYAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAO8AAAC5AAAACQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAADvAAAAuQAA + AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAyAAAA7wAAALYAAAAQAAAAHQAAAD4AAABrAAAAnAAAAMcAAADfAAAAPQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAPIAAAD2AAAA/gAAAP8AAAD/AwEA/wQMAP8CBgD/AAAA9QAA + AD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAANYIAgD/Sg8B/20WAf+IGwL/hzID/y+P + Bv8ndgX/AwoA/wAAAPQAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAO0mCAD/qSIC/6ki + Av+pIgL/gEkD/zCTBv8wkwb/J3cF/wMJAP8AAAD1AAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAA + APsmIwL/qCMC/6kiAv+pIgL/ZWEE/zCTBv8wkwb/MJMG/yd4Bf8DCwD/AAAA9wAAAEcAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAALAAAAP8cTgP/my8C/6kiAv+pIgL/TXgF/zCTBv8wkwb/MJMG/zCTBv8ndg7+BAsA/wAA + APYAAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAP8iaAT/dlED/6kiAv+nJAL/PIcG/zCTBv8wkwb/MJMG/zCT + Bv8jXHz8KHoH/wQLAP8AAAD3AAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgABAP8oewX/S3oF/6kiAv+fLAL/M5AG/zCT + Bv8wkwb/MJMG/zCSB/8aNdD9LYYi/yh8Bf8EDQD/AAAA+AAAAE4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAP8WQwP/M44G/6Aq + Av+POgP/MJMG/zCTBv8wkwb/MJMG/y+OEf4WJvH+JWRs/zCTBv8pfQX/BA4B/wAAAPgAAABRAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAA + AMQAAQD/FUID/4BHA/94UAP/MJMG/zCTBv8rhQX/LIYF/yyBLP0VIP3/GzrF/zCTBv8wkwb/KX4F/wQN + AP8AAAD5AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAsAAAC/AAAA/zUiAf9aagX/MJMG/yh7Bf8EDAD/EjcC/ydsWfsVIP7/FiP2/y6L + GP8wkwb/MJMG/yl/Bf8FDwD/AAAA+gAAAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAvQEAAP8XPAL/KHoF/wQMAP8JHAH/LYkG/yFR + k/sVIP7/FSD+/ydtV/8wkwb/MJMG/zCTBv8qgAX/BRAB/wAAAPoAAABaAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAL0AAAD/AgUA/wkc + Af8tiQb/MJMG/xYxivwEBzX/FB7w/x1Cs/8wkwb/MJMG/zCTBv8wkwb/KoEF/wUQAf8AAAD6AAAAXAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALEAAAD/AAAA/wAAAOEAAAAeAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABFAAAA9hcXFv+wjRn/x5oA/8eaAP+VcwD/CQcA/wAAAP8AAAD5AAAAVgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKUAAAD/AAAA4gAA + AB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAPcTDgD/qoMA/5RzAP8IBgD/AAAA/wAA + APkAAABWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAgAAAA/AAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAD2DgsA/wcF + AP8AAAD/AAAA+QAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAB0AAAA/wAAAP8AAAD5AAAAVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEEAAAD0AAAA/wAAAPkAAABWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAPUAAAD/AAAA+QAAAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAA9AAAAP8AAAD5AAAAVQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAADqAAAA/wAAAPkAAABVAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAC8AAAA8AAA + AFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAFAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAP//////8AAIf//////wAAw///////AADh//////8AAPD//////wAA+H7/////AAD8AH////8AAP4A + P////wAA/gAf////AAD+AA////8AAP4AB////wAA/gAD////AAD+AAH///8AAP4AAP///wAA/gAAf/// + AAD+AAA///8AAP8AAB///wAA/4AAD///AAD/wAAH//8AAP/gAAP//wAA//AAAf//AAD/+AAA/n8AAP/8 + AAA8PwAA//4AABg/AAD//wAAAD8AAP//gAAAfwAA///AAAD/AAD//+AAAf8AAP//8AAD/wAA///4AAP/ + AAD///wAAf8AAP///gAA/AAA////AAB4AAD///+AADAAAP///8AAAAAA////gAABAAD///8CAAMAAP// + /gcABwAA///+D4APAAD///4fwB8AAP///j/gPwAA//////B/AAD/////4P8AAP/////B/wAA/////4P/ + AAD/////B/8AAP////8P/wAA/////5//AAAoAAAAQAAAAIAAAAABACAAAAAAAABCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAMgAAAJAAAABWAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA+gAAAPEAAAA2AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAD6AAAA8QAA + ADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAXAAAAPoAAADxAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA+gAAAPEAAAA2AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAD6AAAA8gAA + ADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAXAAAAPoAAADyAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA+gAAAPIAAAA3AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFsAAAD6AAAA8gAA + ADcAAAAAAAAAAAAAAAAAAAAGAAAAFgAAADQAAABaAAAAjwAAALgAAAArAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAWwAAAPoAAADyAAAAggAAAKoAAADQAAAA6wAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA7AAA + ACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhAAAA/wAAAP8AAAD/AAAA/wAAAP8BAAD/CQIA/woR + Af8NJwL/BA4B/wAAAP8AAADtAAAALwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANQAAAP8DAQD/OwwB/18T + Af99GQH/lB4C/6EgAv9IfQX/MJMG/yqBBf8FEAH/AAAA/wAAAO8AAAAxAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AFUAAAD/FQQA/6giAv+pIgL/qSIC/6kiAv+mJQL/OYsG/zCTBv8wkwb/K4IF/wURAf8AAAD/AAAA8AAA + ADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAACDAAAA/yMMAP+pIgL/qSIC/6kiAv+pIgL/nC4C/zGSBv8wkwb/MJMG/zCT + Bv8rgwX/BhIB/wAAAP8AAADwAAAANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArwAAAP8YMgL/oikC/6kiAv+pIgL/qSIC/4o+ + A/8wkwb/MJMG/zCTBv8wkwb/MJMG/yuDBf8GEwH/AAAA/wAAAPIAAAA3AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8AAAD/G1MD/4ZC + A/+pIgL/qSIC/6kiAv9yVQT/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/KoEM/gYUAf8AAAD/AAAA8gAA + ADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAQAAADpAAAA/yNqBP9XbgX/qSIC/6kiAv+pIgL/Vm8F/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/yRf + dfsrhQb/BhQB/wAAAP8AAADzAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAARAAAA9wAAAP8pfAX/OYsG/6UmAv+pIgL/qSIC/0KCBf8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8aN8v8LYch/yyGBf8HFgH/AAAA/wAAAPQAAAA+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAP8BBAD/LIgG/zCTBv+OPAP/qSIC/6Mo + Av82jQb/MJMG/zCTBv8wkwb/MJMG/zCTBv8vjw/+Fyfu/iVlaf8wkwb/LIYF/wcXAf8AAAD/AAAA9QAA + AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAD/AAAA/xZC + A/8wkgb/YWUE/6kiAv+XMgP/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/LYQm/BUh/f8bOsX/MJMG/zCT + Bv8shwX/CBgB/wAAAP8AAAD2AAAAQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAADAAAAkwAAAP4AAAD/FUAD/z2FBv+nJAL/hEUD/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/yhw + UPsVIP7/FiT1/y6LGP8wkwb/MJMG/yyIBv8IGQH/AAAA/wAAAPYAAABGAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACQAAAA/gAAAP8VPgL/lDMD/2heBP4wkwb/MJMG/zCR + Bv8UPwL/CyMB/y+PBv8hVYv5FSD+/xUg/v8nblb/MJMG/zCTBv8wkwb/LYkG/wgaAf8AAAD/AAAA9wAA + AEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAI0AAAD+AAAA/0AT + Af9NdgX/MJMG/zCRBv8TOwL/AAAA/wYUAf8vjgb/HDzB+xUg/v8VIP7/HUK1/zCTBv8wkwb/MJMG/zCT + Bv8tiQb/CRsB/wAAAP8AAAD3AAAASwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAigAAAP4AAAD/FDoC/y+PBv8TOwL/AAAA/wURAf8rggX/MJEK/hcr5/0VIP7/FSD+/xcn + 7/8vjhH/MJMG/zCTBv8wkwb/MJMG/y2KBv8JHQH/AAAA/wAAAPgAAABOAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACHAAAA/gAAAP8IFwH/AAAA/wYRAf8rggX/MJMG/y6I + HP0SHdD9CA1l/xQe8P8VIP7/KXZF/zCTBv8wkwb/MJMG/zCTBv8wkwb/LYsG/woeAf8AAAD/AAAA+AAA + AFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAIMAAAD+AAAA/wIG + AP8qgAX/MJMG/zCTBv8kbR/8AQIS/wAAAf8RGcj/FSD+/x5Ko/8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8tiwb/Ch8D/wAAAP8AAAD5AAAAUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1AAAA8QAAAP8BAQD/AAAA/wAA + AP8AAAD/AAAAlQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AFsAAAD/AAAA/wAAAP8AAAD/AAAAlQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAADAAAADvAAAA/wAAAP8AAAD/AAAAlAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADvAAAA/wAAAP8AAAD/AAAAlAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADvAAAA/wAAAP8AAAD+AAAAlAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADvAAAA/wAA + AP8AAAD+AAAAlAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AA4AAADqAAAA/wAAAP8AAAD+AAAAlAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAfAAAA/QAAAP8AAAD+AAAAlAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAI0AAADjAAAAiAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAA//////////h//////////D/////////+H/////////8P/////////4f/////////w/ + /////////h//////////DgP///////+AAf///////8AA////////wAB////////AAD///////8AAH/// + ////wAAP///////AAAf//////4AAA///////gAAB//////+AAAD//////4AAAH//////gAAAP//////A + AAAf/////+AAAA//////8AAAB//////4AAAD//////wAAAH//////gAAAP//////AAAAf/////+AAAA/ + /////8AAAB/w////4AAAD+D////wAAAHwP////gAAAGA/////AAAAAH////+AAAAA/////8AAAAH//// + /8AAAA//////4AAAH//////wAAA///////gAAD///////AAAH//////+AAAP//////8AAAf4/////4AA + A/D/////wAAB4P/////gAADA/////+AAAAD/////wAAAAf////+AgAAD/////wHAAAf////+A+AAD/// + //wH8AAf/////A/4AD/////8H/wAf/////9//gD/////////Af////////4D/////////Af////////4 + D/////////Af////////4D/////////gf////////+D/////////////KAAAAGAAAADAAAAAAQAgAAAA + AACAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAFAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAC6AAAA6wAA + ANQAAACdAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAALAAAAuQAAAP8AAAD/AAAA4AAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAALkAAAD/AAAA/wAA + AOAAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAsAAAC8AAAA/wAAAP8AAADZAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAuQAAAP8AAAD/AAAA4AAA + ABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAADQAAALkAAAD/AAAA/wAAAOAAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAC8AAAA/wAAAP8AAADZAAAAIwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAALAAAAuQAAAP8AAAD/AAAA4AAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAALkAAAD/AAAA/wAAAOAAAAAjAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAsAAAC8AAAA/wAAAP8AAADaAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAuQAAAP8AAAD/AAAA4AAAABwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAA + ALkAAAD/AAAA/wAAAOAAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAQAAAATAAAAJAAAAEgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAC8AAAA/wAAAP8AAADaAAAAIwAAAAAAAAAAAAAAAwAA + AAkAAAAVAAAANQAAAFkAAACDAAAAsQAAANkAAADrAAAA+gAAAP8AAADLAAAAGAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAuAAA + AP8AAAD/AAAA4gAAAHUAAACoAAAAzgAAAOgAAAD8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA1AAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAALgAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANYAAAAaAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAD0AAAA/wAA + AP8AAAD/AAAA/wAAAP8BAAD/BQEA/wkCAP8cBQD/MwsA/x88A/8fXgT/JnQF/wwlAf8AAAD/AAAA/wAA + AP8AAADQAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAB0AAAD3AAAA/wAAAP8fBgD/QA0A/2QUAf+DGgL/lB4C/6QhAv+pIgL/pSYC/z2H + Bv8wkwb/MJMG/y+OBv8MJgH/AAAA/wAAAP8AAAD/AAAA2QAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAD8AAAA/wEAAP+YHgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/nysC/zGSBv8wkwb/MJMG/zCTBv8uiwb/Dy0C/wAAAP8AAAD/AAAA/wAA + ANsAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AFUAAAD/AAAA/wsCAP+iIAL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/jTwD/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/LowG/w0pAv8AAAD/AAAA/wAAAP8AAADWAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAD/AAAA/xYIAP+lIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/eU8E/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+PBv8NKgH/AAAA/wAAAP8AAAD/AAAA3gAA + ABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALMAAAD/AAAA/w0i + Af+aLwP/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/YGYE/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8ujQb/EDEC/wAAAP8AAAD/AAAA/wAAAN8AAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABAAAANEAAAD/AAAA/xQ8Av94TwP/qSIC/6kiAv+pIgL/qSIC/6kiAv+oIwL/SHwF/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/Lo0G/w8uAv8AAAD/AAAA/wAAAP8AAADaAAAAJAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAOcAAAD/AAAA/x1XBP9OdwX/qSIC/6ki + Av+pIgL/qSIC/6kiAv+iKAL/PIgG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+O + Cf4PMAL/AAAA/wAAAP8AAAD/AAAA4gAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA + APsAAAD/AAEA/yRwBf83jQb/nC0C/6kiAv+pIgL/qSIC/6kiAv+ZMQL/M5AG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/yVmZfktjAr/EjYC/wAAAP8AAAD/AAAA/wAAAOQAAAAoAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAP8AAAD/AQMA/yl9Bf8wkwb/fkoD/6kiAv+pIgL/qSIC/6ki + Av+GQwP/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJII/xs6w/sthiL/Lo4G/xAy + Av8AAAD/AAAA/wAAAP8AAADfAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAP8AAAD/AgYA/y2K + Bv8wkwb/VXEF/6kiAv+pIgL/qSIC/6kiAv9sWgT+MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/L48P/hcr5/wlZmf/MJMG/y+QBv8RMwL/AAAA/wAAAP8AAAD/AAAA5wAAACQAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAbAAAAP8AAAD/BQ8B/zCSBv8wkwb/N4wG/6MnAv+pIgL/qSIC/6kiAv9WbwX/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/LYcg/BUh/f4cPb7/MJMH/zCTBv8vjwb/EzoC/wAA + AP8AAAD/AAAA/wAAAOcAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkgAAAP8AAAD/CBkB/zCRBv8wkwb/MZIG/4o+ + A/+pIgL/qSIC/6kiAv9DgQX/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/KXRI+hUg + /v8XJ+7/Logd/zCTBv8wkwb/Lo8G/xI2Av8AAQD/AAAA/wAAAP8AAADjAAAALwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtgAA + AP8AAAD/AAEA/xQ+Av8wkQb/MJMG/1trBf+pIgL/qSIC/6QnAv81jgb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/JF53+RUg/v8VIP7/J2tb/zCTBv8wkwb/MJMG/y+RBv8SOAL/AAAA/wAA + AP8AAAD/AAAA6gAAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAOsAAAD/AAAA/wABAP8UPQP/L5AG/zuJBv+kJgL/qSIC/5Y0 + A/8ykQb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/HkWu+BUg/v8VIP7/HUSx/zCT + Bv8wkwb/MJMG/zCTBv8vjwb/FD8C/wAAAP8AAAD/AAAA/wAAAOsAAAAzAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAADpAAAA/wAA + AP8AAQD/FDwC/y+QBv+POgP/qSIC/4NFA/4wkwb/MJMG/zCTBv8wkwb/MJMG/y+RBv8tiwb/L5EG/zCT + Bv8wkQv9GTDa/BUg/v8VIP7/Fijs/y+OD/8wkwb/MJMG/zCTBv8wkwb/L5AG/xM7Av8AAQD/AAAA/wAA + AP8AAADnAAAANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAwAAAA6AAAAP8AAAD/AAAA/xM4Av9oWwT/qSIC/2dgBP4wkwb/MJMG/zCT + Bv8wkwb/L5AG/xI2Av8BBAD/FkIC/zCTBv8tiB39Fyfv/RUg/v8VIP7/FSH8/yp3Qv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCSBv8UPQL/AAAA/wAAAP8AAAD/AAAA7QAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAOcAAAD/AAAA/wAA + AP8jKAL/oiMC/0x4Bf4wkwb/MJMG/zCTBv8ujgb/EjYC/wAAAP8AAAD/CRsB/zCTBv8qezr5FSD9/hUg + /v8VIP7/FSD+/x9Ko/8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8vkAb/FkMC/wABAP8AAAD/AAAA/wAA + AO4AAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACwAAADmAAAA/wAAAP8BAAD/PA8B/zuEBv8wkwb/MJMG/y+QBv8SNgL/AAEA/wAA + AP8CBwD/ImcF/zCTBv8kYm/3FSD+/xUg/v8VIP7/FSD+/xcr5f8vjw//MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/L5AG/xVAAv8AAQD/AAAA/wAAAP8AAADqAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAA5QAAAP8AAAD/AAAA/xE0 + Av8vkAb/L5AG/xE0Av8AAAD/AAAA/wEEAP8jawX/MJMG/zCTBv8fSaP5FSD+/xUg/v8VIP7/FSD+/xUg + /v8qezn/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCSBv8WQgP/AAEA/wAAAP8AAAD/AAAA8AAA + ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAKAAAAOMAAAD/AAAA/wAAAP8RMwL/ETUC/wAAAP8AAAD/AgcA/yNrBP8wkwb/MJMG/zCT + Bv8aNs75FB7y/xIb2v8VIPr/FSD+/xUg/v8iV4f/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8vkQb/GEgC/wABAP8AAAD/AAAA/wAAAPEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcAAADiAAAA/wAAAP8AAAD/AAAA/wAA + AP8CBwD/IWYE/zCTBv8wkwb/MJMG/y+QDvwUI9f8BAc1/wAABP8LEYX/FSD+/xUg/v8ZMtb/L5EM/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/L5EG/xZEA/8BAgD/AAAA/wAAAP8AAADuAAAAQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkAAAA4QAAAP8AAAD/AAAA/wAAAP8iaAT/MJMG/zCTBv8wkwb/MJMG/yp+HPsECCX+AAAA/wAA + AP8HClX/FSD+/xUg/v8VIvn/LIEt/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCS + Bv8XRgP/AAEA/wAAAP8AAAD/AAAA8gAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAN4AAAD/AAAA/wAAAP8QMAL/LowG/zCT + Bv8wkwb/K4UF/wgYAf8AAAD/AAAA/wMEI/8SHOD/FSD+/xUg/v8VIP7/I1p//zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8lmz/4A2F3/QACAv8AAAD/AAAA/wAAAPMAAABGAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACIAAADeAAAA/wAAAP8AAAD/Dy4C/y6OBv8rhQX/CR0B/wAAAP8AAAD/AwQi/xMc3v8VIP7/FSD+/xUg + /v8VIP7/GjfL/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMJ/h6kZPYDvvP9Ab78/wBg + gP8AAwT/AAAA/wAAAP8AAADwAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAQAAAAxQAAAP8AAAD/AAAA/wUOAf8tiAb/MJMG/zCTBv8wkwb/L48G/w8uAf8AAAD/AAAA/wIG + AP8qfgX/ZWEE+agjAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av9uFgH/BAEA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAiAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAMIAAAD/AAAA/wAAAP8JHQH/K4QF/zCT + Bv8ujQb/EDAC/wAAAP8AAAD/AwkA/yVwBf8wkwb/MZIG/19nBPqlJQL+qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+oIgL/Tg8B/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAACAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AA8AAADDAAAA/wAAAP8AAAD/CRwB/yuDBf8QMQL/AAAA/wAAAP8DCQH/I2wE/zCTBv8wkwb/MJMG/zCT + Bv9daAX6pCYC/qkiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv90FwL/CAIA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/AAAAIcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAvQAAAP8AAAD/AAAA/wIHAP8AAAD/AAAA/wIG + AP8lcAX/MJMG/zCTBv8wkwb/MJMG/yuGBv8PLQL/OyQC+qUkAv6pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/3gYAv8GAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAiAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAA + ALsAAAD/AAAA/wAAAP8AAAD/AwkA/yVxBf8wkwb/MJMG/zCTBv8wkwb/KoEF/wYUAf8AAAD/AQMA/0hh + BPqhKQL+qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/dBcB/wUBAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAACAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAC8AAAA/wAAAP8AAAD/BhIB/yyEBf8wkwb/MJMG/zCT + Bv8qgQX/CBgB/wAAAP8AAAD/CBkB/y6NBv9NdwX7nysC/akiAv+pIgL/qSIC/6kiAv90FwL/CAIA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAALMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAtwAA + AP8AAAD/AAAA/wYUAP8rhAb/MJMG/yuFBv8GFAD/AAAA/wAAAP8IGAH/K4QG/zCTBv8wkwj/LpVm+EGE + nvlRdYf5YGdw+V4vJ/sGAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAABRAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAALQAAAD+AAAA/wAAAP8HFgH/JG8F/wYUAf8AAAD/AAAA/wgZ + Af8rhAX/MJMG/y6VEf0SsKT6AcD9/gHA//8BwP//AYSv/wAGCP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEB + AP8EAwD/AAAA/wAAAP8AAAD1AAAAWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAC1AAAA/gAA + AP8AAAD/AQMA/wAAAP8AAAD/CBgB/yuEBv8wkwb/Kpgk/Au2yvsBwP//AcD//wHA//8BhK//AAkM/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AgIA/15IAP9+YQD/BwYA/wAAAP8AAAD/AAAA9gAAAFIAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAIAAAArgAAAP8AAAD/AAAA/wAAAP8HFwH/LIQG/zCTBv8lnkT7Bbzo/QHA + //8BwP//AcD//wGHtP8ABgn/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQD/XkgA/8aZAP/HmgD/h2gA/wQD + AP8AAAD/AAAA/wAAAPkAAABSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAKsAAAD+AAAA/wAA + AP8FEQH/KH0I/xundPoDvvf+AcD//wHA//8BwP//AYOu/wAGCP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEB + AP9kTQD/xZgA/8eaAP/HmgD/x5oA/4doAP8HBgD/AAAA/wAAAP8AAAD2AAAAWgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAACMAAAAZAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcAAACuAAAA/gAAAP8AAAD/AxYS/wGm2/8BwP//AcD//wHA//8Bg67/AAkM/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AgIA/15JAP/EmAD/x5oA/8eaAP/HmgD/x5oA/8eaAP+AYwD/BwYA/wAA + AP8AAAD/AAAA9gAAAFIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAaAAAAwgAAAPsAAADwAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAApwAAAP8AAAD/AAAA/wAT + GP8Bptz/AcD//wGHs/8ABgn/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQD/XkkA/8aZAP/HmgD/x5oA/8ea + AP/HmgD/x5oA/8eaAP/HmgD/h2gA/wQDAP8AAAD/AAAA/wAAAPoAAABSAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAADXAAAA/wAAAP8AAAD/AAAA9wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAACAAAAKQAAAD+AAAA/wAAAP8AFh7/AGyQ/wAGCP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEB + AP9kTQD/xZgA/8eaAP/HmgD/x5oA/8eaAP/HmgD/x5oA/8eaAP/HmgD/x5oA/4dpAP8HBgD/AAAA/wAA + AP8AAAD2AAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAANcAAAD/AAAA/wAA + AP8AAAD/AAAA/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAACmAAAA/gAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AgIA/15JAP/EmAD/x5oA/8eaAP/HmgD/x5oA/8eaAP/LoRL/38Zv/+jV + lP/avFX/yZ4J/8eaAP+AZAD/BwYA/wAAAP8AAAD/AAAA9gAAAFMAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAaAAAAzwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAFAAAAngAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/KSAA/8SYAP/HmgD/x5oA/8ea + AP/HmgD/x5oA/8yjFv/38Nn/////////////////9OzN/8uhEv/HmgD/h2kA/wQDAP8AAAD/AAAA/wAA + APoAAABSAAAAAAAAAAAAAAAAAAAAAAAAABQAAADXAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADtAAAANgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEwAAAD2AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAhQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAABsAAADfAAAA/wAAAP8AAAD/TTwA/8WYAP/HmgD/0Ksr//v47f///vz/4sp6/8ea + AP/HmgD/x5oA/8eaAP/HmgD/x5oA/7eNAP8fGAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADtAAAANgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAUQAAAPcAAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAAB+AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAA2AAAAP8AAAD/AQEA/008 + AP/OqjP/+vXm//7+/P/gyHT/x5sC/8eaAP/HmgD/x5oA/8eaAP/HmgD/sooA/x8YAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAO0AAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAA8wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/AAAAIQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAIgAAAN8AAAD/AAAA/wAAAP9pZ2H/+Pf1/+LLe//HmwL/x5oA/8eaAP/HmgD/x5oA/8ea + AP+xiQD/JRwA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7AAAADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAADfAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAhQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAADfAAAA/wAAAP8BAQH/V00s/8WZ + Af/HmgD/x5oA/8eaAP/HmgD/x5oA/7eNAP8eFwD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAANQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAD0AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAAB9AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAhAAAA2AAAAP8AAAD/AQEA/008Af/ClgD/x5oA/8eaAP/HmgD/sooA/x4YAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAOwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAADOAAAA/wAAAP8AAAD/AAAA/AAAAIQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAN8AAAD/AAAA/wAAAP9UQQD/wpYA/8ea + AP+xiQD/JBwA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7AAAADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAA1wAAAP8AAAD0AAAAegAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ABoAAADfAAAA/wAAAP8AAAD/TTwA/7SLAP8eFwD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAANQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA + AB8AAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAA1wAAAP8AAAD/AQEA/w0KAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAOwAAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAA + AN4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7AAAADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAD5AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAANQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAANgAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAOwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAcAAAA0QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7AAAADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAADZAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAANAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAANkAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAOwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAcAAAA0QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA6wAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAADZAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADrAAAANAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAANkAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAOsAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA6wAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAP8AAAD/AAAA/wAAAP8AAADrAAAAMwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAA + AO4AAAD/AAAA/wAAAOoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAACNAAAAiwAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////wP/ + /////////////4H//////////////8D//////////////+B///////////////A///////////////gf + //////////////wP//////////////4H//////////////8D//////////////+B///////////////A + ///////////////gf+D////////////wMAB////////////4AAA////////////8AAAf///////////+ + AAAP///////////+AAAH///////////+AAAD///////////+AAAB///////////+AAAA///////////+ + AAAAf//////////8AAAAP//////////8AAAAH//////////8AAAAD//////////8AAAAB//////////8 + AAAAA//////////8AAAAAf/////////8AAAAAP/////////8AAAAAH/////////8AAAAAD/////////+ + AAAAAB//////////AAAAAA//////////gAAAAAf/////////wAAAAAP/////////4AAAAAH///////// + 8AAAAAD/////////+AAAAAB//////////AAAAAA//////////gAAAAAf/////////wAAAAAP//////// + /4AAAAAH/////////8AAAAAD/////////+AAAAAB//////////AAAAAA//wf//////gAAAAAP/gf//// + //wAAAAAH/Af//////4AAAAAH+Af//////8AAAAAB8Af//////+AAAAAA4Af///////AAAAAAQA///// + ///gAAAAAAB////////wAAAAAAD////////4AAAAAAH////////8AAAAAAP////////+AAAAAAf///// + ////AAAAAA//////////gAAAAB//////////wAAAAD//////////4AAAAD//////////8AAAAB////// + ////+AAAAAf//////////AAAAAf//////////gAAAAP/8P///////wAAAAD/4P///////4AAAAD/wP// + /////8AAAAB/gP///////+AAAAAfAP////////AAAAAeAP////////gAAAAMAf////////AAAAAAA/// + /////+AAAAAAB////////8AIAAAAD////////4AcAAAAH////////wA+AAAAP////////AB/AAAAf/// + /////AD/gAAA////////+AH/wAAB////////+AP/4AAD////////+Af/8AAH/////////A//+AAP//// + /////h///AAf/////////////gA//////////////wB//////////////gD//////////////AH///// + ////////+AP/////////////8Af/////////////4A//////////////wB//////////////gD////// + ////////gH//////////////gP//////////////gf//////////////w////////////////////ygA + AACAAAAAAAEAAAEAIAAAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACkAAAC8AAAAqQAAAGwAAAA1AAAAHQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAA + AP0AAADuAAAAuwAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwAAAABUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AEIAAADsAAAA/wAAAP8AAAD+AAAAwAAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwAAA + ABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwAAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAA + AP8AAAD+AAAAwAAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwAAAABUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AEIAAADsAAAA/wAAAP8AAAD+AAAAwAAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwQAA + ABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAA + AP8AAAD+AAAAwQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwQAAABUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AEIAAADsAAAA/wAAAP8AAAD+AAAAwQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEIAAADsAAAA/wAAAP8AAAD+AAAAwQAA + ABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAEEAAADsAAAA/wAAAP8AAAD+AAAAwQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAANAAAABgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEEAAADsAAAA/wAA + AP8AAAD+AAAAwgAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA + ABUAAAAjAAAAOwAAAGoAAACcAAAAyQAAAN0AAAClAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEEAAADsAAAA/wAAAP8AAAD+AAAAwgAAABYAAAAAAAAAAAAA + AAIAAAAPAAAAHQAAAC0AAABUAAAAhgAAALcAAADWAAAA5gAAAPQAAAD+AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAACqAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AEEAAADsAAAA/wAAAP8AAAD+AAAAxwAAAHIAAAChAAAAzAAAAN8AAADtAAAA+wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAACrAAAADAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEEAAADsAAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP4AAACuAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAEIAAADyAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8BBAD/BAwA/wYUAf8IGQH/AQIA/wAAAP8AAAD/AAAA/wAAAP4AAACwAAAADgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAANsAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AQAA/wkCAP8SBAD/HQUA/zYLAP9WEQH/chwB/zVvBP8rhAX/LowG/y+P + Bv8WRAL/AQIA/wAAAP8AAAD/AAAA/wAAAP4AAACzAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAWAAAA5wAAAP8AAAD/AAAA/xADAP8oCAD/Rw4B/2cVAf+GGwL/kx4C/50f + Av+mIQL/qSIC/6kiAv+cLgL/OYoG/zCTBv8wkwb/MJMG/y+QBv8XRgP/AQIA/wAAAP8AAAD/AAAA/wAA + AP4AAAC2AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAADzAAAA/wAA + AP8AAAD/cxcC/6giAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/5Q2A/8ykQb/MJMG/zCT + Bv8wkwb/MJMG/y+QBv8XSAP/AQIA/wAAAP8AAAD/AAAA/wAAAP4AAAC4AAAAEQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAP0AAAD/AAAA/wMBAP+LHAL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/fkoD/jCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+QBv8YSQP/AQIA/wAA + AP8AAAD/AAAA/wAAAP4AAAC6AAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbAAAA/wAA + AP8AAAD/CwIA/5UeAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv9jYwT+MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+RBv8YSgP/AQMA/wAAAP8AAAD/AAAA/wAAAP4AAAC8AAAAEgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUAAAD/AAAA/wAAAP8RBgD/myEC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qCMC/0p7Bf4wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+R + Bv8ZSwP/AQMA/wAAAP8AAAD/AAAA/wAAAP4AAAC9AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsQAA + AP8AAAD/AAAA/woVAf+QNAP/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+iKQL/P4UF/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+RBv8ZTgP/AQMA/wAAAP8AAAD/AAAA/wAA + AP4AAAC/AAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADTAAAA/wAAAP8AAAD/DSgC/2heBP+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/5owAv83jAb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/y+RBv8aUAP/AQMA/wAAAP8AAAD/AAAA/wAAAP4AAADCAAAAFgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAA + AOAAAAD/AAAA/wAAAP8VQgL/Q4AF/6QmAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/jzoD/jGS + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+RBv8aUQP/AQMA/wAA + AP8AAAD/AAAA/wAAAP4AAADEAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAA7QAAAP8AAAD/AAAA/x5aBP81jgb/ljMD/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv92UQP+MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+QCf4bUwT/AQMA/wAAAP8AAAD/AAAA/wAAAP8AAADGAAAAGAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACkAAAD5AAAA/wAAAP8AAAD/JXIF/zCTBv9yVQP/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/1pr + Bf4wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/J29S+S+P + C/8cVQT/AQQA/wAAAP8AAAD/AAAA/wAAAP8AAADIAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAP8AAAD/AAAA/wIGAP8pfgX/MJMG/0h8 + Bf+mJQL/qSIC/6kiAv+pIgL/qSIC/6kiAv+nJAL/RX8F/jCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTB/8dRqz5LYQm/y+RBv8cVgT/AQQA/wAAAP8AAAD/AAAA/wAA + AP8AAADKAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABxAAAA/wAAAP8AAAD/BA0B/yuFBf8wkwb/N4wG/5owAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6Ar + Av89hwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/L44R/Rkv + 2/0lZ2b/MJMG/y+RBv8cVwT/AQQA/wAAAP8AAAD/AAAA/wAAAP8AAADMAAAAHAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwAAAD/AAAA/wAAAP8HFAH/LowG/zCT + Bv8wkwb/fEwD/6kiAv+pIgL/qSIC/6kiAv+pIgL/mDID/zWPBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8thiH9Fyjs/Rw7wv8wkgn/MJMG/y+SBv8dWQT/AQUA/wAA + AP8AAAD/AAAA/wAAAP8AAADNAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAxQAAAP8AAAD/AAAA/woeAf8wkgb/MJMG/zCTBv9OdgX/qCMC/6kiAv+pIgL/qSIC/6ki + Av+IQQP+MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/yp8 + N/oVIfv+Fynr/y2HIP8wkwb/MJMG/y+SBv8dWwT/AQUA/wAAAP8AAAD/AAAA/wAAAP8AAADPAAAAHgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAADaAAAA/wAAAP8AAAD/EjUC/zCT + Bv8wkwb/MJMG/zqKBv+dLQL/qSIC/6kiAv+pIgL/qSIC/21aBP4wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/JWNs9xUg/v8VIP3/KHBT/zCTBv8wkwb/MJMG/zCS + Bv8eXAT/AQUA/wAAAP8AAAD/AAAA/wAAAP8AAADQAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAFgAAAOcAAAD/AAAA/wAAAP8PLwL/L48G/zCTBv8wkwb/MZIG/4REA/+pIgL/qSIC/6ki + Av+pIgL/U3IF/jCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8eSKf2FSD+/xUg/v8dQ7D/MJIH/zCTBv8wkwb/MJMG/zCSBv8eXQT/AgUA/wAAAP8AAAD/AAAA/wAA + AP8AAADSAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAA8gAAAP8AAAD/AAAA/wEC + AP8TOwL/L48G/zCTBv8wkwb/V28F/6giAv+pIgL/qSIC/6UmAv9CggX/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/L5EM/Rkz1PsVIP7/FSD+/xgs5P8uihn/MJMG/zCT + Bv8wkwb/MJMG/zCSBv8fXwT/AgYA/wAAAP8AAAD/AAAA/wAAAP8AAADUAAAAIgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAgAAAClAAAA/QAAAP8AAAD/AAAA/wEBAP8TOgL/L44G/zCTBv89hwX/oCoC/6ki + Av+pIgL/nS0C/zqKBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8uiRz8GCvn/BUg/v8VIP7/FSH7/yl4Q/8wkwb/MJMG/zCTBv8wkwb/MJMG/zCSBv8fYAT/AgcA/wAA + AP8AAAD/AAAA/wAAAP8AAADWAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAACjAAAA/QAA + AP8AAAD/AAAA/wABAP8SOAL/L44G/zKRBv+MPQP/qSIC/6kiAv+UNQP/MpEG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/yyALfsWI/f8FSD+/xUg/v8VIP7/H0ye/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCSBv8gYgT/AgcA/wAAAP8AAAD/AAAA/wAAAP8AAADYAAAAJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAACfAAAA/QAAAP8AAAD/AAAA/wABAP8SNwL/Lo4G/2Bm + BP+pIgL/qSIC/4BIA/4wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/L48G/yh6Bf8qgQX/MJIG/zCT + Bv8wkwb/J21Y9hUg/v8VIP7/FSD+/xUg/v8YLt7/LowU/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCS + Bv8hYwT/AgcA/wAAAP8AAAD/AAAA/wAAAP8AAADYAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAkAAACdAAAA/QAAAP8AAAD/AAAA/wABAP8RNQL/Pn4F/6MoAv+pIgL/ZWEE/jCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/y6MBv8QMgL/AQMA/wQKAP8jbQT/MJMG/zCTBv8gUZP1FSD+/xUg/v8VIP7/FSD+/xUi + +P8rfTb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCSBv8hZAT/AggA/wAAAP8AAAD/AAAA/wAA + AP8AAADZAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAACaAAAA/AAAAP8AAAD/AAAA/wAB + AP8UMQL/kDED/6giAv9LeQX+MJMG/zCTBv8wkwb/MJMG/zCTBv8ujAb/DzAC/wABAP8AAAD/AAAA/xE1 + Av8wkwb/MJII/ho3yfgVIP7/FSD+/xUg/v8VIP7/FSD+/yJViv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCSBv8hZQT/AwgA/wAAAP8AAAD/AAAA/wAAAP8AAADbAAAAKQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcAAACXAAAA/AAAAP8AAAD/AAAA/wABAP82DgD/myYC/z+EBf8wkwb/MJMG/zCT + Bv8wkwb/LowG/w8wAv8AAQD/AAAA/wAAAP8BAwD/Hl8E/zCTBv8uixb8GC3h/BUg/v8VIP7/FSD+/xUg + /v8VIP7/GTLW/y+PD/8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCSBv8hZwT/AwgA/wAA + AP8AAAD/AAAA/wAAAP8AAADcAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAACWAAAA/AAA + AP8AAAD/AAAA/wEAAP8tFgH/M4YG/zCTBv8wkwb/MJMG/y6MBv8PMAL/AAEA/wAAAP8AAAD/AQMA/xhK + A/8vkQb/MJMG/yyEJ/wWJfL8FSD+/xUg/v8VIP7/FSD+/xUg/v8WJfT/LIIs/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCSBv8iaAT/AwkA/wAAAP8AAAD/AAAA/wAAAP8AAADeAAAALQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAACUAAAA/AAAAP8AAAD/AAAA/wABAP8PLwL/LowG/zCT + Bv8ujAb/DzAC/wABAP8AAAD/AAAA/wEDAP8YSgP/L5AG/zCTBv8wkwb/KXVG9xUg/f4VIP7/FSD+/xUg + /v8VIP7/FSD+/xUg/v8jX3b/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCS + Bv8iagT/AwoA/wAAAP8AAAD/AAAA/wAAAP8AAADgAAAALwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcAAACRAAAA/AAAAP8AAAD/AAAA/wABAP8PLwL/K4QG/w8wAv8AAQD/AAAA/wAAAP8BAwD/GEoD/y+R + Bv8wkwb/MJMG/zCTBv8jWn/0FSD+/xUg/v8VIP7/FSD+/xUg/v8VIP7/FSD+/xo2zP8wkQv/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCSBv8jawT/AwoA/wAAAP8AAAD/AAAA/wAA + AP8AAADhAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAACNAAAA/AAAAP8AAAD/AAAA/wAB + AP8FDwH/AAEA/wAAAP8AAAD/AQMA/xlLA/8vkQb/MJMG/zCTBv8wkwb/MJMH/xw/uvQUHvL/CQ5y/wQH + O/8PFrL/FSD9/xUg/v8VIP7/Fyfv/y2FJf8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8jbAT/AwsA/wAAAP8AAAD/AAAA/wAAAP8AAADiAAAAMgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAUAAACKAAAA+wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEDAP8ZSwP/L5EG/zCT + Bv8wkwb/MJMG/zCTBv8vjhH7Fy7P+gYKUv8AAAH/AAAA/wIDGP8THeX/FSD+/xUg/v8VIP7/Jmhi/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8jbQT/BAsA/wAA + AP8AAAD/AAAA/wAAAP8AAADjAAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAACHAAAA+wAA + AP8AAAD/AAAA/wAAAP8AAAD/F0cD/y+RBv8wkwb/MJMG/zCTBv8wkwb/MJMG/yyDGPwIEUD8AAAB/wAA + AP8AAAD/AQIS/xIc4v8VIP7/FSD+/xUg/v8cPL//MJII/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8kbgT/BAsA/wAAAP8AAAD/AAAA/wAAAP8AAADlAAAANQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAACDAAAA+wAAAP8AAAD/AAAA/wAAAP8NKQH/LYkG/zCT + Bv8wkwb/MJMG/zCTBv8uiwb/Dy4D/wABAP8AAAD/AAAA/wABBf8LEYb/FSD8/xUg/v8VIP7/FSD+/xcp + 6f8tiB//MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y+T + CP4aeTj4ABAV/gAAAP8AAAD/AAAA/wAAAP8AAADmAAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAB2AAAA+gAAAP8AAAD/AAAA/wAAAP8AAAD/AAEF/wsR + hP8VH/r/FSD+/xUg/v8VIP7/FSD+/xUg/v8THvD/BgpN/wAAAf8AAAD/AAAA/xEzDf8wkwb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8ulRD9FquM8wK/+P0BwP//AcD//wHA//8BwP//AcD//wHA//8BwP//AcD//wHA + //8Bmcv/ABQb/wAAAP8AAAD/AAAA/wAAAP8AAADrAAAAQQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAMAAAByAAAA+QAAAP8AAAD/AAAA/wAAAP8DBB3+Ex3j/xUg/v8VIP7/FSD+/xUg/v8VIP7/Ex7w/wYK + Tf8AAAH/AAAA/wAAAP8AAQb/ESWI/y+NE/8wkwb/MJMG/zCTBv8wkwb/K5gi+g20u/UBwP3+AcD//wHA + //8BwP//AcD//wHA//8BwP//AcD//wHA//8BwP//AcD//wHA//8Bms3/ABUc/wAAAP8AAAD/AAAA/wAA + AP8AAADsAAAAQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABvAAAA+QAAAP8AAAD/AAAA/wAA + AP8EBzj/Ex3m/xUg/v8VIP7/FSD+/xMe8P8GCk3/AAAB/wAAAP8AAAD/AAEF/wsRiP8VIvT/K34z/zCT + Bv8wkwb/MJMH/yWdPvYHutz5AcD//wHA//8BwP//AcD//wHA//8BwP//AcD//wHA//8BwP//AcD//wHA + //8BwP//AcD//wHA//8Bm87/ABYd/wAAAP8AAAD/AAAA/wAAAP8AAADtAAAARAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAmAAAAmAAAAMwAAACpAAAANgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABaAAAA9QAAAP8AAAD/AAAA/wAAAP8DBSv/Ehvb/xMe + 7/8GCkv/AAAB/wAAAP8AAAD/AQMA/xpRA/8vkQb/MJMG/zCTBv8wkwb/MJMG/0KCBvuVMwL7qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+RHQL/GwUA/wAAAP8AAAD/AAAA/wAAAP8AAAD0AAAAVwAAAAIAAAAAAAAAAQAAAEEAAADsAAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAAQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAABYAAAA9AAAAP8AAAD/AAAA/wAAAP8DBSf/BQg+/wAAAf8AAAD/AAAA/wEDAP8aUQP/L5EG/zCT + Bv8wkwb/MJMG/zCTBv8wkwb/Lo4G/zZoBfuJJgL8qCIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+SHQL/HAUA/wAAAP8AAAD/AAAA/wAA + AP8AAAD0AAAAWQAAAAMAAABCAAAA7AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7AAA + AEIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABWAAAA8wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8BAwD/GlED/y+RBv8wkwb/MJMG/zCTBv8wkwb/MJMG/y2KBv8OKwL/AQIA/woC + AP95HAL9qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+THQL/HgYA/wAAAP8AAAD/AAAA/wAAAP8AAAD1AAAAhAAAAOwAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOwAAABCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAABUAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AQMA/xpRA/8vkQb/MJMG/zCT + Bv8wkwb/MJMG/zCTBv8tigb/DioB/wABAP8AAAD/AAAA/x0wAv2KPgP6qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+UHgL/HwYA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAAQgAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABRAAAA8gAA + AP8AAAD/AAAA/wAAAP8DCwH/KHoF/zCTBv8wkwb/MJMG/zCTBv8wkwb/LYoG/w4pAf8AAQD/AAAA/wAA + AP8BAwD/IWUE/ziLBvyGQwP5qCMC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+VHgL/IAYA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA7AAAAEIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAA8QAAAP8AAAD/AAAA/wAAAP8HFQH/KHsF/zCT + Bv8wkwb/MJMG/y2KBv8OKgH/AAEA/wAAAP8AAAD/AQMA/xtTBP8vkQb/MJMG/zaNBv2BSAP4qCMC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+VHgL/FgQA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOwAAABCAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAABNAAAA8AAAAP8AAAD/AAAA/wAAAP8HEwD/KHoF/zCTBv8tigb/DikB/wABAP8AAAD/AAAA/wED + AP8bUwT/L5EG/zCTBv8wkwb/MJMG/zWPBv17TQP4qCMC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qCIC/30ZAv8LAgD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAADsAAAAQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABKAAAA7wAAAP8AAAD/AAAA/wAA + AP8GEwD/JXEE/w4pAf8AAQD/AAAA/wAAAP8BAwD/G1ME/y+RBv8wkwb/MJMG/zCTBv8wkwb/MJMG/zOQ + Bv11UQP4pyMC/qkiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6gi + Av99GQL/DQIA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7AAAAEIAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAABIAAAA7gAAAP8AAAD/AAAA/wAAAP8CBgD/AAEA/wAAAP8AAAD/AQMA/xtT + BP8vkQb/MJMG/zCTBv8wkwb/MJMG/zCTBv8tiQb/EjkC/wwbAf5gKQL4pyMC/qkiAv+pIgL/qSIC/6ki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+oIgL/fRkC/w0CAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAOwAAABCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABFAAAA7QAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEDAP8bVAT/L5EG/zCTBv8wkwb/MJMG/zCTBv8wkwb/LYkG/w0n + Af8AAAD/AAAA/wcNAP5kUAP4piQC/qkiAv+pIgL/qSIC/6kiAv+pIgL/qSIC/6kiAv+pIgL/qCIC/30Z + Av8NAgD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADsAAAAQgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABDAAAA7QAAAP8AAAD/AAAA/wAAAP8AAAD/FkQD/y+R + Bv8wkwb/MJMG/zCTBv8wkwb/MJMG/y2JBv8NJwH/AAAA/wAAAP8AAAD/BA0A/y2DBf5iYwX4pSUC/qki + Av+pIgL/qSIC/6kiAv+pIgL/qSIC/6giAv99GQL/DQIA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA7AAAAEIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAABCAAAA7AAAAP8AAAD/AAAA/wAAAP8FEAD/JnUF/zCTBv8wkwb/MJMG/zCTBv8tiQb/DScB/wAA + AP8AAAD/AAAA/wEDAP8cVgT/MJIG/zGSBv9daQX5pCYC/akiAv+pIgL/qSIC/6kiAv+oIgL/fRkC/w0C + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACsAAAABwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABAAAAA6wAAAP8AAAD/AAAA/wAA + AP8FDwD/JnQF/zCTBv8wkwb/LYkG/w0nAf8AAAD/AAAA/wAAAP8BBAD/HFUE/y+RBv8wkwb/MJMG/y2V + GP0ulpf2PYil+Et7kPdZbXr4aF9k+GUvJvsNAgD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAPwAAACQAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAA+AAAA6gAAAP8AAAD/AAAA/wAAAP8EDgD/JXMF/y2IBv8NJwH/AAAA/wAA + AP8AAAD/AQQA/xxWBP8vkQb/MJMG/zCTBv8omi37CrfO+gHA/v8BwP//AcD//wG//v8Bjr3/AA4S/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPwAAACQAAAABgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA7AAAA6AAA + AP8AAAD/AAAA/wAAAP8EDQD/Ch0B/wAAAP8AAAD/AAAA/wEEAP8cVgT/L5EG/zCTBv8wkwj/IqBO+Qa7 + 5/wBwP//AcD//wHA//8Bv/7/AY69/wAOEv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8L + AP9AMQD/AgIA/wAAAP8AAAD/AAAA/wAAAPwAAACQAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAA5wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8BBAD/HFYE/y+RBv8wkwb/L5QM/hqoe/gCv/b9AcD//wHA//8BwP//Ab/+/wGOvP8ADhL/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8PCwD/lHMA/8GWAP9WQgD/AgIA/wAAAP8AAAD/AAAA/wAA + APwAAACQAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAA3AAAA5gAAAP8AAAD/AAAA/wAAAP8AAAD/AQQA/xxWBP8vkQb/MJMG/y2WGf0Rsar5Ar/8/gHA + //8BwP//AcD//wG//v8Bjrz/AA4S/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DwsA/5Rz + AP/GmgD/x5oA/8KXAP9WQgD/AgIA/wAAAP8AAAD/AAAA/wAAAPwAAACQAAAABgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1AAAA5QAAAP8AAAD/AAAA/wAA + AP8CBgD/JGwE/zCTBv8omi77CrfP+wHA/v8BwP//AcD//wHA//8Bv/7/AY28/wAOEv8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8LAP+UcwD/xpoA/8eaAP/HmwD/x5oA/8KXAP9WQgD/AgIA/wAA + AP8AAAD/AAAA/wAAAPwAAACQAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAzAAAA5AAAAP8AAAD/AAAA/wAAAP8ECwD/GnY1+wa85vwBwP//AcD//wHA + //8BwP//Ab/+/wGNvP8ADRL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8PCwD/lHMA/8aa + AP/HmgD/x5oA/8eaAP/HmgD/x5oA/8KXAP9WQgD/AgIA/wAAAP8AAAD/AAAA/wAAAPwAAACQAAAABgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAACgAAAGgAAADAAAAAtAAAAEoAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAA4wAA + AP8AAAD/AAAA/wAAAP8ADhL/AY28/wG//v8BwP//AcD//wG//v8Bjbz/AA0S/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/DwsA/5RzAP/GmgD/x5oA/8eaAP/HmgD/x5oA/8eaAP/HmgD/x5oA/8KX + AP9WQgD/AgIA/wAAAP8AAAD/AAAA/wAAAPwAAACQAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAACwAAAA/QAAAP8AAAD/AAAA+gAA + AHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxAAAA4gAAAP8AAAD/AAAA/wAAAP8ADRL/AYy6/wG/ + /v8Bv/7/AY68/wAOEv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8LAP+UcwD/xpoA/8ea + AP/HmgD/x5oA/8eaAP/HmgD/x5oA/8eaAP/HmgD/x5oA/8KXAP9WQgD/AgIA/wAAAP8AAAD/AAAA/wAA + APwAAACQAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAOAAAAsAAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + ALAAAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAAKgAAAALAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABeAAAA/AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8JBwD/g2UA/8aZAP/HmgD/x5oA/8eaAP/HmgD/x5oA/8qhEP/v4rf////+//7+ + /P/z6sr/482A/+zdqv/9+/b///7+/+jWl//ImwP/x5oA/8KXAP9XQwD/AgIA/wAAAP8AAAD/AAAA/wAA + APwAAACRAAAABgAAAAAAAAAAAAAAAAAAAA4AAACxAAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAACoAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQwAA + AO0AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JBwD/g2UA/8aZ + AP/HmgD/x5oA/8eaAP/KoRD/7+K2/////v/+/fr/48x+/8mdCP/HmgD/yJsC/9u+XP/+/vv//fv1/9Gs + LP/HmgD/x5oA/8KXAP9XQwD/AgIA/wAAAP8AAAD/AAAA/wAAAPwAAACRAAAABwAAAAAAAAAOAAAAsQAA + AP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAAqAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEMAAADtAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAADrAAAA0wAAAP4AAAD/AAAA/wAAAP8JBwD/g2UA/8aZAP/HmgD/yqEQ/+/itv////7//v36/+LL + ev/InAT/x5oA/8eaAP/HmgD/yqAO//jy3v//////482A/8eaAP/HmgD/x5oA/8KXAP9XRAD/AgIA/wAA + AP8AAAD/AAAA/wAAAPwAAACSAAAAFAAAALEAAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAA + AKgAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAARAAAAO0AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOsAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAUAAAAvwAAAP4AAAD/AAAA/wAAAP8IBwD/gWQA/8aZAP/HmgD/x5sB/9q7U//8+vP///////n1 + 5v/Trzb/x5oA/8eaAP/HmgD/x5oA/8eaAP/HmgD/x5oA/8eaAP+8kgD/PC4A/wEBAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD9AAAAqAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAEQAAADtAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADrAAAAQAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAvwAAAP4AAAD/AAAA/wAA + AP8IBwD/gmQA/8aZAf/au1P//Prz///////59eb/07A3/8eaAP/HmgD/x5oA/8eaAP/HmgD/x5oA/8ea + AP/HmgD/vJIA/zwuAP8BAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAAKgAAAALAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABEAAAA7QAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA6wAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAUAAAAvwAAAP4AAAD/AAAA/wAAAP8IBwD/jno1//r48f//////+fXm/9Ow + N//HmgD/x5oA/8eaAP/HmgD/x5oA/8eaAP/HmgD/x5oA/7ySAP88LgD/AQEA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP0AAACnAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABoAAAA/AAAAP8AAAD/AAAA/wAAAP8AAADqAAAAPwAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAUAAAAvwAAAP4AAAD/AAAA/wAAAP8IBwD/gWQA/8aZAP/HmgD/u5EA/zsu + AP8BAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAAKcAAAALAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAACQAAAA8wAA + AP8AAAD9AAAA2gAAADwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAvwAA + AP4AAAD/AAAA/wAAAP8IBgD/gWQA/7qQAP87LgD/AQEA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAACnAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAlAAAATgAAAD4AAAASAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAvwAAAP4AAAD/AAAA/wAAAP8IBgD/JRwA/wEB + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAApwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAATAAAAvwAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAA + AKcAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAvwAAAP4AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP0AAACnAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAiAAAA6QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAApgAA + AAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAALQAAAD+AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAAKYAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAA8AAAC0AAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP0AAACmAAAACgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAtAAAAP4AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD9AAAApgAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAADwAAALQAAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAAKYAAAAKAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAC0AAAA/gAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP0AAACmAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAPAAAAtAAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAApQAAAAoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAALUAAAD+AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/QAAAKUAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AA8AAAC1AAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP0AAAClAAAACgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAtAAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD9AAAApAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AIAAAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/QAAAKQAAAAKAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAA1AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP0AAACkAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAYAAADUAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAApAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAD+AAAA/wAAAP8AAAD/AAAA/QAA + AKMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAACwAAAKUAAAD1AAAA/wAAAPMAAACaAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAACUAAAAuAAAAIwAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////// + /////////////wH///////////////////8A////////////////////gH///////////////////8A/ + ///////////////////gH///////////////////8A////////////////////gH//////////////// + ///8A////////////////////gH///////////////////8A////////////////////gH////////// + /////////8A////////////////////gH///////////////////8A////////////////////gH//// + ///////////////8A//+P////////////////gH/gB////////////////8AwAAP//////////////// + gAAAB////////////////8AAAAP////////////////gAAAB////////////////8AAAAP////////// + //////AAAAB////////////////wAAAAP///////////////8AAAAB////////////////AAAAAP//// + ///////////wAAAAB///////////////8AAAAAP//////////////+AAAAAB///////////////gAAAA + AP//////////////4AAAAAB//////////////+AAAAAAP//////////////gAAAAAB////////////// + 4AAAAAAP/////////////+AAAAAAB//////////////AAAAAAAP/////////////wAAAAAAB//////// + /////8AAAAAAAP/////////////AAAAAAAB/////////////wAAAAAAAP////////////+AAAAAAAB// + ///////////wAAAAAAAP////////////+AAAAAAAB/////////////wAAAAAAAP////////////+AAAA + AAAB/////////////wAAAAAAAP////////////+AAAAAAAB/////////////wAAAAAAAP/////////// + /+AAAAAAAB/////////////wAAAAAAAP////////////+AAAAAAAB/////////////wAAAAAAAP///// + ///////+AAAAAAAB/////////////wAAAAAAAH////////////+AAAAAAAA/////////////wAAAAAAA + H////////////+AAAAAAAA/////////////wAAAAAAAH///f////////+AAAAAAAA//+A/////////wA + AAAAAAH//AP////////+AAAAAAAA//gB/////////wAAAAAAAH/wAf////////+AAAAAAAA/4AH///// + ////wAAAAAAAH8AB/////////+AAAAAAAA+AA//////////wAAAAAAAHAAP/////////+AAAAAAAAgAH + //////////wAAAAAAAAAD//////////+AAAAAAAAAB///////////wAAAAAAAAA///////////+AAAAA + AAAAf///////////wAAAAAAAAP///////////+AAAAAAAAH////////////wAAAAAAAD//////////// + +AAAAAAAB/////////////wAAAAAAA/////////////+AAAAAAAf/////////////wAAAAAAP/////// + //////+AAAAAAB//////////////wAAAAAAP/////////////+AAAAAAB//////////////4AAAAAAP/ + /////////////AAAAAAB//////////////4AAAAAAP//////////////AAAAAAB//8D//////////4AA + AAAAP/+A///////////AAAAAAB//AP//////////4AAAAAAP/gD///////////AAAAAAB/wA//////// + ///4AAAAAAP4AP///////////AAAAAAB8AD///////////wAAAAAAOAB///////////4AAAAAABAA/// + ////////8AAAAAAAAAf//////////+AAAAAAAAAP///////////AAIAAAAAAH///////////gAHAAAAA + AD///////////wAD4AAAAAB///////////4AB/AAAAAA///////////8AA/4AAAAAf//////////+AAf + /AAAAAP///////////gAP/4AAAAH///////////wAH//AAAAD///////////8AD//4AAAB////////// + //AB///AAAA////////////4A///4AAAf///////////+Af///AAAP////////////wf///4AAH///// + /////////////AAD//////////////////4AB///////////////////AA///////////////////gAf + //////////////////wAP//////////////////4AH//////////////////8AD///////////////// + /+AB///////////////////AA///////////////////gAf//////////////////wAP//////////// + //////4AH//////////////////+AD///////////////////AB///////////////////wA//////// + ///////////+Af///////////////////gP///////////////////8H//////////////////////// + //+JUE5HDQoaCgAAAA1JSERSAAABAAAAAQAIBgAAAFxyqGYAACAASURBVHic7Z13eFzFuf8/5+yuVtKq + y5Jl496opkMIqYCpCSGBcFO4gZSbDoGQm5489+aXhJDn3hRKuAkhoYRACKYYbIOxKQmhBJKAbTDNxg13 + SVYvu3vO/P4YyU1bzuyeXW15P8+j8EQ+c85I2u/3vPPOzDuWUgpBEMoTe7w7IAjC+CEGIAiCIBQtYeBK + 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 + f9gAAAAASUVORK5CYII= +</value> + </data> +</root> \ No newline at end of file diff --git a/64Injector.cs b/64Injector.cs new file mode 100644 index 0000000..6a6d555 --- /dev/null +++ b/64Injector.cs @@ -0,0 +1,700 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.IO; +using System.Text; +using System.Xml; + +namespace _64Inject +{ + public class _64Injector + { + public const string Release = "1.4 debug"; //CllVersionReplace "major.minor stability" + + public string BasePath; + public string ShortName; + public string LongName; + public bool DarkFilter; + public bool Widescreen; + public string Zoom; + public string InPath; + public string RomPath; + public string IniPath; + public string BootTvPath; + public string BootDrcPath; + public string IconPath; + public string OutPath; + public bool Encrypt; + + private VCN64 _base; + public RomN64 Rom; + private byte[] _ini; + public float Scale; + public BootImage BootTvImg; + public BootImage BootDrcImg; + public IconImage IconImg; + + public bool BaseIsLoaded + { + get { return _base != null; } + } + + public bool RomIsLoaded + { + get { return Rom != null && Rom.IsValid; } + } + + public bool IniIsLoaded + { + get { return _ini != null; } + } + + public string LoadedBase + { + get + { + if (_base != null) + return _base.ToString(); + else + return ""; + } + } + + public string ShortNameASCII + { + get + { + char[] array = Useful.Windows1252ToASCII(ShortName, '_').ToCharArray(); + char[] invalid = Path.GetInvalidFileNameChars(); + + for (int i = 0; i < array.Length; i++) + { + foreach (char c in invalid) + { + if (array[i] == c) + array[i] = '_'; + } + } + + return new string(array); + } + } + + public string TitleId + { + get + { + ulong crc; + + if (BaseIsLoaded) + crc = _base.HashCRC32; + else + crc = Cll.Security.ComputeCRC32(new byte[] { }, 0, 0); + + if (RomIsLoaded) + crc += Rom.HashCRC32; + else + crc += Cll.Security.ComputeCRC32(new byte[] { }, 0, 0); + crc >>= 1; + + if (IniIsLoaded) + crc += Cll.Security.ComputeCRC32(_ini, 0, _ini.Length); + else + crc += Cll.Security.ComputeCRC32(new byte[] { }, 0, 0); + crc >>= 1; + + byte[] b = BitConverter.GetBytes((uint)crc); + UInt16 id = (UInt16)((((b[3] << 8) + (b[2])) + ((b[1] << 8) + (b[0]))) >> 1); + + int flags = 0; + flags |= DarkFilter ? 0x80 : 0; + flags |= Widescreen ? 0x40 : 0; + flags |= Scale != 1.0F ? 0x20 : 0; + flags |= IconImg.IsDefault ? 0 : 0x10; + flags |= BootTvImg.IsDefault ? 0 : 8; + flags |= BootDrcImg.IsDefault ? 0 : 4; + + return "0005000064" + id.ToString("X4") + ((byte)(flags)).ToString("X2"); + } + } + + + public _64Injector() + { + BasePath = null; + ShortName = null; + LongName = null; + DarkFilter = true; + Widescreen = false; + Zoom = null; + InPath = null; + RomPath = null; + IniPath = null; + IconPath = null; + BootTvPath = null; + BootDrcPath = null; + OutPath = null; + Encrypt = true; + + _base = GetLoadedBase(); + Rom = null; + _ini = null; + Scale = 1.0F; + BootTvImg = new BootImage(); + BootDrcImg = new BootImage(); + IconImg = new IconImage(); + } + + public bool Inject() + { + _base = GetLoadedBase(); + bool _continue = BaseIsLoaded; + Cll.Log.WriteLine("The base is ready: " + _continue.ToString()); + + if (_continue) + _continue = InjectGameLayout(); + + if (_continue) + _continue = InjectImages(); + + if (_continue) + _continue = InjectMeta(); + + if (_continue) + _continue = InjectRom(); + + if (_continue) + { + if (Encrypt) + { + Cll.Log.WriteLine("Creating encrypted output."); + string inPath = Environment.CurrentDirectory + "\\base"; + _continue = NusContent.Encrypt(inPath, OutPath); + } + else + { + Cll.Log.WriteLine("Creating unencrypted output."); + _continue = Useful.DirectoryCopy("base", OutPath, true); + } + } + + if (_continue) + Cll.Log.WriteLine("Injection completed successfully!"); + else + Cll.Log.WriteLine("The injection failed.\nCheck the log file \"" + Cll.Log.Filename + "\"."); + + return _continue; + } + + private bool InjectGameLayout() + { + FileStream fs = null; + try + { + Cll.Log.WriteLine("Editing \"FrameLayout.arc\" file."); + + byte darkFilterB = (byte)(DarkFilter ? 1 : 0); + byte[] widescreenB = Widescreen ? + new byte[] { 0x44, 0xF0, 0, 0 } : + new byte[] { 0x44, 0xB4, 0, 0 }; + byte[] scaleB = BitConverter.GetBytes(Scale); + + byte[] magic = new byte[4]; + uint offset = 0; + uint size = 0; + byte[] offsetB = new byte[4]; + byte[] sizeB = new byte[4]; + byte[] nameB = new byte[0x18]; + + fs = File.Open("base\\content\\FrameLayout.arc", FileMode.Open); + fs.Read(magic, 0, 4); + + if (magic[0] == 'S' && + magic[1] == 'A' && + magic[2] == 'R' && + magic[3] == 'C') + { + fs.Position = 0x0C; + fs.Read(offsetB, 0, 4); + offset = (uint)(offsetB[0] << 24 | + offsetB[1] << 16 | + offsetB[2] << 8 | + offsetB[3]); + fs.Position = 0x38; + fs.Read(offsetB, 0, 4); + offset += (uint)(offsetB[0] << 24 | + offsetB[1] << 16 | + offsetB[2] << 8 | + offsetB[3]); + + fs.Position = offset; + fs.Read(magic, 0, 4); + + if (magic[0] == 'F' && + magic[1] == 'L' && + magic[2] == 'Y' && + magic[3] == 'T') + { + fs.Position = offset + 0x04; + fs.Read(offsetB, 0, 4); + offsetB[0] = 0; + offsetB[1] = 0; + offset += (uint)(offsetB[0] << 24 | + offsetB[1] << 16 | + offsetB[2] << 8 | + offsetB[3]); + fs.Position = offset; + + while (true) + { + fs.Read(magic, 0, 4); + fs.Read(sizeB, 0, 4); + size = (uint)(sizeB[0] << 24 | + sizeB[1] << 16 | + sizeB[2] << 8 | + sizeB[3]); + + if (magic[0] == 'p' && + magic[1] == 'i' && + magic[2] == 'c' && + magic[3] == '1') + { + fs.Position = offset + 0x0C; + fs.Read(nameB, 0, 0x18); + int count = Array.IndexOf(nameB, (byte)0); + string name = Encoding.ASCII.GetString(nameB, 0, count); + + if (name == "frame") + { + fs.Position = offset + 0x44;//Scale + fs.WriteByte(scaleB[3]); + fs.WriteByte(scaleB[2]); + fs.WriteByte(scaleB[1]); + fs.WriteByte(scaleB[0]); + fs.Position = offset + 0x48;//Scale + fs.WriteByte(scaleB[3]); + fs.WriteByte(scaleB[2]); + fs.WriteByte(scaleB[1]); + fs.WriteByte(scaleB[0]); + fs.Position = offset + 0x4C;//Widescreen + fs.Write(widescreenB, 0, 4); + } + else if (name == "frame_mask") + { + fs.Position = offset + 0x08;//Dark filter + fs.WriteByte(darkFilterB); + } + else if (name == "power_save_bg") + { + Cll.Log.WriteLine("\"FrameLayout.arc\" file editing successfully."); + return true; + } + + offset += size; + fs.Position = offset; + } + else if (offset + size >= fs.Length) + { + } + else + { + offset += size; + fs.Position = offset; + } + } + } + } + fs.Close(); + } + catch { Cll.Log.WriteLine("Error editing \"FrameLayout.arc\"."); } + finally { if (fs != null) fs.Close(); } + + return false; + } + + private bool InjectImages() + { + string currentDir = Environment.CurrentDirectory; + Bitmap bootTvImg; + Bitmap bootDrcImg; + Bitmap iconImg; + Bitmap tmp; + Graphics g; + + try + { + Cll.Log.WriteLine("Creating bitmaps."); + + if (BootTvPath != null) + tmp = new Bitmap(BootTvPath); + else + tmp = BootTvImg.Create(); + bootTvImg = new Bitmap(1280, 720, PixelFormat.Format24bppRgb); + g = Graphics.FromImage(bootTvImg); + g.DrawImage(tmp, new Rectangle(0, 0, 1280, 720)); + g.Dispose(); + tmp.Dispose(); + + if (BootDrcPath != null) + tmp = new Bitmap(BootDrcPath); + else + tmp = BootDrcImg.Create(); + bootDrcImg = new Bitmap(854, 480, PixelFormat.Format24bppRgb); + g = Graphics.FromImage(bootDrcImg); + g.DrawImage(tmp, new Rectangle(0, 0, 854, 480)); + g.Dispose(); + tmp.Dispose(); + + if (IconPath != null) + tmp = new Bitmap(IconPath); + else + tmp = IconImg.Create(); + iconImg = new Bitmap(128, 128, PixelFormat.Format32bppArgb); + g = Graphics.FromImage(iconImg); + g.DrawImage(tmp, new Rectangle(0, 0, 128, 128)); + g.Dispose(); + tmp.Dispose(); + + Cll.Log.WriteLine("Bitmaps created."); + } + catch + { + Cll.Log.WriteLine("Error creating bitmaps."); + return false; + } + + if (!NusContent.ConvertToTGA(bootTvImg, currentDir + "\\base\\meta\\bootTvTex.tga")) + { + Cll.Log.WriteLine("Error creating \"bootTvTex.tga\" file."); + return false; + } + if (!NusContent.ConvertToTGA(bootDrcImg, currentDir + "\\base\\meta\\bootDrcTex.tga")) + { + Cll.Log.WriteLine("Error creating \"bootDrcTex.tga\" file."); + return false; + } + if (!NusContent.ConvertToTGA(iconImg, currentDir + "\\base\\meta\\iconTex.tga")) + { + Cll.Log.WriteLine("Error creating \"iconTex.tga\" file."); + return false; + } + + Cll.Log.WriteLine("Injected TGA files."); + + return true; + } + + private bool InjectMeta() + { + string titleId = TitleId; + byte[] id = Useful.StrHexToByteArray(titleId, ""); + + XmlWriterSettings xmlSettings = new XmlWriterSettings + { + Encoding = new UTF8Encoding(false), + Indent = true, + IndentChars = " ", + NewLineChars = "\n", + NewLineHandling = NewLineHandling.Replace + }; + + XmlDocument xmlApp = new XmlDocument(); + XmlDocument xmlMeta = new XmlDocument(); + + try + { + Cll.Log.WriteLine("Editing \"app.xml\" and \"meta.xml\" files."); + + xmlApp.Load("base\\code\\app.xml"); + xmlMeta.Load("base\\meta\\meta.xml"); + + XmlNode app_title_id = xmlApp.SelectSingleNode("app/title_id"); + XmlNode app_group_id = xmlApp.SelectSingleNode("app/group_id"); + + XmlNode meta_product_code = xmlMeta.SelectSingleNode("menu/product_code"); + XmlNode meta_title_id = xmlMeta.SelectSingleNode("menu/title_id"); + XmlNode meta_group_id = xmlMeta.SelectSingleNode("menu/group_id"); + XmlNode meta_longname_en = xmlMeta.SelectSingleNode("menu/longname_en"); + XmlNode meta_shortname_en = xmlMeta.SelectSingleNode("menu/shortname_en"); + + app_title_id.InnerText = titleId; + app_group_id.InnerText = "0000" + id[5].ToString("X2") + id[6].ToString("X2"); + + meta_product_code.InnerText = "WUP-N-" + Rom.ProductCode; + meta_title_id.InnerText = titleId; + meta_group_id.InnerText = "0000" + id[5].ToString("X2") + id[6].ToString("X2"); + meta_longname_en.InnerText = LongName; + meta_shortname_en.InnerText = ShortName; + + XmlWriter app = XmlWriter.Create("base\\code\\app.xml", xmlSettings); + XmlWriter meta = XmlWriter.Create("base\\meta\\meta.xml", xmlSettings); + + xmlApp.Save(app); + xmlMeta.Save(meta); + + app.Close(); + meta.Close(); + + Cll.Log.WriteLine("\"app.xml\" and \"meta.xml\" files editing successfully."); + + return true; + } + catch + { + Cll.Log.WriteLine("Error editing \"app.xml\" and \"meta.xml\" files."); + } + + return false; + } + + private bool InjectRom() + { + bool injected = true; + + try + { + Cll.Log.WriteLine("Empty \"base\\content\\config\" folder."); + Directory.Delete("base\\content\\config", true); + Directory.CreateDirectory("base\\content\\config"); + + Cll.Log.WriteLine("Injecting INI data."); + if (IniIsLoaded) + { + FileStream fs = File.Open("base\\content\\config\\U" + Rom.ProductCodeVersion + ".z64.ini", FileMode.Create); + fs.Write(_ini, 0, _ini.Length); + fs.Close(); + Cll.Log.WriteLine("INI injected."); + } + else + { + File.Create("base\\content\\config\\U" + Rom.ProductCodeVersion + ".z64.ini").Close(); + Cll.Log.WriteLine("An empty INI injected."); + } + + Cll.Log.WriteLine("Empty \"base\\content\\rom\" folder."); + Directory.Delete("base\\content\\rom", true); + Directory.CreateDirectory("base\\content\\rom"); + + Cll.Log.WriteLine("Injecting ROM."); + if (RomN64.ToBigEndian(RomPath, "base\\content\\rom\\U" + Rom.ProductCodeVersion + ".z64")) + { + Cll.Log.WriteLine("Injected ROM."); + } + else + { + Cll.Log.WriteLine("ROM not injected, \"ToBigEndian\" failed."); + injected = false; + } + } + catch + { + Cll.Log.WriteLine("Error injecting ROM."); + injected = false; + } + + return injected; + } + + + #region Loads + + public bool LoadBase(string path) + { + if (Directory.Exists("base")) + { + Directory.Delete("base", true); + Cll.Log.WriteLine("Previous base deleted."); + } + + if (IsValidBase(path)) + { + Cll.Log.WriteLine("The \"" + path + "\" folder contains a valid base."); + Useful.DirectoryCopy(path, "base", true); + } + else if (IsValidEncryptedBase(path)) + { + Cll.Log.WriteLine("The \"" + path + "\" folder contains a valid encrypted base."); + NusContent.Decrypt(path, "base"); + } + else + Cll.Log.WriteLine("The \"" + path + "\" folder not contains a valid base."); + + _base = GetLoadedBase(); + + return BaseIsLoaded; + } + + public bool LoadIni(string filename) + { + FileStream fs = File.Open(filename, FileMode.Open); + _ini = new byte[fs.Length]; + fs.Read(_ini, 0, _ini.Length); + fs.Close(); + + if (Useful.IsUTF8(_ini)) + return true; + else + { + _ini = null; + return false; + } + } + + private VCN64 GetLoadedBase() + { + if (IsValidBase("base")) + { + FileStream fs = File.Open("base\\code\\VESSEL.rpx", FileMode.Open); + uint hash = Cll.Security.ComputeCRC32(fs); + fs.Close(); + + if (hash == VCN64.DonkeyKong64.HashCRC32) + return VCN64.DonkeyKong64; + else if (hash == VCN64.Ocarina.HashCRC32) + return VCN64.Ocarina; + else if (hash == VCN64.PaperMario.HashCRC32) + return VCN64.PaperMario; + else if (hash == VCN64.Kirby64.HashCRC32) + return VCN64.Kirby64; + else if (hash == VCN64.MarioTennis.HashCRC32) + return VCN64.MarioTennis; + else if (hash == VCN64.MarioGolf.HashCRC32) + return VCN64.MarioGolf; + else if (hash == VCN64.StarFox64.HashCRC32) + return VCN64.StarFox64; + else if (hash == VCN64.SinAndP.HashCRC32) + return VCN64.SinAndP; + else if (hash == VCN64.MarioKart64.HashCRC32) + return VCN64.MarioKart64; + else if (hash == VCN64.YoshiStory.HashCRC32) + return VCN64.YoshiStory; + else if (hash == VCN64.WaveRace64.HashCRC32) + return VCN64.WaveRace64; + else if (hash == VCN64.Majora.HashCRC32) + return VCN64.Majora; + else if (hash == VCN64.PokemonSnap.HashCRC32) + return VCN64.PokemonSnap; + else if (hash == VCN64.MarioParty2.HashCRC32) + return VCN64.MarioParty2; + else if (hash == VCN64.OgreBattle64.HashCRC32) + return VCN64.OgreBattle64; + else if (hash == VCN64.Excitebike64.HashCRC32) + return VCN64.Excitebike64; + else if (hash == VCN64.FZeroX.HashCRC32) + return VCN64.FZeroX; + else + { + Cll.Log.WriteLine("The base is valid but was not defined in the program code."); + return new VCN64(hash, "", "**Unidentified**"); + } + } + else + return null; + } + + #endregion + + #region Validations + + private bool IsValidBase(string path) + { + if (File.Exists(path + "\\code\\app.xml") && + File.Exists(path + "\\code\\cos.xml") && + File.Exists(path + "\\code\\VESSEL.rpx") && + Directory.Exists(path + "\\content\\config") && + Directory.Exists(path + "\\content\\rom") && + File.Exists(path + "\\content\\BuildInfo.txt") && + File.Exists(path + "\\content\\config.ini") && + File.Exists(path + "\\content\\FrameLayout.arc") && + File.Exists(path + "\\meta\\iconTex.tga") && + File.Exists(path + "\\meta\\bootTvTex.tga") && + File.Exists(path + "\\meta\\bootDrcTex.tga") && + File.Exists(path + "\\meta\\meta.xml")) + return true; + else + { + Cll.Log.WriteLine("The base is invalid."); + Cll.Log.WriteLine("Some of the following files or folders are missing:"); + Cll.Log.WriteLine(path + "\\code\\app.xml"); + Cll.Log.WriteLine(path + "\\code\\cos.xml"); + Cll.Log.WriteLine(path + "\\code\\VESSEL.rpx"); + Cll.Log.WriteLine(path + "\\content\\config"); + Cll.Log.WriteLine(path + "\\content\\rom"); + Cll.Log.WriteLine(path + "\\content\\BuildInfo.txt"); + Cll.Log.WriteLine(path + "\\content\\config.ini"); + Cll.Log.WriteLine(path + "\\content\\FrameLayout.arc"); + Cll.Log.WriteLine(path + "\\meta\\iconTex.tga"); + Cll.Log.WriteLine(path + "\\meta\\bootTvTex.tga"); + Cll.Log.WriteLine(path + "\\meta\\bootDrcTex.tga"); + Cll.Log.WriteLine(path + "\\meta\\meta.xml"); + return false; + } + } + + private bool IsValidEncryptedBase(string path) + { + string titleId = NusContent.CheckEncrypted(path); + if (titleId != null && + NusContent.CheckCommonKeyFiles() && + File.Exists("resources\\jnustool\\JNUSTool.jar")) + { + string name = NusContent.JNUSToolWrapper(path, 400, 32768, titleId, "/code/cos.xml"); + + if (name != null && File.Exists(name + "\\code\\cos.xml")) + { + XmlDocument xmlCos = new XmlDocument(); + xmlCos.Load(name + "\\code\\cos.xml"); + XmlNode cos_argstr = xmlCos.SelectSingleNode("app/argstr"); + + Directory.Delete(name, true); + + if (cos_argstr.InnerText == "VESSEL.rpx") + return true; + else + { + Cll.Log.WriteLine("\"" + path + "\" does not contain a N64 Wii U VC game."); + return false; + } + } + else if (name != null) + { + Cll.Log.WriteLine("The NUS CONTENT does not contains \"cos.xml\" file."); + Directory.Delete(name, true); + return false; + } + else + { + Cll.Log.WriteLine("JNUSToolWrapper could not decipher the NUS CONTENT."); + return false; + } + } + else + { + Cll.Log.WriteLine("Some of the following files are missing:"); + Cll.Log.WriteLine(path + "\\title.tmd"); + Cll.Log.WriteLine(path + "\\title.tik"); + Cll.Log.WriteLine(path + "\\title.cert"); + return false; + } + } + + public bool IsValidCode(string code) + { + if (code.Length == 4) + { + foreach (char c in code) + { + if ((c < 'A' || c > 'Z') && (c < '0' || c > '9')) + return false; + } + } + else + return false; + + return true; + } + + #endregion + } +} diff --git a/BootImage.cs b/BootImage.cs new file mode 100644 index 0000000..ad2cfae --- /dev/null +++ b/BootImage.cs @@ -0,0 +1,247 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; + +namespace _64Inject +{ + public class BootImage : IDisposable + { + private bool disposed = false; + + private Bitmap _frame; + private Bitmap _titleScreen; + + public Bitmap Frame + { + set + { + if (_frame != null) + _frame.Dispose(); + _frame = value; + } + get { return _frame; } + } + public Bitmap TitleScreen + { + set + { + if (_titleScreen != null) + _titleScreen.Dispose(); + _titleScreen = value; + } + get { return _titleScreen; } + } + public string NameLine1; + public string NameLine2; + public int Released; + public int Players; + public bool Longname; + public bool IsDefault; + + public BootImage() + { + _frame = null; + _titleScreen = null; + NameLine1 = null; + NameLine2 = null; + Released = 0; + Players = 0; + Longname = false; + IsDefault = true; + } + + ~BootImage() + { + Dispose(false); + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (!this.disposed) + { + if (disposing) + { + if (Frame != null) + { + Frame.Dispose(); + Frame = null; + } + if (TitleScreen != null) + { + TitleScreen.Dispose(); + TitleScreen = null; + } + } + disposed = true; + } + } + + public Bitmap Create() + { + Bitmap img = new Bitmap(1280, 720); + Graphics g = Graphics.FromImage(img); + g.PixelOffsetMode = PixelOffsetMode.Half; + //g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.SmoothingMode = SmoothingMode.AntiAlias; + g.CompositingMode = CompositingMode.SourceOver; + g.CompositingQuality = CompositingQuality.HighQuality; + g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; + + GraphicsPath nl1 = new GraphicsPath(); + GraphicsPath nl2 = new GraphicsPath(); + GraphicsPath r = new GraphicsPath(); + GraphicsPath p = new GraphicsPath(); + + Font font = new Font("Trebuchet MS", 10.0F, FontStyle.Regular, GraphicsUnit.Point); + Rectangle rectangleNL1 = Longname ? new Rectangle(578, 313, 640, 50) : new Rectangle(578, 340, 640, 50); + Rectangle rectangleNL2 = new Rectangle(578, 368, 640, 50); + Rectangle rectangleR = new Rectangle(586, 450, 250, 40); + Rectangle rectangleP = new Rectangle(586, 496, 200, 40); + SolidBrush brush = new SolidBrush(Color.FromArgb(32, 32, 32)); + Pen outlineBold = new Pen(Color.FromArgb(222, 222, 222), 5.0F); + Pen shadowBold = new Pen(Color.FromArgb(190, 190, 190), 7.0F); + Pen outline = new Pen(Color.FromArgb(222, 222, 222), 4.0F); + Pen shadow = new Pen(Color.FromArgb(190, 190, 190), 6.0F); + StringFormat format = new StringFormat(); + + g.Clear(Color.White); + + if (Frame == null) + { + GraphicsPath vc = new GraphicsPath(); + GraphicsPath n = new GraphicsPath(); + GraphicsPath sf = new GraphicsPath(); + GraphicsPath sfi = new GraphicsPath(); + + Font fontVC = new Font("Arial", 10.0F, FontStyle.Regular, GraphicsUnit.Point); + Font fontN64 = new Font("Arial Black", 10.0F, FontStyle.Regular, GraphicsUnit.Point); + Rectangle rectangleVC = new Rectangle(60, 105, 400, 50); + Rectangle rectangleN = new Rectangle(575, 239, 350, 60); + Rectangle rectangle64 = new Rectangle(902, 234, 72, 60); + Rectangle rectangle64I = new Rectangle(1075, 645, 150, 40); + SolidBrush brushVC = new SolidBrush(Color.FromArgb(147, 149, 152)); + SolidBrush brushN = new SolidBrush(Color.FromArgb(42, 65, 152)); + SolidBrush brush64 = new SolidBrush(Color.FromArgb(230, 0, 18)); + SolidBrush brush64I = new SolidBrush(Color.FromArgb(213, 213, 213)); + Pen outline64I = new Pen(Color.FromArgb(150, 150, 150), 2.0F); + + g.Clear(Color.FromArgb(226, 226, 226)); + g.FillRectangle(new SolidBrush(Color.FromArgb(200, 200, 200)), 61, 192, 1162, 421); + g.FillRectangle(new SolidBrush(Color.FromArgb(226, 226, 226)), 66, 197, 1152, 411); + + vc.AddString("Virtual Console", fontVC.FontFamily, + (int)(FontStyle.Bold | FontStyle.Italic), + g.DpiY * 37.4F / 72.0F, rectangleVC, format); + g.FillPath(brushVC, vc); + + n.AddString("NINTENDO", fontN64.FontFamily, + (int)(FontStyle.Bold), + g.DpiY * 40.0F / 72.0F, rectangleN, format); + g.FillPath(brushN, n); + + sf.AddString("64", fontN64.FontFamily, + (int)(FontStyle.Bold), + g.DpiY * 31.0F / 72.0F, rectangle64, format); + g.FillPath(brush64, sf); + + sfi.AddString("64Inject", font.FontFamily, + (int)(FontStyle.Regular), + g.DpiY * 26.0F / 72.0F, rectangle64I, format); + g.DrawPath(outline64I, sfi); + g.FillPath(brush64I, sfi); + } + + if (TitleScreen != null) + { + if (TitleScreen.Width > TitleScreen.Height) + { + g.DrawImage(TitleScreen, 131, 249, 400, 300); + } + else if (TitleScreen.Width < TitleScreen.Height) + { + g.FillRectangle(new SolidBrush(Color.Black), 131, 249, 400, 300); + g.DrawImage(TitleScreen, 218, 249, 225, 300); + } + else + { + g.FillRectangle(new SolidBrush(Color.Black), 131, 249, 400, 300); + //g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.DrawImage(TitleScreen, new Rectangle(203, 271, 256, 256)); + //g.InterpolationMode = InterpolationMode.Default; + } + } + else + g.FillRectangle(new SolidBrush(Color.Black), 131, 249, 400, 300); + + if (Frame != null) + g.DrawImage(Frame, new Rectangle(0, 0, 1280, 720)); + + if (NameLine1 != null && NameLine2 != null) + { + if (Longname) + { + nl1.AddString(NameLine1, font.FontFamily, + (int)(FontStyle.Bold), + g.DpiY * 37.0F / 72.0F, rectangleNL1, format); + g.DrawPath(shadowBold, nl1); + g.DrawPath(outlineBold, nl1); + g.FillPath(brush, nl1); + nl2.AddString(NameLine2, font.FontFamily, + (int)(FontStyle.Bold), + g.DpiY * 37.0F / 72.0F, rectangleNL2, format); + g.DrawPath(shadowBold, nl2); + g.DrawPath(outlineBold, nl2); + g.FillPath(brush, nl2); + } + else + { + nl1.AddString(NameLine1, font.FontFamily, + (int)(FontStyle.Bold), + g.DpiY * 37.0F / 72.0F, rectangleNL1, format); + g.DrawPath(shadowBold, nl1); + g.DrawPath(outlineBold, nl1); + g.FillPath(brush, nl1); + } + } + + if (Released > 1995) + { + r.AddString("Released: " + Released.ToString(), font.FontFamily, + (int)(FontStyle.Regular), + g.DpiY * 25.0F / 72.0F, rectangleR, format); + g.DrawPath(shadow, r); + g.DrawPath(outline, r); + g.FillPath(brush, r); + } + + if (Players > 0) + { + string pStr; + + if (Players == 4) + pStr = "1-4"; + else if (Players == 3) + pStr = "1-3"; + else if (Players == 2) + pStr = "1-2"; + else + pStr = "1"; + + p.AddString("Players: " + pStr, font.FontFamily, + (int)(FontStyle.Regular), + g.DpiY * 25.0F / 72.0F, rectangleP, format); + g.DrawPath(shadow, p); + g.DrawPath(outline, p); + g.FillPath(brush, p); + } + + return img; + } + } +} diff --git a/CllAssemblyVersion.exe b/CllAssemblyVersion.exe new file mode 100644 index 0000000..4cdaea7 Binary files /dev/null and b/CllAssemblyVersion.exe differ diff --git a/IconImage.cs b/IconImage.cs new file mode 100644 index 0000000..c80e683 --- /dev/null +++ b/IconImage.cs @@ -0,0 +1,139 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; + +namespace _64Inject +{ + public class IconImage : IDisposable + { + private bool disposed = false; + + private Bitmap _frame; + private Bitmap _titleScreen; + + public Bitmap Frame + { + set + { + if (_frame != null) + _frame.Dispose(); + _frame = value; + } + get { return _frame; } + } + public Bitmap TitleScreen + { + set + { + if (_titleScreen != null) + _titleScreen.Dispose(); + _titleScreen = value; + } + get { return _titleScreen; } + } + public bool IsDefault; + + public IconImage() + { + _frame = null; + _titleScreen = null; + IsDefault = true; + } + + ~IconImage() + { + Dispose(false); + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (!this.disposed) + { + if (disposing) + { + if (Frame != null) + { + Frame.Dispose(); + Frame = null; + } + if (TitleScreen != null) + { + TitleScreen.Dispose(); + TitleScreen = null; + } + } + disposed = true; + } + } + + public Bitmap Create() + { + Bitmap img = new Bitmap(128, 128); + Graphics g = Graphics.FromImage(img); + g.PixelOffsetMode = PixelOffsetMode.Half; + //g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.SmoothingMode = SmoothingMode.AntiAlias; + g.CompositingMode = CompositingMode.SourceOver; + g.CompositingQuality = CompositingQuality.HighQuality; + g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; + + GraphicsPath vc = new GraphicsPath(); + + Font font = new Font("Arial", 10.0F, FontStyle.Regular, GraphicsUnit.Point); + Rectangle rectangleVC = new Rectangle(0, 101, 128, 27); + Rectangle rectangleTS = new Rectangle(3, 9, 122, 92); + SolidBrush brush = new SolidBrush(Color.FromArgb(147, 149, 152)); + Pen pen = new Pen(Color.Black, 2.0F); + StringFormat format = new StringFormat(); + format.Alignment = StringAlignment.Center; + format.LineAlignment = StringAlignment.Center; + + g.Clear(Color.FromArgb(30, 30, 30)); + + if (TitleScreen != null) + { + if (TitleScreen.Width > TitleScreen.Height) + { + g.DrawImage(TitleScreen, 3, 9, 122, 92); + } + else if (TitleScreen.Width < TitleScreen.Height) + { + g.FillRectangle(new SolidBrush(Color.Black), 3, 9, 122, 92); + g.DrawImage(TitleScreen, 30, 9, 69, 92); + } + else + { + g.FillRectangle(new SolidBrush(Color.FromArgb(37, 37, 37)), 3, 9, 122, 92); + g.FillRectangle(new SolidBrush(Color.Black), 5, 11, 118, 88); + //g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.DrawImage(TitleScreen, new Rectangle(32, 23, 64, 64)); + //g.InterpolationMode = InterpolationMode.Default; + } + } + else + { + g.FillRectangle(new SolidBrush(Color.FromArgb(37, 37, 37)), 3, 9, 122, 92); + g.FillRectangle(new SolidBrush(Color.Black), 5, 11, 118, 88); + } + + if (Frame == null) + { + vc.AddString("Virtual Console.", font.FontFamily, + (int)(FontStyle.Bold | FontStyle.Italic), + g.DpiY * 9.2F / 72.0F, rectangleVC, format); + g.DrawPath(pen, vc); + g.FillPath(brush, vc); + } + else + g.DrawImage(Frame, new Rectangle(0, 0, 128, 128)); + + return img; + } + } +} diff --git a/Log.cs b/Log.cs new file mode 100644 index 0000000..ce59ee1 --- /dev/null +++ b/Log.cs @@ -0,0 +1,125 @@ +using System; +using System.Diagnostics; +using System.IO; + +namespace Cll +{ + public static class Log + { + public enum TabMode + { + None, + OnlyFirst, + ExceptFirst, + All + } + + private static string _filename; + public static string Filename { get { return _filename != null ? _filename : ""; } } + public static void SaveIn(String filename, bool clear = true) + { + if (filename != null && filename.Length > 0) + { + _filename = filename; + if (clear) + File.Delete(filename); + } + else + _filename = null; + } + + public static void Write(string value) + { + Debug.Write(value); + Console.Write(value); + if (_filename != null) + File.AppendAllText(_filename, value); + } + + public static void WriteLine(string value) + { + Debug.WriteLine(value); + Console.WriteLine(value); + if (_filename != null) + File.AppendAllText(_filename, value + "\r\n"); + } + + public static void WriteLine(string value, int width, int tab, TabMode mode) + { + int tabLength = GetTabLength(value); + string t = tab > 0 ? new string(' ', tab) : value.Substring(0, tabLength); + string s = value.Substring(tabLength, value.Length - tabLength); + string[] words = s.Split(new char[] { ' ' }); + + if (words.Length == 1) + WriteLine((mode == TabMode.All || mode == TabMode.OnlyFirst ? t : "") + s); + + else if (words.Length > 1) + { + int charCount = words[0].Length; + int start = 0; + int i = 1; + for (; i < words.Length; i++) + { + if ((mode == TabMode.All || mode == TabMode.OnlyFirst ? t.Length : 0) + + charCount + words[i].Length + 1 < width) + charCount += words[i].Length + 1; + else + { + WriteLine((mode == TabMode.All || mode == TabMode.OnlyFirst ? t : "") + + s.Substring(start, charCount)); + start += charCount + 1; + charCount = words[i].Length; + break; + } + + if (i + 1 == words.Length) + WriteLine((mode == TabMode.All || mode == TabMode.OnlyFirst ? t : "") + + s.Substring(start, charCount)); + } + i++; + for (; i < words.Length; i++) + { + if ((mode == TabMode.All || mode == TabMode.ExceptFirst ? t.Length : 0) + + charCount + words[i].Length + 1 < width) + charCount += words[i].Length + 1; + else + { + WriteLine((mode == TabMode.All || mode == TabMode.ExceptFirst ? t : "") + + s.Substring(start, charCount)); + start += charCount + 1; + charCount = words[i].Length; + } + + if (i + 1 == words.Length) + WriteLine((mode == TabMode.All || mode == TabMode.ExceptFirst ? t : "") + + s.Substring(start, charCount)); + } + } + else + WriteLine(mode == TabMode.All || mode == TabMode.OnlyFirst ? t : ""); + } + + public static void WriteText(string text, int width, int tab, TabMode mode) + { + text = text.Replace("\r", ""); + string[] lines = text.Split(new char[] { '\n' }); + + foreach (string line in lines) + WriteLine(line, width, tab, mode); + } + + private static int GetTabLength(string line) + { + int i; + + for (i = 0; i < line.Length; i++) + { + if (!char.IsWhiteSpace(line[i])) + break; + } + + return i; + } + } +} diff --git a/NusContent.cs b/NusContent.cs new file mode 100644 index 0000000..af7db5c --- /dev/null +++ b/NusContent.cs @@ -0,0 +1,365 @@ +using System; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Text; +using System.Xml; +using Microsoft.Win32; + +namespace _64Inject +{ + public static class NusContent + { + public const uint CommonKeyHashCRC32 = 0xB92B703D; + + public static string GetJavaVersion() + { + try + { + ProcessStartInfo startInfo = new ProcessStartInfo("java", "-version"); + startInfo.RedirectStandardOutput = true; + startInfo.RedirectStandardError = true; + startInfo.UseShellExecute = false; + startInfo.CreateNoWindow = true; + Process java = Process.Start(startInfo); + java.Start(); + java.WaitForExit(); + string version = java.StandardError.ReadLine(); + java.Dispose(); + //version = version.Split(' ')[2].Replace("\"", ""); + return version; + } + catch + { + return null; + } + + /*object vesion = null; + RegistryKey javaRE = Registry.LocalMachine.OpenSubKey("SOFTWARE\\JavaSoft\\Java Runtime Environment"); + + if (javaRE != null) + version = javaRE.GetValue("CurrentVersion"); + + if (version != null) + return version.ToString(); + else + return null;*/ + } + + public struct JNUSToolConfig + { + public const string UpdateServer = "http://ccs.cdn.wup.shop.nintendo.net/ccs/download"; + public const string TAGAYA1 = "https://tagaya.wup.shop.nintendo.net/tagaya/versionlist/EUR/EU/latest_version"; + public const string TAGAYA2 = "https://tagaya-wup.cdn.nintendo.net/tagaya/versionlist/EUR/EU/list/%d.versionlist"; + } + + public static string Check(string path) + { + if (File.Exists(path + "\\code\\app.xml") && + Directory.Exists(path + "\\content") && + File.Exists(path + "\\meta\\meta.xml")) + { + XmlDocument xmlMeta = new XmlDocument(); + xmlMeta.Load(path + "\\meta\\meta.xml"); + XmlNode meta_title_id = xmlMeta.SelectSingleNode("menu/title_id"); + return meta_title_id.InnerText; + } + return null; + } + + public static string CheckEncrypted(string path) + { + if (File.Exists(path + "\\title.tmd") && + File.Exists(path + "\\title.tik") && + File.Exists(path + "\\title.cert")) + { + byte[] id = new byte[8]; + FileStream fs = File.OpenRead(path + "\\title.tmd"); + fs.Position = 0x18C; + fs.Read(id, 0, 8); + fs.Close(); + return BitConverter.ToString(id).Replace("-", ""); + } + return null; + } + + public static void CheckBatchFiles() + { + if (!Directory.Exists("resources")) + Directory.CreateDirectory("resources"); + + if (!File.Exists("resources\\pack.bat")) + { + StreamWriter sw = File.CreateText("resources\\pack.bat"); + sw.WriteLine("@echo off"); + sw.WriteLine("cd resources\\nuspacker"); + sw.Write("java -jar NUSPacker.jar -in %1 -out %2"); + sw.Close(); + } + + if (!File.Exists("resources\\unpack.bat")) + { + StreamWriter sw = File.CreateText("resources\\unpack.bat"); + sw.WriteLine("@echo off"); + sw.WriteLine("cd resources\\jnustool"); + sw.Write("java -jar JNUSTool.jar %1 -file %2"); + sw.Close(); + } + } + + private static bool IsValidCommonKey(string key) + { + byte[] array = Encoding.ASCII.GetBytes(key.ToUpper()); + uint hash = Cll.Security.ComputeCRC32(array, 0, array.Length); + if (hash == CommonKeyHashCRC32) + return true; + return false; + } + + public static bool LoadKey(string key) + { + if (NusContent.IsValidCommonKey(key)) + { + try + { + if (!Directory.Exists("resources\\nuspacker")) + Directory.CreateDirectory("resources\\nuspacker"); + if (!Directory.Exists("resources\\jnustool")) + Directory.CreateDirectory("resources\\jnustool"); + + StreamWriter sw = File.CreateText("resources\\nuspacker\\encryptKeyWith"); + sw.WriteLine(key.ToUpper()); + sw.Close(); + sw = File.CreateText("resources\\jnustool\\config"); + sw.WriteLine(NusContent.JNUSToolConfig.UpdateServer); + sw.WriteLine(key.ToUpper()); + sw.WriteLine("updatetitles.csv"); + sw.WriteLine(NusContent.JNUSToolConfig.TAGAYA1); + sw.Write(NusContent.JNUSToolConfig.TAGAYA2); + sw.Close(); + return true; + } + catch + { + return false; + } + } + return false; + } + + public static bool CheckCommonKeyFiles() + { + StreamReader sr; + StreamWriter sw; + string jnustoolKey = ""; + string nuspackerKey = ""; + bool jnustoolKeyValid = false; + bool nuspackerKeyValid = false; + + if (File.Exists("resources\\jnustool\\config")) + { + sr = File.OpenText("resources\\jnustool\\config"); + sr.ReadLine(); + jnustoolKey = sr.ReadLine(); + sr.Close(); + jnustoolKeyValid = IsValidCommonKey(jnustoolKey); + } + + if (File.Exists("resources\\nuspacker\\encryptKeyWith")) + { + sr = File.OpenText("resources\\nuspacker\\encryptKeyWith"); + nuspackerKey = sr.ReadLine(); + sr.Close(); + nuspackerKeyValid = IsValidCommonKey(nuspackerKey); + } + + if (jnustoolKeyValid && nuspackerKeyValid) + return true; + else if (jnustoolKeyValid && !nuspackerKeyValid) + { + try + { + sw = File.CreateText("resources\\nuspacker\\encryptKeyWith"); + sw.WriteLine(jnustoolKey); + sw.Close(); + return true; + } + catch + { + return false; + } + } + else if (!jnustoolKeyValid && nuspackerKeyValid) + { + try + { + sw = File.CreateText("resources\\jnustool\\config"); + sw.WriteLine(JNUSToolConfig.UpdateServer); + sw.WriteLine(nuspackerKey); + sw.WriteLine("updatetitles.csv"); + sw.WriteLine(JNUSToolConfig.TAGAYA1); + sw.Write(JNUSToolConfig.TAGAYA2); + sw.Close(); + return true; + } + catch + { + return false; + } + } + else + return false; + } + + public static bool Encrypt(string inputPath, string outputPath) + { + string titleId = Check(inputPath); + if (titleId != null && + CheckCommonKeyFiles() && + GetJavaVersion() != null && + File.Exists("resources\\nuspacker\\NUSPacker.jar")) + { + NusContent.CheckBatchFiles(); + Process encrypt = Process.Start("resources\\pack.bat", "\"" + inputPath + "\" \"" + outputPath + "\""); + encrypt.WaitForExit(); + encrypt.Dispose(); + return true; + } + return false; + } + + public static bool Decrypt(string inputPath, string outputPath) + { + string titleId = CheckEncrypted(inputPath); + if (titleId != null && + CheckCommonKeyFiles() && + GetJavaVersion() != null && + File.Exists("resources\\jnustool\\JNUSTool.jar")) + { + string name = JNUSToolWrapper(inputPath, 0, Int32.MaxValue, titleId, ".*"); + if (name != null) + { + Useful.DirectoryCopy(name, outputPath, true); + Directory.Delete(name, true); + return true; + } + } + return false; + } + + public static string JNUSToolWrapper(string inputPath, int minFileLength, int maxFileLength, string titleId, string filter) + { + if (inputPath == null) + throw new Exception("JNUSToolWrapper: Input path is null."); + if (minFileLength < 0) + throw new Exception("JNUSToolWrapper: Min file length < zero."); + if (minFileLength > maxFileLength) + throw new Exception("JNUSToolWrapper: Min file length > Max file length."); + if (titleId == null) + throw new Exception("JNUSToolWrapper: Title Id is null."); + + try + { + string[] directories = Directory.GetDirectories("resources\\jnustool"); + foreach (string dir in directories) + Directory.Delete(dir, true); + + Directory.CreateDirectory("resources\\jnustool\\tmp_" + titleId); + + string[] file = Directory.GetFiles(inputPath); + FileInfo[] fileInfo = new FileInfo[file.Length]; + + for (int i = 0; i < file.Length; i++) + { + fileInfo[i] = new FileInfo(file[i]); + if (fileInfo[i].Length >= minFileLength && fileInfo[i].Length <= maxFileLength) + File.Copy(inputPath + "\\" + fileInfo[i].Name, "resources\\jnustool\\tmp_" + titleId + "\\" + fileInfo[i].Name, true); + } + + NusContent.CheckBatchFiles(); + Process decrypt = Process.Start("resources\\unpack.bat", titleId + " " + filter); + decrypt.WaitForExit(); + decrypt.Dispose(); + + Directory.Delete("resources\\jnustool\\tmp_" + titleId, true); + string[] result = Directory.GetDirectories("resources\\jnustool"); + + if (result.Length == 1) + return result[0]; + } + catch + { + Cll.Log.WriteLine("JNUSToolWrapper: Failed."); + } + return null; + } + + public static bool ConvertToTGA(Bitmap image, string outputFileName) + { + if (image.Width > 0xFFFF || image.Height > 0xFFFF) + return false; + + byte[] header = { + 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + (byte)(image.Width & 0xFF), + (byte)((image.Width >> 8) & 0xFF), + (byte)(image.Height & 0xFF), + (byte)((image.Height >> 8) & 0xFF), + 0x00, 0x00 }; + + byte[] footer = { + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x54, 0x52, 0x55, 0x45, + 0x56, 0x49, 0x53, 0x49, + 0x4F, 0x4E, 0x2D, 0x58, + 0x46, 0x49, 0x4C, 0x45, + 0x2E, 0x00 }; + + int bytesPerPixel = 0; + if (image.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb) + { + header[0x10] = 0x20; + header[0x11] = 0x08; + bytesPerPixel = 4; + } + else if (image.PixelFormat == System.Drawing.Imaging.PixelFormat.Format24bppRgb) + { + header[0x10] = 0x18; + bytesPerPixel = 3; + } + else + return false; + + Bitmap bmp = new Bitmap(image.Width, image.Height, image.PixelFormat); + Graphics g = Graphics.FromImage(bmp); + g.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height)); + g.Dispose(); + + bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); + Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height); + System.Drawing.Imaging.BitmapData data = + bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat); + int length = data.Width * data.Height * bytesPerPixel; + byte[] bmpBytes = new byte[length]; + for (int y = 0; y < data.Height; ++y) + { + IntPtr ptr = (IntPtr)((long)data.Scan0 + y * data.Stride); + System.Runtime.InteropServices.Marshal.Copy( + ptr, bmpBytes, y * data.Width * bytesPerPixel, data.Width * bytesPerPixel); + } + bmp.UnlockBits(data); + bmp.Dispose(); + + FileStream fs = File.Open(outputFileName, FileMode.Create); + fs.Write(header, 0, header.Length); + fs.Write(bmpBytes, 0, bmpBytes.Length); + fs.Write(footer, 0, footer.Length); + fs.Close(); + + return true; + } + } +} diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..ba616fd --- /dev/null +++ b/Program.cs @@ -0,0 +1,31 @@ +using System; +using System.Windows.Forms; + +namespace _64Inject +{ + class Program + { + [System.Runtime.InteropServices.DllImport("kernel32.dll")] + static extern bool FreeConsole(); + + /// <summary> + /// Main entry point for the application. + /// </summary> + [STAThread] + static void Main(string[] args) + { + if (args.Length == 0) + { + FreeConsole(); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new _64InjectGUI()); + } + else + { + _64InjectCMD cmd = new _64InjectCMD(); + cmd.Run(args); + } + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7b14d72 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// La información general sobre un ensamblado se controla mediante el siguiente +// conjunto de atributos. Cambie estos atributos para modificar la información +// asociada con un ensamblado. +[assembly: AssemblyTitle("64Inject debug")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("64Inject")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Si establece ComVisible como false, los tipos de este ensamblado no estarán visibles +// para los componentes COM. Si necesita obtener acceso a un tipo de este ensamblado desde +// COM, establezca el atributo ComVisible como true en este tipo. +[assembly: ComVisible(false)] + +// El siguiente GUID sirve como identificador de typelib si este proyecto se expone a COM +[assembly: Guid("a61f45e8-f166-49d6-be58-62d11c332451")] + +// La información de versión de un ensamblado consta de los cuatro valores siguientes: +// +// Versión principal +// Versión secundaria +// Número de versión de compilación +// Revisión +// +// Puede especificar todos los valores o establecer como predeterminados los números de versión de compilación y de revisión +// mediante el asterisco ('*'), como se muestra a continuación: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.4.82.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..4d74362 --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// Este código fue generado por una herramienta. +// Versión de runtime:4.0.30319.42000 +// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace _64Inject.Properties { + using System; + + + /// <summary> + /// Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc. + /// </summary> + // StronglyTypedResourceBuilder generó automáticamente esta clase + // a través de una herramienta como ResGen o Visual Studio. + // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen + // con la opción /str o recompile su proyecto de VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.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() { + } + + /// <summary> + /// Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase. + /// </summary> + [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("_64Inject.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las + /// búsquedas de recursos mediante esta clase de recurso fuertemente tipado. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap checkmark_16 { + get { + object obj = ResourceManager.GetObject("checkmark-16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// <summary> + /// Busca una cadena traducida similar a Use: 64inject [-base folder_path] + /// [-name short_name] [-longname name_line_1 name_line_2] + /// [no-darkfilter] [widescreen] [-zoom value] + /// [-in folder_path] [-rom file_path] [-ini file_path] + /// [-icon file_path] [-tv file_path] [-drc file_path] + /// [-out folder_path] [not-encrypt] + /// Or: 64inject help + /// Or: 64inject load-key common_key + /// Or: 64inject load-base folder_path + /// Or: 64inject create-image [-frame file_path] [-title file_path] + /// [resto de la cadena truncado]";. + /// </summary> + internal static string Help { + get { + return ResourceManager.GetString("Help", resourceCulture); + } + } + + /// <summary> + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap x_mark_16 { + get { + object obj = ResourceManager.GetObject("x-mark-16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..7d85a84 --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,220 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="x-mark-16" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\x-mark-16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="checkmark-16" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\checkmark-16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="Help" xml:space="preserve"> + <value>Use: 64inject [-base folder_path] + [-name short_name] [-longname name_line_1 name_line_2] + [no-darkfilter] [widescreen] [-zoom value] + [-in folder_path] [-rom file_path] [-ini file_path] + [-icon file_path] [-tv file_path] [-drc file_path] + [-out folder_path] [not-encrypt] + Or: 64inject help + Or: 64inject load-key common_key + Or: 64inject load-base folder_path + Or: 64inject create-image [-frame file_path] [-title file_path] + [-name short_name|-longname name_line_1 name_line_2] + [-r value] [-p value] [-out folder_path] + Or: 64inject create-icon [-frame file_path] [-title file_path] + [-out folder_path] + Or: 64inject pack|unpack -in folder_path [-out folder_path] + +Options: + + help + Show this help message. + + load-key common_key + The Wii U Common Key is required to pack and unpack NUS CONTENT. + load-base folder_path + Path to the N64 VC game that will be copied internally "base" where the ROM will be injected. + + create-image + Indicates that must create an image for the boot screen. + create-icon + Indicates that must create an icon to represent a game. + + pack + Indicates that the NUS CONTENT input will be encrypted. + unpack + Indicates that the NUS CONTENT input will be decrypted. + + -base folder_path + Path to the N64 VC game where the ROM will be injected. + The process does not modify the N64 VC game since it creates an internal copy of the game "base", if not specified, the previous loaded base will be used. + -name short_name + A short game name to show. + If not specified, the name inside ROM will be used. + If the create-image option is present, it indicates the name of a single line that will be placed on the frame image. + -longname name_line_1 name_line_2 + A long game name to show can be two lines. + If not specified, the short name will be used. + If the create-image option is present, it indicates the name of two lines that will be placed on the frame image. + no-darkfilter + Indicates that the dark filter should be removed from the layout. + If not specified, the dark filter will remain active. + widescreen + Indicates that the masking pillarbox must be removed from the layout. + If not specified, the masking pillarbox will remain active. + -zoom value + A value between 50 and 200 that represents the zoom percentage of the game image. If not specified, the value 100 will be used. + -in folder_path + Path where the "rom.z64", "vc.ini", "icon.png", "tv.png" and "drc.png" files are taken. + If the pack|unpack option is present it indicates the path to the NUS CONTENT. + -rom file_path + Path to the N64 game ROM. + If not specified, the "rom.z64" file will be searched in the "-in" folder. + -ini file_path + Path to the N64 VC INI file. + If not specified, the "vc.ini" file will be searched in the "-in" folder, if not found an empty INI file will be injected. + -icon file_path + Path to an image file to use as icon (*.png, *.jpg or *.bmp). + If not specified, the "icon.png" file will be searched in the "-in" folder, if not found a default image will be used. + -tv file_path + Path to an image file to use as boot tv (*.png, *.jpg or *.bmp). + If not specified, the "tv.png" file will be searched in the "-in" folder, if not found a default image will be used. + -drc file_path + Path to an image file to use as boot drc (*.png, *.jpg or *.bmp). + If not specified, the "drc.png" file will be searched in the "-in" folder, if not found the boot tv image will be used. + -out folder_path + Path where the result will be put. + If not specified, the root folder of 64Inject will be used. + not-encrypt + Indicates that the result should not be encrypted, by default is encrypted. + + -title file_path + Path to the image of the title screen, which will be placed on the background by default. If not specified, a black box will be placed. + -frame file_path + Path to the frame image, which will be placed on the title screen. + If not specified, the background will be seen by default. + -r value + A value greater than or equal to 1996, that represents the launch year of the game, will be placed on the frame image. + -p value + A value between 1 and 4, that represents the number of players that the game supports, will be placed on the frame image. + +Note: + If the paths or names contain spaces put them in quotes.</value> + </data> +</root> \ No newline at end of file diff --git a/Resources/checkmark-16.png b/Resources/checkmark-16.png new file mode 100644 index 0000000..6a98806 Binary files /dev/null and b/Resources/checkmark-16.png differ diff --git a/Resources/icon.ico b/Resources/icon.ico new file mode 100644 index 0000000..4799ada Binary files /dev/null and b/Resources/icon.ico differ diff --git a/Resources/x-mark-16.png b/Resources/x-mark-16.png new file mode 100644 index 0000000..acbd2f6 Binary files /dev/null and b/Resources/x-mark-16.png differ diff --git a/RomN64.cs b/RomN64.cs new file mode 100644 index 0000000..5bb84ee --- /dev/null +++ b/RomN64.cs @@ -0,0 +1,218 @@ +using System; +using System.IO; +using System.Text; + +namespace _64Inject +{ + public class RomN64 : IDisposable + { + public enum Endian + { + BigEndian, + LittleEndian, + ByteSwapped, + Indeterminate + } + + private bool disposed = false; + + public int Size + { private set; get; } + public Endian Endianness + { private set; get; } + public string Title + { private set; get; } + public char FormatCode + { private set; get; } + public string Id + { private set; get; } + public char ContryCode + { private set; get; } + public byte Version + { private set; get; } + + public char Revision + { get { return Version == 0? ' ' :(char)(Version + 0x40); } } + public string ProductCode + { get { return (FormatCode + Id + ContryCode).ToUpper(); } } + public string ProductCodeVersion + { get { return ProductCode + Version.ToString("X1"); } } + public bool IsValid + { private set; get; } + public uint HashCRC32 + { private set; get; } + + public RomN64(string filename) + { + Size = 0; + Title = ""; + FormatCode = '?'; + Id = "??"; + ContryCode = '?'; + Version = 0; + + try + { + Cll.Log.WriteLine("Validating ROM."); + + byte[] header = new byte[0x40]; + FileStream fs = File.Open(filename, FileMode.Open); + Size = (int)fs.Length; + fs.Read(header, 0, 0x40); + fs.Close(); + + if (Size > 0xFFF) + { + if (header[0] == 0x80 && + header[1] == 0x37 && + header[2] == 0x12 && + header[3] == 0x40) + Endianness = Endian.BigEndian; + else if (header[0] == 0x37 && + header[1] == 0x80 && + header[2] == 0x40 && + header[3] == 0x12) + Endianness = Endian.ByteSwapped; + else if (header[0] == 0x40 && + header[1] == 0x12 && + header[2] == 0x37 && + header[3] == 0x80) + Endianness = Endian.LittleEndian; + else + Endianness = Endian.Indeterminate; + + if (Endianness != Endian.Indeterminate && Size % 4 == 0) + { + IsValid = true; + + byte formatCode; + byte[] id = new byte[2]; + byte contryCode; + + header = ToBigEndian(header, Endianness); + + formatCode = header[0x3B]; + id[0] = header[0x3C]; + id[1] = header[0x3D]; + contryCode = header[0x3E]; + Version = header[0x3F]; + FormatCode = (char)formatCode; + Id = Encoding.ASCII.GetString(id); + ContryCode = (char)contryCode; + + byte[] titleBytes = new byte[20]; + Array.Copy(header, 0x20, titleBytes, 0, 20); + int count = 20; + while (titleBytes[--count] == 0x20 && count > 0) ; + Title = Encoding.ASCII.GetString(titleBytes, 0, count + 1); + + fs = File.Open(filename, FileMode.Open); + HashCRC32 = Cll.Security.ComputeCRC32(fs); + fs.Close(); + + Cll.Log.WriteLine("The ROM is valid and its metadata has been loaded."); + } + else + Cll.Log.WriteLine("It was not possible to determine the ROM format."); + } + else + { + Size = 0; + Cll.Log.WriteLine("The ROM is too small to be valid."); + } + } + catch + { + Cll.Log.WriteLine("Error reading ROM."); + } + } + + ~RomN64() + { + Dispose(false); + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (!this.disposed) + { + if (disposing) + { + } + disposed = true; + } + } + + public static bool ToBigEndian(string source, string destination) + { + RomN64 rom = new RomN64(source); + + if (rom.IsValid) + { + try + { + FileStream fs = File.Open(source, FileMode.Open); + byte[] data = new byte[fs.Length]; + fs.Read(data, 0, data.Length); + fs.Close(); + + data = ToBigEndian(data, rom.Endianness); + fs = File.Open(destination, FileMode.Create); + fs.Write(data, 0, data.Length); + fs.Close(); + + return true; + } + catch { } + } + return false; + } + + private static byte[] ToBigEndian(byte[] array, Endian endianness) + { + if (array.Length % 4 != 0) + throw new Exception("ToBigEndian: Invalid array length."); + + byte[] bigEndian = new byte[4]; + + if (endianness == Endian.ByteSwapped) + { + for (int i = 0; i < array.Length / 4; i++) + { + bigEndian[0] = array[(i * 4) + 1]; + bigEndian[1] = array[(i * 4) + 0]; + bigEndian[2] = array[(i * 4) + 3]; + bigEndian[3] = array[(i * 4) + 2]; + + array[(i * 4) + 0] = bigEndian[0]; + array[(i * 4) + 1] = bigEndian[1]; + array[(i * 4) + 2] = bigEndian[2]; + array[(i * 4) + 3] = bigEndian[3]; + } + } + else if (endianness == Endian.LittleEndian) + { + for (int i = 0; i < array.Length / 4; i++) + { + bigEndian[0] = array[(i * 4) + 3]; + bigEndian[1] = array[(i * 4) + 2]; + bigEndian[2] = array[(i * 4) + 1]; + bigEndian[3] = array[(i * 4) + 0]; + + array[(i * 4) + 0] = bigEndian[0]; + array[(i * 4) + 1] = bigEndian[1]; + array[(i * 4) + 2] = bigEndian[2]; + array[(i * 4) + 3] = bigEndian[3]; + } + } + + return array; + } + } +} diff --git a/Security.cs b/Security.cs new file mode 100644 index 0000000..b8341e0 --- /dev/null +++ b/Security.cs @@ -0,0 +1,183 @@ +using System; +using System.IO; + +namespace Cll +{ + public static class Security + { + #region Consts + + private static readonly ushort[] CRC16Table = + { + 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, + 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, + 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, + 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, + 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, + 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, + 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, + 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, + 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, + 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, + 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, + 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, + 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, + 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, + 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, + 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, + 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, + 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, + 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, + 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, + 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, + 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, + 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, + 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, + 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, + 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, + 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, + 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, + 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, + 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, + 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, + 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 + }; + + private static readonly uint[] CRC32Table = + { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d + }; + + #endregion + + public static ushort ComputeCRC16(byte[] source, int offset, int count, ushort crc) + { + if (count < 0 || count > source.Length) + throw new IndexOutOfRangeException("Count out of range exception."); + + if (offset < 0 || offset + count > source.Length) + throw new IndexOutOfRangeException("Offset out of range exception."); + + count += offset; + for (; offset < count; offset++) + crc = (ushort)(CRC16Table[(crc ^ source[offset]) & 0xFF] ^ (crc >> 8)); + + return crc; + } + + public static ushort ComputeCRC16_ARC(byte[] source, int offset, int count) + { + return ComputeCRC16(source, offset, count, 0); + } + + public static ushort ComputeCRC16_MAXIM(byte[] source, int offset, int count) + { + return (ushort)(ComputeCRC16(source, offset, count, 0) ^ 0xFFFF); + } + + public static ushort ComputeCRC16_MODBUS(byte[] source, int offset, int count) + { + return ComputeCRC16(source, offset, count, 0xFFFF); + } + + public static ushort ComputeCRC16_USB(byte[] source, int offset, int count) + { + return (ushort)(ComputeCRC16(source, offset, count, 0xFFFF) ^ 0xFFFF); + } + + public static uint ComputeCRC32(byte[] source, int offset, int count, uint crc) + { + if (count < 0 || count > source.Length) + throw new IndexOutOfRangeException("Count out of range exception."); + + if (offset < 0 || offset + count > source.Length) + throw new IndexOutOfRangeException("Offset out of range exception."); + + count += offset; + for (; offset < count; offset++) + crc = CRC32Table[(crc ^ source[offset]) & 0xFF] ^ (crc >> 8); + + return crc; + } + + public static uint ComputeCRC32(byte[] source, int offset, int count) //ISO-HDLC + { + return ComputeCRC32(source, offset, count, 0xFFFFFFFFU) ^ 0xFFFFFFFFU; + } + + public static uint ComputeCRC32_JAMCRC(byte[] source, int offset, int count) + { + return ComputeCRC32(source, offset, count, 0xFFFFFFFFU); + } + + public static uint ComputeCRC32(Stream source) + { + byte[] array = new byte[source.Length]; + source.Read(array, 0, array.Length); + return ComputeCRC32(array, 0, array.Length); + } + } +} diff --git a/Useful.cs b/Useful.cs new file mode 100644 index 0000000..0cf4539 --- /dev/null +++ b/Useful.cs @@ -0,0 +1,180 @@ +using System; +using System.IO; +using System.Text; + +namespace _64Inject +{ + public static class Useful + { + public static bool DirectoryCopy(string source, string destination, bool overwrite) + { + if (destination != source && (!Directory.Exists(destination) || overwrite)) + { + try + { + Directory.CreateDirectory(destination); + + string[] sources = Directory.GetFiles(source); + string[] destinations = new string[sources.Length]; + int i, last; + + for (i = 0; i < sources.Length; i++) + destinations[i] = destination + "\\" + Path.GetFileName(sources[i]); + + for (i = 0; i < sources.Length; i++) + File.Copy(sources[i], destinations[i], overwrite); + + string[] sourcesDir = Directory.GetDirectories(source); + string[] destinationsDir = new string[sourcesDir.Length]; + + for (i = 0; i < sourcesDir.Length; i++) + { + last = sourcesDir[i].LastIndexOf('\\'); + destinationsDir[i] = destination + sourcesDir[i].Substring(last, sourcesDir[i].Length - last); + } + + for (i = 0; i < sourcesDir.Length; i++) + { + if (!DirectoryCopy(sourcesDir[i], destinationsDir[i], overwrite)) + return false; + } + + return true; + } + catch + { + return false; + } + } + + return false; + } + + public static byte[] StrHexToByteArray(string hex, string separator) + { + if (hex.Length % 2 == 1) + throw new Exception("The binary key cannot have an odd number of digits."); + + if (separator.Length > 0) + hex = hex.Replace(separator, ""); + + if (!IsHexadecimal(hex)) + throw new Exception("The binary key does not contain only hexadecimal values."); + + byte[] arr = new byte[hex.Length >> 1]; + + for (int i = 0; i < hex.Length >> 1; ++i) + arr[i] = (byte)((GetHexVal(hex[i << 1]) << 4) + (GetHexVal(hex[(i << 1) + 1]))); + + return arr; + } + + public static bool IsHexadecimal(string hex) + { + for (int i = 0; i < hex.Length; i++) + { + if ((hex[i] < '0' || hex[i] > '9') + && (hex[i] < 'A' || hex[i] > 'F') + && (hex[i] < 'a' || hex[i] > 'f')) + return false; + } + return true; + } + + private static int GetHexVal(char hex) + { + int val = (int)hex; + //For uppercase A-F letters: + //return val - (val < 58 ? 48 : 55); + //For lowercase a-f letters: + //return val - (val < 58 ? 48 : 87); + //Or the two combined, but a bit slower: + return val - (val < 58 ? 48 : (val < 97 ? 55 : 87)); + } + + public static bool IsUTF8(byte[] bytes) + { + try + { + (new UTF8Encoding(false, true)).GetString(bytes); + } + catch + { + return false; + } + return true; + } + + public static string Windows1252ToASCII(string windows1252, char replacement) + { + if (replacement < 0x20 || replacement > 0x7E) + throw new Exception("Replacement character is not a valid ASCII character."); + + windows1252 = windows1252.Replace("Š", "Sh"); + windows1252 = windows1252.Replace("Œ", "OE"); + windows1252 = windows1252.Replace("Ž", "Zh"); + windows1252 = windows1252.Replace("š", "sh"); + windows1252 = windows1252.Replace("œ", "oe"); + windows1252 = windows1252.Replace("ž", "zh"); + windows1252 = windows1252.Replace("Ÿ", "Ij"); + windows1252 = windows1252.Replace("Æ", "AE"); + windows1252 = windows1252.Replace("Ð", "Dh"); + windows1252 = windows1252.Replace("Ñ", "Nh"); + windows1252 = windows1252.Replace("Ø", "OE"); + windows1252 = windows1252.Replace("Þ", "Th"); + windows1252 = windows1252.Replace("ß", "ss"); + windows1252 = windows1252.Replace("æ", "ae"); + windows1252 = windows1252.Replace("ð", "dh"); + windows1252 = windows1252.Replace("ñ", "nh"); + windows1252 = windows1252.Replace("ø", "oe"); + windows1252 = windows1252.Replace("þ", "th"); + windows1252 = windows1252.Replace("ÿ", "ij"); + + char[] array = windows1252.ToCharArray(); + + for (int i = 0; i < array.Length; i++) + { + if (array[i] >= 0xC0 && array[i] <= 0xC5) + array[i] = (char)0x41; //A + else if (array[i] >= 0xC8 && array[i] <= 0xCB) + array[i] = (char)0x45; //E + else if (array[i] >= 0xCC && array[i] <= 0xCF) + array[i] = (char)0x49; //I + else if (array[i] >= 0xD2 && array[i] <= 0xD6) + array[i] = (char)0x4F; //O + else if (array[i] >= 0xD9 && array[i] <= 0xDC) + array[i] = (char)0x55; //U + else if (array[i] >= 0xE0 && array[i] <= 0xE5) + array[i] = (char)0x61; //a + else if (array[i] >= 0xE8 && array[i] <= 0xEB) + array[i] = (char)0x65; //e + else if (array[i] >= 0xEC && array[i] <= 0xEF) + array[i] = (char)0x69; //i + else if (array[i] >= 0xF2 && array[i] <= 0xF6) + array[i] = (char)0x6F; //o + else if (array[i] >= 0xF9 && array[i] <= 0xFC) + array[i] = (char)0x75; //u + else if (array[i] == 0xC7) + array[i] = (char)0x53; //S + else if (array[i] == 0xE7) + array[i] = (char)0x73; //s + else if (array[i] == 0xDD) + array[i] = (char)0x59; //Y + else if (array[i] == 0xFD) + array[i] = (char)0x79; //y + else if (array[i] == 0x91) + array[i] = (char)0x27; //' + else if (array[i] == 0x92) + array[i] = (char)0x27; //' + else if (array[i] == 0x93) + array[i] = (char)0x22; //" + else if (array[i] == 0x94) + array[i] = (char)0x22; //" + else if (array[i] < 0x20 || array[i] > 0x7E) + array[i] = replacement; + } + + return new string(array); + } + } +} diff --git a/VCN64.cs b/VCN64.cs new file mode 100644 index 0000000..0184504 --- /dev/null +++ b/VCN64.cs @@ -0,0 +1,40 @@ + +namespace _64Inject +{ + public class VCN64 + { + public readonly uint HashCRC32; + public readonly string Title; + public readonly string Info; + + public VCN64(uint hashCRC32, string info, string title) + { + HashCRC32 = hashCRC32; + Title = title; + Info = info; + } + + public override string ToString() + { + return Title + "\nCRC32: " + HashCRC32.ToString("X8") + " " + Info; + } + + public static readonly VCN64 DonkeyKong64 = new VCN64(0xFB245F10, "SVN: 1680 TIME: 2015/01/20 14:12:06", "Donkey Kong 64 (NTSC-U)"); + public static readonly VCN64 Ocarina = new VCN64(0xF042E451, "SVN: 1696 TIME: 2015/01/30 10:49:22", "The Legend of Zelda: Ocarina of Time (NTSC-U)"); + public static readonly VCN64 PaperMario = new VCN64(0xAE933905, "SVN: 1743 TIME: 2015/03/05 15:06:57", "Paper Mario (NTSC-U)"); + public static readonly VCN64 Kirby64 = new VCN64(0x7EB7B97D, "SVN: 1790 TIME: 2015/03/24 13:46:36", "Kirby 64: The Crystal Shards (NTSC-U)"); + public static readonly VCN64 MarioTennis = new VCN64(0x05F20995, "SVN: 1918 TIME: 2015/05/20 14:34:00", "Mario Tennis (NTSC-U)"); + public static readonly VCN64 MarioGolf = new VCN64(0x307DCE21, "SVN: 1955 TIME: 2015/06/16 16:09:03", "Mario Golf (NTSC-U)"); + public static readonly VCN64 StarFox64 = new VCN64(0xF41BC127, "SVN: 1970 TIME: 2015/06/30 14:07:35", "Star Fox 64 (NTSC-U)"); + public static readonly VCN64 SinAndP = new VCN64(0x36C0456E, "SVN: 1991 TIME: 2015/07/16 09:20:39", "Sin and Punishment (NTSC-U)"); + public static readonly VCN64 MarioKart64 = new VCN64(0x5559F831, "SVN: 2043 TIME: 2015/08/18 10:07:52", "Mario Kart 64 (NTSC-U)"); + public static readonly VCN64 YoshiStory = new VCN64(0xD554D2E4, "SVN: 2079 TIME: 2015/09/15 16:19:11", "Yoshi's Story (NTSC-U)"); + public static readonly VCN64 WaveRace64 = new VCN64(0xC376B949, "SVN: 2136 TIME: 2015/11/18 12:41:26", "Wave Race 64 (NTSC-U)"); + public static readonly VCN64 Majora = new VCN64(0x71FC1731, "SVN: 2190 TIME: 2016/01/05 16:50:14", "The Legend of Zelda: Majora's Mask (NTSC-U)"); + public static readonly VCN64 PokemonSnap = new VCN64(0x967E7DF0, "SVN: 2195 TIME: 2016/01/08 09:42:51", "Pokémon Snap (NTSC-U)"); + public static readonly VCN64 MarioParty2 = new VCN64(0xBE3CEC5F, "SVN: 2234 TIME: 2016/02/02 10:56:10", "Mario Party 2 (NTSC-U)"); + public static readonly VCN64 OgreBattle64 = new VCN64(0xFED1FB48, "SVN: 2395 TIME: 2016/08/30 13:57:02", "Ogre Battle 64: Person of Lordly Caliber (NTSC-U)"); + public static readonly VCN64 Excitebike64 = new VCN64(0x724C4F5D, "SVN: 2404 TIME: 2016/09/14 13:42:00", "Excitebike 64 (NTSC-U)"); + public static readonly VCN64 FZeroX = new VCN64(0x2AF3C23B, "SVN: 2428 TIME: 2016/11/18 11:44:39", "F-Zero X (NTSC-U)"); + } +} diff --git a/app.config b/app.config new file mode 100644 index 0000000..cf7e7ab --- /dev/null +++ b/app.config @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> +<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>