From 03e12167977d6a506d4492d2a8bbbbd0448e0fe7 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 23 May 2022 18:22:35 +0300 Subject: [PATCH] ReUpload --- Nifscan.sln | 20 + Nifscan.v11.suo | Bin 0 -> 32768 bytes Nifscan/App.config | 6 + Nifscan/FormEC.Designer.cs | 264 +++ Nifscan/FormEC.cs | 66 + Nifscan/FormEC.resx | 61 + Nifscan/FormMain.Designer.cs | 475 ++++ Nifscan/FormMain.cs | 2078 +++++++++++++++++ Nifscan/FormMain.resx | 231 ++ Nifscan/FormParallax.Designer.cs | 132 ++ Nifscan/FormParallax.cs | 80 + Nifscan/FormParallax.resx | 228 ++ Nifscan/FormVC.Designer.cs | 241 ++ Nifscan/FormVC.cs | 83 + Nifscan/FormVC.resx | 61 + Nifscan/FormVer.Designer.cs | 283 +++ Nifscan/FormVer.cs | 92 + Nifscan/FormVer.resx | 61 + Nifscan/Nifscan.csproj | 146 ++ Nifscan/Program.cs | 16 + Nifscan/Properties/AssemblyInfo.cs | 13 + Nifscan/bin/Release/Nifscan.exe | Bin 0 -> 96768 bytes Nifscan/bin/Release/Nifscan.exe.config | 6 + Nifscan/bin/Release/Nifscan.pdb | Bin 0 -> 83456 bytes Nifscan/bin/Release/Nifscan.vshost.exe | Bin 0 -> 22984 bytes Nifscan/bin/Release/Nifscan.vshost.exe.config | 6 + .../bin/Release/Nifscan.vshost.exe.manifest | 11 + Nifscan/favicon.ico | Bin 0 -> 9662 bytes Nifscan/obj/Release/Nifscan.FormEC.resources | Bin 0 -> 180 bytes .../obj/Release/Nifscan.FormMain.resources | Bin 0 -> 10228 bytes .../Release/Nifscan.FormParallax.resources | Bin 0 -> 10228 bytes Nifscan/obj/Release/Nifscan.FormVC.resources | Bin 0 -> 180 bytes Nifscan/obj/Release/Nifscan.FormVer.resources | Bin 0 -> 180 bytes .../Nifscan.csproj.FileListAbsolute.txt | 11 + .../Nifscan.csproj.GenerateResource.Cache | Bin 0 -> 1148 bytes Nifscan/obj/Release/Nifscan.exe | Bin 0 -> 96768 bytes Nifscan/obj/Release/Nifscan.pdb | Bin 0 -> 83456 bytes 37 files changed, 4671 insertions(+) create mode 100644 Nifscan.sln create mode 100644 Nifscan.v11.suo create mode 100644 Nifscan/App.config create mode 100644 Nifscan/FormEC.Designer.cs create mode 100644 Nifscan/FormEC.cs create mode 100644 Nifscan/FormEC.resx create mode 100644 Nifscan/FormMain.Designer.cs create mode 100644 Nifscan/FormMain.cs create mode 100644 Nifscan/FormMain.resx create mode 100644 Nifscan/FormParallax.Designer.cs create mode 100644 Nifscan/FormParallax.cs create mode 100644 Nifscan/FormParallax.resx create mode 100644 Nifscan/FormVC.Designer.cs create mode 100644 Nifscan/FormVC.cs create mode 100644 Nifscan/FormVC.resx create mode 100644 Nifscan/FormVer.Designer.cs create mode 100644 Nifscan/FormVer.cs create mode 100644 Nifscan/FormVer.resx create mode 100644 Nifscan/Nifscan.csproj create mode 100644 Nifscan/Program.cs create mode 100644 Nifscan/Properties/AssemblyInfo.cs create mode 100644 Nifscan/bin/Release/Nifscan.exe create mode 100644 Nifscan/bin/Release/Nifscan.exe.config create mode 100644 Nifscan/bin/Release/Nifscan.pdb create mode 100644 Nifscan/bin/Release/Nifscan.vshost.exe create mode 100644 Nifscan/bin/Release/Nifscan.vshost.exe.config create mode 100644 Nifscan/bin/Release/Nifscan.vshost.exe.manifest create mode 100644 Nifscan/favicon.ico create mode 100644 Nifscan/obj/Release/Nifscan.FormEC.resources create mode 100644 Nifscan/obj/Release/Nifscan.FormMain.resources create mode 100644 Nifscan/obj/Release/Nifscan.FormParallax.resources create mode 100644 Nifscan/obj/Release/Nifscan.FormVC.resources create mode 100644 Nifscan/obj/Release/Nifscan.FormVer.resources create mode 100644 Nifscan/obj/Release/Nifscan.csproj.FileListAbsolute.txt create mode 100644 Nifscan/obj/Release/Nifscan.csproj.GenerateResource.Cache create mode 100644 Nifscan/obj/Release/Nifscan.exe create mode 100644 Nifscan/obj/Release/Nifscan.pdb diff --git a/Nifscan.sln b/Nifscan.sln new file mode 100644 index 0000000..2da65e8 --- /dev/null +++ b/Nifscan.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2012 for Windows Desktop +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nifscan", "Nifscan\Nifscan.csproj", "{954D1A7F-D909-43EC-A1E2-053ABF7358D6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {954D1A7F-D909-43EC-A1E2-053ABF7358D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {954D1A7F-D909-43EC-A1E2-053ABF7358D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {954D1A7F-D909-43EC-A1E2-053ABF7358D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {954D1A7F-D909-43EC-A1E2-053ABF7358D6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Nifscan.v11.suo b/Nifscan.v11.suo new file mode 100644 index 0000000000000000000000000000000000000000..a5b085b2c723bb18c9f0592223330db60e712132 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/Nifscan/App.config b/Nifscan/App.config new file mode 100644 index 0000000..58262a1 --- /dev/null +++ b/Nifscan/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Nifscan/FormEC.Designer.cs b/Nifscan/FormEC.Designer.cs new file mode 100644 index 0000000..1c31f4c --- /dev/null +++ b/Nifscan/FormEC.Designer.cs @@ -0,0 +1,264 @@ +namespace Nifscan +{ + partial class FormEC + { + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.NumericUpDown numericUpDown4; + private System.Windows.Forms.NumericUpDown numericUpDown3; + private System.Windows.Forms.NumericUpDown numericUpDown2; + private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox1; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.numericUpDown4 = new System.Windows.Forms.NumericUpDown(); + this.numericUpDown3 = new System.Windows.Forms.NumericUpDown(); + this.numericUpDown2 = new System.Windows.Forms.NumericUpDown(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.SuspendLayout(); + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "Default", + "Environment Map", + "Glow Shader", + "Parallax", + "Face Tint", + "Skin Tint", + "Hair Tint", + "Parallax Occ", + "Multitexture Landscape", + "LOD Landscape", + "Snow", + "MultiLayer Parallax", + "Tree Anim", + "LOD Objects", + "Sparkle Snow", + "LOD Objects HD", + "Eye Envmap", + "Cloud", + "LOD Landscape Noise", + "Multitexture Landscape LOD Blend", + "FO4 Dismemberment", + "In All Shader Types"}); + this.comboBox1.Location = new System.Drawing.Point(12, 12); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(193, 23); + this.comboBox1.TabIndex = 0; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // numericUpDown4 + // + this.numericUpDown4.DecimalPlaces = 6; + this.numericUpDown4.Enabled = false; + this.numericUpDown4.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown4.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown4.Location = new System.Drawing.Point(128, 100); + this.numericUpDown4.Maximum = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.numericUpDown4.Name = "numericUpDown4"; + this.numericUpDown4.Size = new System.Drawing.Size(77, 21); + this.numericUpDown4.TabIndex = 6; + this.numericUpDown4.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown4.ValueChanged += new System.EventHandler(this.numericUpDown4_ValueChanged); + // + // numericUpDown3 + // + this.numericUpDown3.DecimalPlaces = 3; + this.numericUpDown3.Enabled = false; + this.numericUpDown3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown3.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown3.Location = new System.Drawing.Point(60, 109); + this.numericUpDown3.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDown3.Name = "numericUpDown3"; + this.numericUpDown3.Size = new System.Drawing.Size(58, 21); + this.numericUpDown3.TabIndex = 5; + this.numericUpDown3.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown3.ValueChanged += new System.EventHandler(this.numericUpDown3_ValueChanged); + // + // numericUpDown2 + // + this.numericUpDown2.DecimalPlaces = 3; + this.numericUpDown2.Enabled = false; + this.numericUpDown2.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown2.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown2.Location = new System.Drawing.Point(60, 89); + this.numericUpDown2.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDown2.Name = "numericUpDown2"; + this.numericUpDown2.Size = new System.Drawing.Size(58, 21); + this.numericUpDown2.TabIndex = 4; + this.numericUpDown2.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown2.ValueChanged += new System.EventHandler(this.numericUpDown2_ValueChanged); + // + // numericUpDown1 + // + this.numericUpDown1.DecimalPlaces = 3; + this.numericUpDown1.Enabled = false; + this.numericUpDown1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown1.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown1.Location = new System.Drawing.Point(60, 69); + this.numericUpDown1.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(58, 21); + this.numericUpDown1.TabIndex = 3; + this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged); + // + // label5 + // + this.label5.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label5.Location = new System.Drawing.Point(128, 72); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(77, 25); + this.label5.TabIndex = 0; + this.label5.Text = "Miltiple:"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label4.Location = new System.Drawing.Point(14, 108); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(40, 20); + this.label4.TabIndex = 0; + this.label4.Text = "B"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label3.Location = new System.Drawing.Point(14, 88); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(40, 20); + this.label3.TabIndex = 0; + this.label3.Text = "G"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label2.Location = new System.Drawing.Point(14, 68); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(40, 20); + this.label2.TabIndex = 0; + this.label2.Text = "R"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // checkBox2 + // + this.checkBox2.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.checkBox2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox2.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox2.Location = new System.Drawing.Point(136, 41); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(70, 25); + this.checkBox2.TabIndex = 2; + this.checkBox2.Text = "Miltiple"; + this.checkBox2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged); + // + // checkBox1 + // + this.checkBox1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox1.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox1.Location = new System.Drawing.Point(12, 41); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(70, 25); + this.checkBox1.TabIndex = 1; + this.checkBox1.Text = "Color"; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // FormEC + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(217, 142); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.numericUpDown4); + this.Controls.Add(this.numericUpDown3); + this.Controls.Add(this.numericUpDown2); + this.Controls.Add(this.numericUpDown1); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FormEC"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "EmissiveColor"; + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.ResumeLayout(false); + + } + } +} \ No newline at end of file diff --git a/Nifscan/FormEC.cs b/Nifscan/FormEC.cs new file mode 100644 index 0000000..d9a3656 --- /dev/null +++ b/Nifscan/FormEC.cs @@ -0,0 +1,66 @@ +using System; +using System.Windows.Forms; + +namespace Nifscan +{ + public partial class FormEC : Form + { + public FormEC() + { + InitializeComponent(); + comboBox1.SelectedIndex = FormMain.ecShaderType; + checkBox1.Checked = FormMain.ecColor; + checkBox2.Checked = FormMain.ecMultiple; + numericUpDown1.Value = (decimal)FormMain.ecR; + numericUpDown2.Value = (decimal)FormMain.ecG; + numericUpDown3.Value = (decimal)FormMain.ecB; + numericUpDown4.Value = (decimal)FormMain.ecM; + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + FormMain.ecShaderType = comboBox1.SelectedIndex; + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + FormMain.ecColor = checkBox1.Checked; + numericUpDown1.Enabled = checkBox1.Checked; + numericUpDown2.Enabled = checkBox1.Checked; + numericUpDown3.Enabled = checkBox1.Checked; + changeButton(); + } + + private void checkBox2_CheckedChanged(object sender, EventArgs e) + { + FormMain.ecMultiple = checkBox2.Checked; + numericUpDown4.Enabled = checkBox2.Checked; + changeButton(); + } + + private void numericUpDown1_ValueChanged(object sender, EventArgs e) + { + FormMain.ecR = (float)numericUpDown1.Value; + } + + private void numericUpDown2_ValueChanged(object sender, EventArgs e) + { + FormMain.ecG = (float)numericUpDown2.Value; + } + + private void numericUpDown3_ValueChanged(object sender, EventArgs e) + { + FormMain.ecB = (float)numericUpDown3.Value; + } + + private void numericUpDown4_ValueChanged(object sender, EventArgs e) + { + FormMain.ecM = (float)numericUpDown4.Value; + } + + private void changeButton() + { + FormMain.formMain.buttonColorEC(checkBox1.Checked || checkBox2.Checked); + } + } +} diff --git a/Nifscan/FormEC.resx b/Nifscan/FormEC.resx new file mode 100644 index 0000000..e8ae276 --- /dev/null +++ b/Nifscan/FormEC.resx @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Nifscan/FormMain.Designer.cs b/Nifscan/FormMain.Designer.cs new file mode 100644 index 0000000..ddcf918 --- /dev/null +++ b/Nifscan/FormMain.Designer.cs @@ -0,0 +1,475 @@ +namespace Nifscan +{ + partial class FormMain + { + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.CheckBox checkBox10; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.CheckBox checkBox4; + private System.Windows.Forms.CheckBox checkBox5; + private System.Windows.Forms.CheckBox checkBox6; + private System.Windows.Forms.CheckBox checkBox7; + private System.Windows.Forms.CheckBox checkBox8; + private System.Windows.Forms.CheckBox checkBox9; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.ComboBox comboBox2; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); + this.button1 = new System.Windows.Forms.Button(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.checkBox5 = new System.Windows.Forms.CheckBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox4 = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.button3 = new System.Windows.Forms.Button(); + this.label13 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.checkBox6 = new System.Windows.Forms.CheckBox(); + this.checkBox8 = new System.Windows.Forms.CheckBox(); + this.checkBox7 = new System.Windows.Forms.CheckBox(); + this.checkBox9 = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.comboBox2 = new System.Windows.Forms.ComboBox(); + this.checkBox10 = new System.Windows.Forms.CheckBox(); + this.button6 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button1.Location = new System.Drawing.Point(300, 279); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(53, 35); + this.button1.TabIndex = 17; + this.button1.Text = "Path"; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // checkBox1 + // + this.checkBox1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox1.Location = new System.Drawing.Point(10, 8); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(115, 25); + this.checkBox1.TabIndex = 0; + this.checkBox1.Text = "Debug Info"; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // textBox1 + // + this.textBox1.Enabled = false; + this.textBox1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.textBox1.Location = new System.Drawing.Point(195, 125); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(216, 22); + this.textBox1.TabIndex = 8; + // + // textBox2 + // + this.textBox2.Enabled = false; + this.textBox2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.textBox2.Location = new System.Drawing.Point(195, 154); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(216, 22); + this.textBox2.TabIndex = 9; + // + // checkBox3 + // + this.checkBox3.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox3.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox3.Location = new System.Drawing.Point(10, 48); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(115, 25); + this.checkBox3.TabIndex = 1; + this.checkBox3.Text = "Resort Blocks"; + // + // checkBox5 + // + this.checkBox5.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox5.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox5.Location = new System.Drawing.Point(10, 138); + this.checkBox5.Name = "checkBox5"; + this.checkBox5.Size = new System.Drawing.Size(179, 25); + this.checkBox5.TabIndex = 7; + this.checkBox5.Text = "Replace collision material:"; + this.checkBox5.CheckedChanged += new System.EventHandler(this.checkBox5_CheckedChanged); + // + // checkBox2 + // + this.checkBox2.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.checkBox2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox2.Location = new System.Drawing.Point(267, 8); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(145, 25); + this.checkBox2.TabIndex = 3; + this.checkBox2.Text = "Show Collision"; + this.checkBox2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // checkBox4 + // + this.checkBox4.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox4.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox4.Location = new System.Drawing.Point(174, 48); + this.checkBox4.Name = "checkBox4"; + this.checkBox4.Size = new System.Drawing.Size(105, 25); + this.checkBox4.TabIndex = 2; + this.checkBox4.Text = "Use Fixes"; + this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged); + // + // label1 + // + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label1.Location = new System.Drawing.Point(0, 181); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(422, 2); + this.label1.TabIndex = 0; + // + // label11 + // + this.label11.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label11.Location = new System.Drawing.Point(0, 78); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(422, 2); + this.label11.TabIndex = 0; + // + // label12 + // + this.label12.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label12.Location = new System.Drawing.Point(0, 38); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(422, 2); + this.label12.TabIndex = 0; + // + // button3 + // + this.button3.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button3.Location = new System.Drawing.Point(159, 84); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(103, 30); + this.button3.TabIndex = 5; + this.button3.Text = "Parallax"; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // label13 + // + this.label13.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label13.Location = new System.Drawing.Point(0, 118); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(422, 2); + this.label13.TabIndex = 0; + // + // label14 + // + this.label14.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label14.Location = new System.Drawing.Point(7, 183); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(149, 20); + this.label14.TabIndex = 0; + this.label14.Text = "Shader Flags 1:"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label15 + // + this.label15.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label15.Location = new System.Drawing.Point(0, 273); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(422, 2); + this.label15.TabIndex = 0; + // + // button2 + // + this.button2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button2.Location = new System.Drawing.Point(359, 279); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(53, 35); + this.button2.TabIndex = 18; + this.button2.Text = "Run"; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.textBox3.Location = new System.Drawing.Point(10, 285); + this.textBox3.Name = "textBox3"; + this.textBox3.ReadOnly = true; + this.textBox3.Size = new System.Drawing.Size(282, 22); + this.textBox3.TabIndex = 16; + // + // button4 + // + this.button4.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button4.Location = new System.Drawing.Point(9, 84); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(125, 30); + this.button4.TabIndex = 4; + this.button4.Text = "Emissive Color"; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button5 + // + this.button5.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button5.Location = new System.Drawing.Point(287, 84); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(125, 30); + this.button5.TabIndex = 6; + this.button5.Text = "Vertex Colors"; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // checkBox6 + // + this.checkBox6.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox6.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox6.Location = new System.Drawing.Point(10, 206); + this.checkBox6.Name = "checkBox6"; + this.checkBox6.Size = new System.Drawing.Size(55, 20); + this.checkBox6.TabIndex = 10; + this.checkBox6.Text = "Add"; + this.checkBox6.CheckedChanged += new System.EventHandler(this.checkBox6_CheckedChanged); + // + // checkBox8 + // + this.checkBox8.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox8.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox8.Location = new System.Drawing.Point(10, 252); + this.checkBox8.Name = "checkBox8"; + this.checkBox8.Size = new System.Drawing.Size(55, 20); + this.checkBox8.TabIndex = 13; + this.checkBox8.Text = "Add"; + this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox8_CheckedChanged); + // + // checkBox7 + // + this.checkBox7.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox7.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox7.Location = new System.Drawing.Point(71, 206); + this.checkBox7.Name = "checkBox7"; + this.checkBox7.Size = new System.Drawing.Size(80, 20); + this.checkBox7.TabIndex = 11; + this.checkBox7.Text = "Remove"; + this.checkBox7.CheckedChanged += new System.EventHandler(this.checkBox7_CheckedChanged); + // + // checkBox9 + // + this.checkBox9.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox9.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox9.Location = new System.Drawing.Point(71, 252); + this.checkBox9.Name = "checkBox9"; + this.checkBox9.Size = new System.Drawing.Size(80, 20); + this.checkBox9.TabIndex = 14; + this.checkBox9.Text = "Remove"; + this.checkBox9.CheckedChanged += new System.EventHandler(this.checkBox9_CheckedChanged); + // + // label2 + // + this.label2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label2.Location = new System.Drawing.Point(7, 229); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(149, 20); + this.label2.TabIndex = 0; + this.label2.Text = "Shader Flags 2:"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label3.Location = new System.Drawing.Point(0, 227); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(422, 2); + this.label3.TabIndex = 0; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "Specular", + "Skinned", + "Temp_Refraction", + "Vertex_Alpha", + "Greyscale_To_PaletteColor", + "Greyscale_To_PaletteAlpha", + "Use_Falloff", + "Environment_Mapping", + "Recieve_Shadows", + "Cast_Shadows", + "Facegen_Detail_Map", + "Parallax", + "Model_Space_Normals", + "Non_Projective_Shadows", + "Landscape", + "Refraction", + "Fire_Refraction", + "Eye_Environment_Mapping", + "Hair_Soft_Lighting", + "Screendoor_Alpha_Fade", + "Localmap_Hide_Secret", + "FaceGen_RGB_Tint", + "Own_Emit", + "Projected_UV", + "Multiple_Textures", + "Remappable_Textures", + "Decal", + "Dynamic_Decal", + "Parallax_Occlusion", + "External_Emittance", + "Soft_Effect", + "ZBuffer_Test"}); + this.comboBox1.Location = new System.Drawing.Point(157, 194); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(254, 21); + this.comboBox1.TabIndex = 12; + // + // comboBox2 + // + this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox2.FormattingEnabled = true; + this.comboBox2.Items.AddRange(new object[] { + "ZBuffer_Write", + "LOD_Landscape", + "LOD_Objects", + "No_Fade", + "Double_Sided", + "Vertex_Colors", + "Glow_Map", + "Assume_Shadowmask", + "Packed_Tangent", + "Multi_Index_Snow", + "Vertex_Lighting", + "Uniform_Scale", + "Fit_Slope", + "Billboard", + "No_LOD_Land_Blend", + "EnvMap_Light_Fade", + "Wireframe", + "Weapon_Blood", + "Hide_On_Local_Map", + "Premult_Alpha", + "Cloud_LOD", + "Anisotropic_Lighting", + "No_Transparency_Multisampling", + "Unused01", + "Multi_Layer_Parallax", + "Soft_Lighting", + "Rim_Lighting", + "Back_Lighting", + "Unused02", + "Tree_Anim", + "Effect_Lighting", + "HD_LOD_Objects"}); + this.comboBox2.Location = new System.Drawing.Point(157, 240); + this.comboBox2.Name = "comboBox2"; + this.comboBox2.Size = new System.Drawing.Size(254, 21); + this.comboBox2.TabIndex = 15; + // + // checkBox10 + // + this.checkBox10.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.checkBox10.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox10.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox10.Location = new System.Drawing.Point(267, 48); + this.checkBox10.Name = "checkBox10"; + this.checkBox10.Size = new System.Drawing.Size(145, 25); + this.checkBox10.TabIndex = 3; + this.checkBox10.Text = "Skin Color"; + this.checkBox10.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // button6 + // + this.button6.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button6.Location = new System.Drawing.Point(159, 4); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(103, 30); + this.button6.TabIndex = 5; + this.button6.Text = "X Y Z"; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // FormMain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(421, 318); + this.Controls.Add(this.comboBox2); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.label15); + this.Controls.Add(this.label13); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button6); + this.Controls.Add(this.button3); + this.Controls.Add(this.label12); + this.Controls.Add(this.label11); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label14); + this.Controls.Add(this.checkBox4); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.checkBox5); + this.Controls.Add(this.checkBox10); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.checkBox8); + this.Controls.Add(this.checkBox9); + this.Controls.Add(this.checkBox7); + this.Controls.Add(this.checkBox6); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "FormMain"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Nifscan"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + } +} + diff --git a/Nifscan/FormMain.cs b/Nifscan/FormMain.cs new file mode 100644 index 0000000..546ed48 --- /dev/null +++ b/Nifscan/FormMain.cs @@ -0,0 +1,2078 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Text; +using System.Windows.Forms; + +namespace Nifscan +{ + public partial class FormMain : Form + { + public static List texturesList = new List(); + public static bool fixesOn = false; + public static bool parallaxInvert = false; + public static bool parallaxCompare = false; + public static bool parallaxRemove = false; + public static bool parallaxAdd = false; + public static int ecShaderType = 21; + public static bool ecColor = false; + public static bool ecMultiple = false; + public static float ecR = 0; + public static float ecG = 0; + public static float ecB = 0; + public static float ecM = 0; + public static bool vcColor = false; + public static bool vcAlpha = false; + public static bool vcRemove = false; + public static float vcR = 0; + public static float vcG = 0; + public static float vcB = 0; + public static float vcA = 0; + public static bool verX = false; + public static bool verY = false; + public static bool verZ = false; + public static bool verXHard = false; + public static bool verYHard = false; + public static bool verZHard = false; + public static double verXval = 0; + public static double verYval = 0; + public static double verZval = 0; + public static bool verTrim = false; + public static int verTrimNum = 3; + internal static FormMain formMain = null; + List outLog = new List(); + List blocksSizeList = new List(); + List blocksStartList = new List(); + List sizeIndex = new List(); + byte[] bytesFile = null; + string tempPath = null; + string fileName = null; + bool fileChanged = false; + bool debugMode = false; + int blocksCount = 0; + int totalFiles = 0; + int successFiles = 0; + [Flags] + enum ShadeFlags1 : long + { + SLSF1_Specular = 1, + SLSF1_Skinned = 1 << 1, + SLSF1_Temp_Refraction = 1 << 2, + SLSF1_Vertex_Alpha = 1 << 3, + SLSF1_Greyscale_To_PaletteColor = 1 << 4, + SLSF1_Greyscale_To_PaletteAlpha = 1 << 5, + SLSF1_Use_Falloff = 1 << 6, + SLSF1_Environment_Mapping = 1 << 7, + SLSF1_Recieve_Shadows = 1 << 8, + SLSF1_Cast_Shadows = 1 << 9, + SLSF1_Facegen_Detail_Map = 1 << 10, + SLSF1_Parallax = 1 << 11, + SLSF1_Model_Space_Normals = 1 << 12, + SLSF1_Non_Projective_Shadows = 1 << 13, + SLSF1_Landscape = 1 << 14, + SLSF1_Refraction = 1 << 15, + SLSF1_Fire_Refraction = 1 << 16, + SLSF1_Eye_Environment_Mapping = 1 << 17, + SLSF1_Hair_Soft_Lighting = 1 << 18, + SLSF1_Screendoor_Alpha_Fade = 1 << 19, + SLSF1_Localmap_Hide_Secret = 1 << 20, + SLSF1_FaceGen_RGB_Tint = 1 << 21, + SLSF1_Own_Emit = 1 << 22, + SLSF1_Projected_UV = 1 << 23, + SLSF1_Multiple_Textures = 1 << 24, + SLSF1_Remappable_Textures = 1 << 25, + SLSF1_Decal = 1 << 26, + SLSF1_Dynamic_Decal = 1 << 27, + SLSF1_Parallax_Occlusion = 1 << 28, + SLSF1_External_Emittance = 1 << 29, + SLSF1_Soft_Effect = 1 << 30, + SLSF1_ZBuffer_Test = (long)(1 << 31) + }; + [Flags] + enum ShadeFlags2 : long + { + SLSF2_ZBuffer_Write = 1, + SLSF2_LOD_Landscape = 1 << 1, + SLSF2_LOD_Objects = 1 << 2, + SLSF2_No_Fade = 1 << 3, + SLSF2_Double_Sided = 1 << 4, + SLSF2_Vertex_Colors = 1 << 5, + SLSF2_Glow_Map = 1 << 6, + SLSF2_Assume_Shadowmask = 1 << 7, + SLSF2_Packed_Tangent = 1 << 8, + SLSF2_Multi_Index_Snow = 1 << 9, + SLSF2_Vertex_Lighting = 1 << 10, + SLSF2_Uniform_Scale = 1 << 11, + SLSF2_Fit_Slope = 1 << 12, + SLSF2_Billboard = 1 << 13, + SLSF2_No_LOD_Land_Blend = 1 << 14, + SLSF2_EnvMap_Light_Fade = 1 << 15, + SLSF2_Wireframe = 1 << 16, + SLSF2_Weapon_Blood = 1 << 17, + SLSF2_Hide_On_Local_Map = 1 << 18, + SLSF2_Premult_Alpha = 1 << 19, + SLSF2_Cloud_LOD = 1 << 20, + SLSF2_Anisotropic_Lighting = 1 << 21, + SLSF2_No_Transparency_Multisampling = 1 << 22, + SLSF2_Unused01 = 1 << 23, + SLSF2_Multi_Layer_Parallax = 1 << 24, + SLSF2_Soft_Lighting = 1 << 25, + SLSF2_Rim_Lighting = 1 << 26, + SLSF2_Back_Lighting = 1 << 27, + SLSF2_Unused02 = 1 << 28, + SLSF2_Tree_Anim = 1 << 29, + SLSF2_Effect_Lighting = 1 << 30, + SLSF2_HD_LOD_Objects = (long)(1 << 31) + } + [Flags] + enum VectorFlags : uint + { + Has_UV = 1, + Unk2 = 1 << 1, + Unk4 = 1 << 2, + Unk8 = 1 << 3, + Unk16 = 1 << 4, + Unk32 = 1 << 5, + Unk64 = 1 << 6, + Unk128 = 1 << 7, + Unk256 = 1 << 8, + Unk512 = 1 << 9, + Unk1024 = 1 << 10, + Unk2048 = 1 << 11, + Has_Tangents = 1 << 12, + Unk8192 = 1 << 13, + Unk16384 = 1 << 14, + Unk32768 = 1 << 15 + } + + public FormMain() + { + InitializeComponent(); + formMain = this; + } + + private void button1_Click(object sender, EventArgs e) + { + if (tempPath == null) + { + folderBrowserDialog1.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + } + else + { + folderBrowserDialog1.SelectedPath = tempPath; + } + DialogResult result = folderBrowserDialog1.ShowDialog(); + if (result == DialogResult.OK) + { + tempPath = folderBrowserDialog1.SelectedPath; + textBox3.Text = tempPath; + } + } + + private void button2_Click(object sender, System.EventArgs e) + { + if (Directory.Exists(tempPath)) + { + button2.Enabled = false; + foreach (string line in Directory.EnumerateFiles(tempPath, "*.nif", SearchOption.AllDirectories)) + { + currentFile(line); + totalFiles++; + blocksSizeList.Clear(); + blocksStartList.Clear(); + sizeIndex.Clear(); + blocksCount = 0; + bytesFile = null; + fileName = null; + fileChanged = false; + } + outLog.Insert(0, "TOTAL FOUND " + totalFiles.ToString() + " FILES, " + "SUCCESS PROCESSING " + successFiles.ToString() + " FILES"); + File.WriteAllLines(AppDomain.CurrentDomain.BaseDirectory + "NifScan.log", outLog, new UTF8Encoding(false)); + outLog.Clear(); + totalFiles = 0; + successFiles = 0; + button2.Enabled = true; + } + } + + private void currentFile(string path) + { + if (File.Exists(path)) + { + List blocksTypesList = new List(); + List blocksNamesList = new List(); + List stringsList = new List(); + List groupsList = new List(); + outLog.Add(""); + outLog.Add("PROCESS FILE: " + path); + fileName = Path.GetFileName(path); + int fileSize = (int)new FileInfo(path).Length; + if (fileSize < 200) + { + outLog.Add("WARNING! FILE TO SMALL: " + fileName); + return; + } + bytesFile = new byte[fileSize]; + FileStream fs = File.OpenRead(path); + fs.Read(bytesFile, 0, fileSize); + fs.Close(); + string headerError = null; + bool exportInfo = false; + bool blocksType = false; + bool blocksListFull = false; + bool blocksCountFull = false; + bool blocksSizeFull = false; + bool stringsCount = false; + bool maxStringLength = false; + bool stringsFull = false; + bool groupsCount = false; + bool groupsFull = false; + int exportInfoLines = 0; + int blocksTypeCount = 0; + int maxLengthString = 0; + int numGroups = 0; + int numStrings = 0; + int blockStart = 0; + if (bytesFile[39] != 7 || bytesFile[41] != 2 || bytesFile[42] != 20 || bytesFile[44] != 12 || (bytesFile[52] != 83 && bytesFile[52] != 32)) + { + outLog.Add("WARNING! FILE VERSION UNSUPPORTED: " + fileName); + return; + } + try + { + blocksCount = (int)BitConverter.ToUInt32(bytesFile, 48); + if (blocksCount < 1) + { + outLog.Add("WARNING! FILE NOT HAVE BLOCKS OR FILE ERROR"); + return; + } + for (int i = 56; i < bytesFile.Length; i++) + { + if (!exportInfo) + { + i += bytesFile[i]; + exportInfoLines++; + if (exportInfoLines == 3) + { + exportInfo = true; + } + } + else if (!blocksType && exportInfo) + { + blocksTypeCount = BitConverter.ToUInt16(bytesFile, i); + i++; + blocksType = true; + } + else if (!blocksListFull && blocksType) + { + int length = (int)BitConverter.ToUInt32(bytesFile, i); + i += 3; + string word = null; + while (length != 0) + { + i++; + word += Convert.ToChar(bytesFile[i]).ToString(); + length--; + } + blocksTypesList.Add(word); + if (blocksTypeCount == blocksTypesList.Count) + { + blocksListFull = true; + } + } + else if (!blocksCountFull && blocksListFull) + { + blocksNamesList.Add(blocksTypesList[(BitConverter.ToUInt16(bytesFile, i))]); + i++; + if (blocksCount == blocksNamesList.Count) + { + blocksCountFull = true; + } + } + else if (!blocksSizeFull && blocksCountFull) + { + int size = (int)BitConverter.ToUInt32(bytesFile, i); + sizeIndex.Add(i); + i += 3; + blocksSizeList.Add(size); + blocksStartList.Add(blockStart); + blockStart += size; + if (blocksCount == blocksSizeList.Count) + { + blocksSizeFull = true; + } + } + else if (!stringsCount && blocksSizeFull) + { + numStrings = (int)BitConverter.ToUInt32(bytesFile, i); + i += 3; + stringsCount = true; + } + else if (!maxStringLength && stringsCount) + { + maxLengthString = (int)BitConverter.ToUInt32(bytesFile, i); + i += 3; + maxStringLength = true; + } + else if (!stringsFull && maxStringLength) + { + int length = (int)BitConverter.ToUInt32(bytesFile, i); + i += 3; + string word = null; + while (length != 0) + { + i++; + word += Convert.ToChar(bytesFile[i]).ToString(); + length--; + } + stringsList.Add(word); + if (numStrings == stringsList.Count) + { + stringsFull = true; + } + } + else if (!groupsCount && stringsFull) + { + numGroups = (int)BitConverter.ToUInt32(bytesFile, i); + i += 3; + groupsCount = true; + if (numGroups == 0) + { + groupsFull = true; + } + } + else if (!groupsFull && groupsCount) + { + groupsList.Add(BitConverter.ToUInt32(bytesFile, i)); + i += 3; + if (numGroups == groupsList.Count) + { + groupsFull = true; + } + } + else if (groupsFull) + { + for (int j = 0; j < blocksStartList.Count; j++) + { + blocksStartList[j] = blocksStartList[j] + i; + } + if (debugMode) + { + outLog.Add("blocksTypeCount " + blocksTypeCount); + outLog.Add("blocksCount " + blocksCount); + outLog.Add("maxLengthString " + maxLengthString); + outLog.Add("numStrings " + numStrings); + outLog.Add("numGroups " + numGroups); + outLog.Add(""); + outLog.Add("BLOCKS TYPE:"); + outLog.AddRange(blocksTypesList); + outLog.Add(""); + outLog.Add("BLOCKS LIST:"); + for (int l = 0; l < blocksNamesList.Count; l++) + { + outLog.Add(blocksNamesList[l] + " START: " + blocksStartList[l].ToString() + " SIZE: " + blocksSizeList[l]); + + } + outLog.Add(""); + outLog.Add("STRINGS LIST:"); + outLog.AddRange(stringsList); + outLog.Add(""); + outLog.Add("GROUP LIST:"); + if (numGroups != 0) + { + for (int l = 0; l < groupsList.Count; l++) + { + outLog.Add(groupsList[l].ToString()); + } + } + outLog.Add(""); + } + break; + } + } + } + catch (Exception e) + { + headerError = e.Message; + } + if (headerError == null) + { + if (blocksNamesList.Contains("NiTriStrips")) + { + outLog.Add("WARNING! MESH HAVE NITRISTRIPS: " + fileName); + } + for (int i = 0; i < blocksNamesList.Count; i++) + { + int realBlockStart = blocksStartList[i]; + if (blocksNamesList[i] == "BSXFlags") + { + int flag = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + outLog.Add("Have BSXFlags: " + flag.ToString() + " " + fileName); + } + else if (blocksNamesList[i] == "NiNode" || blocksNamesList[i] == "AvoidNode" || blocksNamesList[i] == "BSFadeNode" || blocksNamesList[i] == "BSLeafAnimNode" || blocksNamesList[i] == "RootCollisionNode" || blocksNamesList[i] == "NiBSAnimationNode" || blocksNamesList[i] == "NiBSParticleNode" || blocksNamesList[i] == "NiBone") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4); + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "BSBlastNode" || blocksNamesList[i] == "BSDamageStage" || blocksNamesList[i] == "BSDebrisNode" || blocksNamesList[i] == "BSRangeNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 3; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "BSMasterParticleSystem") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 2; + int jump4 = jump3 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump3) * 4); + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump4, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "BSMultiBoundNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 8; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "BSOrderedNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 17; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "BSTreeNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4); + int jump4 = jump3 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump3) * 4); + int jump5 = jump4 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump4) * 4); + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump5, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "BSValueNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 5; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "FxButton" || blocksNamesList[i] == "FxWidget") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 293; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "FxRadioButton") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 305; + int jump4 = jump3 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump3) * 4); + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump4, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "NiBillboardNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 2; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "NiLODNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 10; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "NiRoom") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4); + int jump4 = jump3 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump3) * 16); + int jump5 = jump4 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump4) * 4); + int jump6 = jump5 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump5) * 4); + int jump7 = jump6 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump6) * 4); + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump7, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "NiRoomGroup") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 4; + int jump4 = jump3 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump3) * 4); + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump4, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "NiSortAdjustNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 4; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i] == "NiSwitchNode") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int childs = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (childs * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4) + 6; + sortBlocks(realBlockStart, jump, childs, realBlockStart + blocksSizeList[i], jump3, i, blocksNamesList[i]); + } + else if (blocksNamesList[i].StartsWith("bhk")) + { + if (blocksNamesList[i] == "bhkRigidBody" || blocksNamesList[i] == "bhkRigidBodyT") + { + if (bytesFile[realBlockStart + 4] != bytesFile[realBlockStart + 36]) + { + outLog.Add("WARNING! COLLISION LAYERS NOT MATCH: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (BitConverter.ToSingle(bytesFile, realBlockStart + 192) != 1 || BitConverter.ToSingle(bytesFile, realBlockStart + 196) != 1) + { + outLog.Add("WARNING! COLLISION FACTORS NOT EQUAL ONE: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + } + if (blocksNamesList[i] == "bhkConvexVerticesShape") + { + int jump = realBlockStart + 32; + int vertices = (int)BitConverter.ToUInt32(bytesFile, jump); + int jump2 = jump + 4 + (vertices * 16); + int normals = (int)BitConverter.ToUInt32(bytesFile, jump2); + bool zero = true; + jump2 += 4; + for (int j = 0; j < normals; j++) + { + float n1 = BitConverter.ToSingle(bytesFile, jump2); + jump2 += 4; + float n2 = BitConverter.ToSingle(bytesFile, jump2); + jump2 += 4; + float n3 = BitConverter.ToSingle(bytesFile, jump2); + jump2 += 8; + if (n1 != 0 || n2 != 0 || n3 != 0) + { + zero = false; + break; + } + } + if (zero) + { + outLog.Add("WARNING! ALL COLLISION NORMALS EQUAL ZERO: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + } + if (checkBox2.Checked || checkBox5.Checked) + { + if (blocksNamesList[i] == "bhkBoxShape" || blocksNamesList[i] == "bhkNiTriStripsShape" || blocksNamesList[i] == "bhkSphereShape" || blocksNamesList[i] == "bhkConvexVerticesShape" || blocksNamesList[i] == "bhkCapsuleShape") + { + checkCollisions(realBlockStart, BitConverter.ToUInt32(bytesFile, realBlockStart)); + } + else if (blocksNamesList[i] == "bhkConvexTransformShape" || blocksNamesList[i] == "bhkConvexSweepShape" || blocksNamesList[i] == "bhkTransformShape") + { + checkCollisions(realBlockStart + 4, BitConverter.ToUInt32(bytesFile, realBlockStart + 4)); + } + else if (blocksNamesList[i] == "bhkListShape" || blocksNamesList[i] == "bhkConvexListShape") + { + int jump = realBlockStart + 4 + ((int)BitConverter.ToUInt32(bytesFile, realBlockStart) * 4); + checkCollisions(jump, BitConverter.ToUInt32(bytesFile, jump)); + } + else if (blocksNamesList[i] == "bhkCompressedMeshShapeData") + { + int jump1 = realBlockStart + 58 + ((int)BitConverter.ToUInt32(bytesFile, realBlockStart + 54) * 4); + int jump2 = jump1 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump1) * 4); + int jump3 = jump2 + 4 + ((int)BitConverter.ToUInt32(bytesFile, jump2) * 4); + int count = bytesFile[jump3]; + jump3 += 4; + for (int j = 0; j < count; j++) + { + checkCollisions(jump3, BitConverter.ToUInt32(bytesFile, jump3)); + jump3 += 8; + } + } + } + } + else if (blocksNamesList[i] == "NiTriShape" || blocksNamesList[i] == "BSLODTriShape") + { + int extra = (int)BitConverter.ToUInt32(bytesFile, realBlockStart + 4); + extraCheck(realBlockStart + 8, extra, i, blocksNamesList[i]); + int jump = realBlockStart + 72 + (extra * 4); + int dataBlock = (int)BitConverter.ToUInt32(bytesFile, jump); + jump += 4; + int skinBlock = (int)BitConverter.ToUInt32(bytesFile, jump); + jump += 4; + int jump2 = jump + 9 + ((int)BitConverter.ToUInt32(bytesFile, jump) * 8); + int shaderBlock = (int)BitConverter.ToUInt32(bytesFile, jump2); + int alphaBlock = (int)BitConverter.ToUInt32(bytesFile, jump2 + 4); + int lods = 0; + if (blocksNamesList[i] == "BSLODTriShape") + { + lods += (int)BitConverter.ToUInt32(bytesFile, jump2 + 8); + lods += (int)BitConverter.ToUInt32(bytesFile, jump2 + 12); + lods += (int)BitConverter.ToUInt32(bytesFile, jump2 + 16); + } + int numVertices = 0; + int vcStart = 0; + int vcYesNo = 0; + bool hasTangents = false; + bool hasNormals = false; + bool hasVColors = false; + bool vcEmpty = vcRemove; + if (((blocksNamesList[i] == "NiTriShape" && (realBlockStart + blocksSizeList[i]) == (jump2 + 8)) || (blocksNamesList[i] == "BSLODTriShape" && (realBlockStart + blocksSizeList[i]) == (jump2 + 20))) && (dataBlock >= -1 && dataBlock < blocksCount) && (skinBlock >= -1 && skinBlock < blocksCount) && (shaderBlock >= -1 && shaderBlock < blocksCount) && (alphaBlock >= -1 && alphaBlock < blocksCount)) + { + if ((dataBlock != -1 && blocksNamesList[dataBlock] != "NiTriShapeData" && blocksNamesList[dataBlock] != "NiTriStripsData") || (skinBlock != -1 && blocksNamesList[skinBlock] != "NiSkinInstance" && blocksNamesList[skinBlock] != "BSDismemberSkinInstance") || (shaderBlock != -1 && blocksNamesList[shaderBlock] != "BSLightingShaderProperty" && blocksNamesList[shaderBlock] != "BSEffectShaderProperty" && blocksNamesList[shaderBlock] != "BSWaterShaderProperty" && blocksNamesList[shaderBlock] != "BSSkyShaderProperty") || (alphaBlock != -1 && blocksNamesList[alphaBlock] != "NiAlphaProperty")) + { + outLog.Add("WARNING! INCORRECT BLOCKS LINKS: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (dataBlock != -1) + { + if ((i + 1 + extra) != dataBlock) + { + outLog.Add("WARNING! NEED REORDER: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (blocksNamesList[dataBlock] == "NiTriStripsData") + { + outLog.Add("WARNING! MESH HAVE NITRISTRIPSDATA: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (blocksNamesList[dataBlock] == "NiTriShapeData") + { + realBlockStart = blocksStartList[dataBlock]; + int jump3 = realBlockStart + 4; + numVertices = BitConverter.ToUInt16(bytesFile, jump3); + jump3 += 4; + if (bytesFile[jump3] == 1 && (verTrim || verX || verY || verZ)) + { + jump3++; + for (int j = 0; j < numVertices; j++) + { + if (verTrim) + { + double vertice = (double)BitConverter.ToSingle(bytesFile, jump3); + verticesTrim(jump3, (double)Math.Round(vertice, 6)); + } + if (verXHard) + { + replaceBytesInFile(jump3, BitConverter.GetBytes((float)verXval)); + } + else if (verX) + { + replaceBytesInFile(jump3, BitConverter.GetBytes(BitConverter.ToSingle(bytesFile, jump3) + (float)verXval)); + } + jump3 += 4; + if (verTrim) + { + double vertice = (double)BitConverter.ToSingle(bytesFile, jump3); + verticesTrim(jump3, (double)Math.Round(vertice, 6)); + } + if (verYHard) + { + replaceBytesInFile(jump3, BitConverter.GetBytes((float)verYval)); + } + else if (verY) + { + replaceBytesInFile(jump3, BitConverter.GetBytes(BitConverter.ToSingle(bytesFile, jump3) + (float)verYval)); + } + jump3 += 4; + if (verTrim) + { + double vertice = (double)BitConverter.ToSingle(bytesFile, jump3); + verticesTrim(jump3, (double)Math.Round(vertice, 6)); + } + if (verZHard) + { + replaceBytesInFile(jump3, BitConverter.GetBytes((float)verZval)); + } + else if (verZ) + { + replaceBytesInFile(jump3, BitConverter.GetBytes(BitConverter.ToSingle(bytesFile, jump3) + (float)verZval)); + } + jump3 += 4; + } + } + else + { + jump3++; + jump3 += numVertices * 12; + } + long convert = BitConverter.ToUInt16(bytesFile, jump3); + hasTangents = ((VectorFlags)convert & VectorFlags.Has_Tangents) != 0; + bool hasUV = ((VectorFlags)convert & VectorFlags.Has_UV) != 0; + jump3 += 6; + if (bytesFile[jump3] == 1) + { + hasNormals = true; + jump3 += numVertices * 12; + if (hasTangents) + { + jump3 += numVertices * 24; + } + } + if (shaderBlock != -1 && ((hasTangents && !hasNormals) || (!hasTangents && hasNormals))) + { + outLog.Add("WARNING! TANGENTS NOT WORK: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + jump3 += 17; + if (bytesFile[jump3] == 1) + { + vcYesNo = jump3; + jump3 = jump3 + (numVertices * 16); + hasVColors = true; + if (checkBox4.Checked || vcRemove || vcColor || vcAlpha) + { + int jump4 = vcYesNo + 1; + vcStart = jump4; + for (int j = 0; j < numVertices; j++) + { + if (checkBox4.Checked || vcRemove) + { + float c1 = floatRoundUp(jump4); + jump4 += 4; + float c2 = floatRoundUp(jump4); + jump4 += 4; + float c3 = floatRoundUp(jump4); + jump4 += 4; + float c4 = floatRoundUp(jump4); + jump4 += 4; + if (vcRemove && (c1 < 0.9 || c2 < 0.9 || c3 < 0.9 || c4 < 0.9)) + { + vcEmpty = false; + if (!checkBox4.Checked) + { + break; + } + } + } + else + { + if (vcColor) + { + replaceBytesInFile(jump4, BitConverter.GetBytes(vcR)); + jump4 += 4; + replaceBytesInFile(jump4, BitConverter.GetBytes(vcG)); + jump4 += 4; + replaceBytesInFile(jump4, BitConverter.GetBytes(vcB)); + jump4 += 4; + } + else + { + jump4 += 12; + } + if (vcAlpha) + { + replaceBytesInFile(jump4, BitConverter.GetBytes(vcA)); + } + jump4 += 4; + } + } + } + } + jump3++; + if (hasUV) + { + jump3 += numVertices * 8; + } + int triangles = BitConverter.ToUInt16(bytesFile, jump3 + 6); + if (numVertices > 0 && triangles < 1) + { + outLog.Add("WARNING! NO TRIANGLES: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (blocksNamesList[i] == "BSLODTriShape" && triangles < lods) + { + outLog.Add("WARNING! LODS MORE TRIANGLES: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + jump3 = jump3 + 12; + if (bytesFile[jump3] == 1) + { + jump3 = jump3 + (triangles * 6); + } + jump3++; + int match = BitConverter.ToUInt16(bytesFile, jump3); + jump3 = jump3 + 2; + if (match > 0) + { + for (int j = 0; j < match; j++) + { + jump3 = jump3 + 2 + (BitConverter.ToUInt16(bytesFile, jump3) * 2); + } + } + if ((realBlockStart + blocksSizeList[dataBlock]) != jump3) + { + outLog.Add("WARNING! ERROR PARS: " + blocksNamesList[dataBlock] + " (" + dataBlock.ToString() + ") " + fileName); + } + } + } + if (shaderBlock != -1 && blocksNamesList[shaderBlock] == "BSLightingShaderProperty") + { + realBlockStart = blocksStartList[shaderBlock]; + int jump3 = realBlockStart + 16 + ((int)BitConverter.ToUInt32(bytesFile, realBlockStart + 8) * 4); + if (jump3 > realBlockStart && (realBlockStart + blocksSizeList[shaderBlock]) > jump3) + { + long shaderFlags1 = BitConverter.ToUInt32(bytesFile, jump3); + bool hasParallaxFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Parallax) != 0; + bool hasCastShadowFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Cast_Shadows) != 0; + bool hasDecalFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Decal) != 0; + bool hasRefractionFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Refraction) != 0; + bool hasSkinFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Skinned) != 0; + bool hasSpaceNormalsFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Model_Space_Normals) != 0; + bool hasVAlphaFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Vertex_Alpha) != 0; + bool hasEnvMapFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Environment_Mapping) != 0; + bool hasEyeEnvMapFlag = ((ShadeFlags1)shaderFlags1 & ShadeFlags1.SLSF1_Eye_Environment_Mapping) != 0; + int textureSetBlock = (int)BitConverter.ToUInt32(bytesFile, jump3 + 24); + bool hasPTexture = false; + bool hasSTexture = false; + string normal = null; + if (textureSetBlock != -1) + { + int jump4 = blocksStartList[textureSetBlock]; + int num = (int)BitConverter.ToUInt32(bytesFile, jump4); + if (num != 9) + { + outLog.Add("WARNING! COUNT OF TEXTURES: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + jump4 += 4; + if (debugMode) + { + outLog.Add(""); + outLog.Add("TEXTURES LIST:"); + } + for (int j = 0; j < num; j++) + { + int length = (int)BitConverter.ToUInt32(bytesFile, jump4); + jump4 += 4; + string word = null; + while (length != 0) + { + word += Convert.ToChar(bytesFile[jump4]).ToString(); + jump4++; + length--; + } + if (j == 1 && !String.IsNullOrEmpty(word)) + { + normal = word; + } + else if (j == 2 && !String.IsNullOrEmpty(word)) + { + hasSTexture = true; + } + else if (j == 3 && !String.IsNullOrEmpty(word) && word.EndsWith("_p.dds", StringComparison.OrdinalIgnoreCase)) + { + if (parallaxCompare && !word.Remove(word.Length - 6).Equals(normal.Remove(normal.Length - 6), StringComparison.OrdinalIgnoreCase)) + { + outLog.Add("WARNING! _P TEXTURE NOT EQUAL _N: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + hasPTexture = true; + } + if (debugMode) + { + outLog.Add((j + 1).ToString() + " " + word); + } + } + } + if (parallaxAdd && normal != null && texturesList.Exists(s => s.Equals(normal, StringComparison.OrdinalIgnoreCase))) + { + if (!parallaxInvert && bytesFile[realBlockStart] == 0 && !hasParallaxFlag && skinBlock == -1) + { + bytesFile[realBlockStart] = 3; + shaderFlags1 += 2048; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + } + else if (parallaxInvert && bytesFile[realBlockStart] == 3 && hasParallaxFlag) + { + bytesFile[realBlockStart] = 0; + shaderFlags1 -= 2048; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + } + } + else if (parallaxRemove && (bytesFile[realBlockStart] == 3 || hasParallaxFlag)) + { + bytesFile[realBlockStart] = 0; + shaderFlags1 -= 2048; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + } + else if (((bytesFile[realBlockStart] == 3 && !hasParallaxFlag) || (bytesFile[realBlockStart] != 3 && hasParallaxFlag)) || ((bytesFile[realBlockStart] == 3 && hasParallaxFlag && (!hasPTexture || !hasVColors || !hasNormals || !hasTangents || skinBlock != -1))) || (hasPTexture && (bytesFile[realBlockStart] != 3 || !hasParallaxFlag))) + { + outLog.Add("WARNING! PARALLAX NOT WORK: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (alphaBlock != -1 && hasCastShadowFlag && hasDecalFlag) + { + if (!checkBox4.Checked) + { + outLog.Add("WARNING! CAST SHADOW ALPHA DECAL: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + else + { + shaderFlags1 -= 512; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + } + } + if ((hasVAlphaFlag && (!hasVColors || (alphaBlock == -1 && !hasRefractionFlag)))) + { + if (!checkBox4.Checked) + { + outLog.Add("WARNING! ALPHA IN TREE AND ALPHA SHADER FLAG CONFLICT: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + else if (hasVAlphaFlag) + { + shaderFlags1 -= 8; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + } + } + if ((checkBox6.Checked || checkBox7.Checked) && comboBox1.SelectedIndex != -1) + { + if (((ShadeFlags1)shaderFlags1 & (ShadeFlags1)(1 << comboBox1.SelectedIndex)) != 0) + { + if (checkBox7.Checked) + { + shaderFlags1 -= 1 << comboBox1.SelectedIndex; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + } + } + else + { + if (checkBox6.Checked) + { + shaderFlags1 += 1 << comboBox1.SelectedIndex; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + } + } + } + if (checkBox4.Checked && hasEyeEnvMapFlag && bytesFile[realBlockStart] == 16) + { + bytesFile[realBlockStart] = 1; + shaderFlags1 -= 131072; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + hasEyeEnvMapFlag = false; + if (!hasEnvMapFlag) + { + shaderFlags1 += 128; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags1)); + hasEnvMapFlag = true; + } + int shaderTrimStart = realBlockStart + blocksSizeList[shaderBlock] - 24; + resizeByteArray(shaderTrimStart, 24, shaderBlock); + if (realBlockStart > shaderTrimStart) + { + realBlockStart -= 24; + } + if (jump3 > shaderTrimStart) + { + jump3 -= 24; + } + } + if ((hasEnvMapFlag && bytesFile[realBlockStart] != 1) || (!hasEnvMapFlag && bytesFile[realBlockStart] == 1) || (hasEyeEnvMapFlag && bytesFile[realBlockStart] != 16) || (!hasEyeEnvMapFlag && bytesFile[realBlockStart] == 16)) + { + outLog.Add("WARNING! ENVIRONMENT MAP SHADER TYPE AND FLAG CONFLICT: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if ((skinBlock != -1 && !hasSkinFlag) || (skinBlock == -1 && hasSkinFlag)) + { + outLog.Add("WARNING! SKIN IN TREE AND SKIN SHADER FLAG CONFLICT: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + jump3 += 4; + long shaderFlags2 = BitConverter.ToUInt32(bytesFile, jump3); + bool hasVCFlag = ((ShadeFlags2)shaderFlags2 & ShadeFlags2.SLSF2_Vertex_Colors) != 0; + bool hasGlowFlag = ((ShadeFlags2)shaderFlags2 & ShadeFlags2.SLSF2_Glow_Map) != 0; + bool hasSoftLightingFlag = ((ShadeFlags2)shaderFlags2 & ShadeFlags2.SLSF2_Soft_Lighting) != 0; + if (hasVColors && vcRemove && vcEmpty && (bytesFile[realBlockStart] == 0 || bytesFile[realBlockStart] == 1)) + { + if (hasVCFlag) + { + shaderFlags2 -= 32; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags2)); + hasVCFlag = false; + } + bytesFile[vcYesNo] = 0; + resizeByteArray(vcStart, numVertices * 16, dataBlock); + hasVColors = false; + if (realBlockStart > vcStart) + { + realBlockStart -= numVertices * 16; + } + if (jump3 > vcStart) + { + jump3 -= numVertices * 16; + } + } + if ((hasVCFlag && !hasVColors) || (!hasVCFlag && hasVColors)) + { + outLog.Add("WARNING! VERTEX COLORS FLAGS NOT MATCH: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if ((bytesFile[realBlockStart] == 2 && !hasGlowFlag) || (bytesFile[realBlockStart] != 2 && hasGlowFlag)) + { + outLog.Add("WARNING! GLOW TYPE SHADER NOT MATCH: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (!hasSTexture && hasSoftLightingFlag) + { + if (!checkBox4.Checked) + { + outLog.Add("WARNING! HAS SOFTLIGHTING FLAG BUT TEXTURE NOT: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + else + { + shaderFlags2 -= 33554432; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags2)); + } + } + if ((checkBox8.Checked || checkBox9.Checked) && comboBox2.SelectedIndex != -1) + { + if (((ShadeFlags2)shaderFlags2 & (ShadeFlags2)(1 << comboBox2.SelectedIndex)) != 0) + { + if (checkBox9.Checked) + { + shaderFlags2 -= 1 << comboBox2.SelectedIndex; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags2)); + } + } + else + { + if (checkBox8.Checked) + { + shaderFlags2 += 1 << comboBox2.SelectedIndex; + replaceBytesInFile(jump3, BitConverter.GetBytes(shaderFlags2)); + } + } + } + jump3 += 24; + if ((ecColor || ecMultiple) && (bytesFile[realBlockStart] == ecShaderType || ecShaderType == 21)) + { + if (ecColor) + { + replaceBytesInFile(jump3, BitConverter.GetBytes(ecR)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes(ecG)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes(ecB)); + jump3 += 4; + } + else + { + jump3 += 12; + } + if (ecMultiple) + { + replaceBytesInFile(jump3, BitConverter.GetBytes(ecM)); + } + jump3 += 4; + } + else if (checkBox4.Checked) + { + float c1 = floatRoundUp(jump3); + jump3 += 4; + float c2 = floatRoundUp(jump3); + jump3 += 4; + float c3 = floatRoundUp(jump3); + jump3 += 4; + float multi = BitConverter.ToSingle(bytesFile, jump3); + if (multi != 0 && c1 == 0 && c2 == 0 && c3 == 0 && bytesFile[realBlockStart] != 2) + { + replaceBytesInFile(jump3, BitConverter.GetBytes(0)); + } + jump3 += 4; + } + else + { + jump3 += 16; + } + jump3 += 12; + if (bytesFile[realBlockStart] == 5 && hasSkinFlag && hasSpaceNormalsFlag) + { + if (realBlockStart + blocksSizeList[shaderBlock] == jump3 + 40) + { + if (hasTangents || hasNormals || hasVColors || hasVCFlag) + { + outLog.Add("WARNING! SKIN INCORRECT PARAMETERS: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + if (checkBox10.Checked) + { + replaceBytesInFile(jump3, BitConverter.GetBytes((float)23)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes((float)0.663)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes((float)0.855)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes((float)1)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes((float)4.5)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes((float)0.4)); + jump3 += 4; + replaceBytesInFile(jump3, BitConverter.GetBytes((float)2)); + } + } + else + { + outLog.Add("WARNING! ERROR PARS: " + blocksNamesList[shaderBlock] + " (" + shaderBlock.ToString() + ") " + fileName); + } + } + } + else + { + outLog.Add("WARNING! ERROR PARS: " + blocksNamesList[shaderBlock] + " (" + shaderBlock.ToString() + ") " + fileName); + } + } + } + else + { + outLog.Add("WARNING! ERROR PARS: " + blocksNamesList[i] + " (" + i.ToString() + ") " + fileName); + } + } + } + if (fileChanged) + { + File.WriteAllBytes(path, bytesFile); + outLog.Add("ATTENTION! FILE WAS UPDATE: " + fileName); + } + successFiles++; + } + else + { + outLog.Add("WARNING! HEADER READ ERROR: " + fileName + " SOME REASON: " + headerError); + } + blocksTypesList = null; + blocksNamesList = null; + stringsList = null; + groupsList = null; + } + } + + private void verticesTrim(int jump, double value) + { + string premath = value.ToString(); + int index = premath.IndexOf(","); + double trim = 0; + if (index > 0) + { + if (premath.Length > (index + verTrimNum + 1)) + { + premath = premath.Remove(index + verTrimNum + 1); + } + Double.TryParse(premath.Replace(',', '.'), NumberStyles.Number, CultureInfo.InvariantCulture, out trim); + replaceBytesInFile(jump, BitConverter.GetBytes((float)trim)); + } + } + + private void extraCheck(int start, int count, int blockIndex, string name) + { + for (int i = 0; i < count; i++) + { + int extra = (int)BitConverter.ToUInt32(bytesFile, start); + if (extra < 0 || extra > blocksCount) + { + outLog.Add("WARNING! EXTRA BLOCKS: " + name + " (" + blockIndex.ToString() + ") " + fileName); + } + start += 4; + } + } + + private void sortBlocks(int blockStart, int jump, int childs, int blockSize, int blockEnd, int blockIndex, string name) + { + if (childs > 0) + { + List childsList = new List(); + bool dubBlocks = false; + bool warnBlocks = false; + jump += 4; + int startList = jump; + if (blockSize == blockEnd) + { + for (int i = 0; i < childs; i++) + { + int child = (int)BitConverter.ToUInt32(bytesFile, jump); + if (child == -1) + { + childsList.Add(-1); + outLog.Add("WARNING! NONE CHILDREN BLOCKS: " + name + " (" + blockIndex.ToString() + ") " + fileName); + } + else if (childsList.Contains(child)) + { + childsList.Add(-1); + outLog.Add("WARNING! DUB CHILDREN BLOCKS: " + name + " (" + blockIndex.ToString() + ") " + fileName); + dubBlocks = true; + } + else if (child >= 0 && child < blocksCount) + { + childsList.Add(child); + } + else + { + warnBlocks = true; + outLog.Add("WARNING! NOT VALID CHILDREN BLOCKS: " + name + " (" + blockIndex.ToString() + ") " + fileName); + } + jump += 4; + } + } + else + { + warnBlocks = true; + outLog.Add("WARNING! ERROR PARS: " + name + " (" + blockIndex.ToString() + "): " + fileName); + } + if (checkBox3.Checked) + { + if (!warnBlocks) + { + if (dubBlocks) + { + outLog.Add("WARNING! DUB CHILDREN BLOCKS WAS REPLACED TO NONE: " + name + " (" + blockIndex.ToString() + ") " + fileName); + } + childsList.Sort(); + int listCount = 0; + for (int i = 0; listCount < childsList.Count; i++) + { + if (childsList[i] == -1) + { + childsList.RemoveAt(i); + childsList.Add(-1); + i--; + } + listCount++; + } + for (int j = 0; j < childsList.Count; j++) + { + replaceBytesInFile(startList, BitConverter.GetBytes(childsList[j])); + startList += 4; + } + } + else + { + outLog.Add("WARNING! SORTING NOT APPLICABLE: " + name + " (" + blockIndex.ToString() + ") " + fileName); + } + } + } + else if (childs < 0) + { + outLog.Add("WARNING! ERROR PARS: " + name + " (" + blockIndex.ToString() + "): " + fileName); + } + } + + private float floatRoundUp(int jump) + { + float n = BitConverter.ToSingle(bytesFile, jump); + if (float.IsNaN(n) || n > 0.989) + { + replaceBytesInFile(jump, BitConverter.GetBytes((float)1)); + n = (float)1; + } + else if (n < 0.011) + { + replaceBytesInFile(jump, BitConverter.GetBytes((float)0)); + n = (float)0; + } + return n; + } + + private void resizeByteArray(int start, int length, int block) + { + List list = new List(bytesFile); + list.RemoveRange(start, length); + bytesFile = null; + bytesFile = list.ToArray(); + list = null; + blocksSizeList[block] = blocksSizeList[block] - length; + replaceBytesInFile(sizeIndex[block], BitConverter.GetBytes(blocksSizeList[block])); + for (int i = 0; i < blocksStartList.Count; i++) + { + if (blocksStartList[i] > start) + { + blocksStartList[i] = blocksStartList[i] - length; + } + } + } + + private void replaceBytesInFile(int start, byte[] array) + { + bytesFile[start] = array[0]; + bytesFile[start + 1] = array[1]; + bytesFile[start + 2] = array[2]; + bytesFile[start + 3] = array[3]; + fileChanged = true; + } + + private byte[] materialBytes(string line) + { + byte[] bytesArray = new byte[4]; + if (line == "SKY_HAV_MAT_BROKEN_STONE") + { + bytesArray[0] = 71; + bytesArray[1] = 55; + bytesArray[2] = 209; + bytesArray[3] = 7; + } + else if (line == "SKY_HAV_MAT_LIGHT_WOOD") + { + bytesArray[0] = 227; + bytesArray[1] = 222; + bytesArray[2] = 199; + bytesArray[3] = 21; + } + else if (line == "SKY_HAV_MAT_SNOW") + { + bytesArray[0] = 175; + bytesArray[1] = 122; + bytesArray[2] = 199; + bytesArray[3] = 23; + } + else if (line == "SKY_HAV_MAT_GRAVEL") + { + bytesArray[0] = 88; + bytesArray[1] = 186; + bytesArray[2] = 139; + bytesArray[3] = 25; + } + else if (line == "SKY_HAV_MAT_MATERIAL_CHAIN_METAL") + { + bytesArray[0] = 228; + bytesArray[1] = 68; + bytesArray[2] = 41; + bytesArray[3] = 26; + } + else if (line == "SKY_HAV_MAT_BOTTLE") + { + bytesArray[0] = 246; + bytesArray[1] = 8; + bytesArray[2] = 107; + bytesArray[3] = 29; + } + else if (line == "SKY_HAV_MAT_WOOD") + { + bytesArray[0] = 17; + bytesArray[1] = 198; + bytesArray[2] = 217; + bytesArray[3] = 29; + } + else if (line == "SKY_HAV_MAT_SKIN") + { + bytesArray[0] = 2; + bytesArray[1] = 183; + bytesArray[2] = 61; + bytesArray[3] = 35; + } + else if (line == "SKY_HAV_MAT_BARREL") + { + bytesArray[0] = 20; + bytesArray[1] = 150; + bytesArray[2] = 163; + bytesArray[3] = 43; + } + else if (line == "SKY_HAV_MAT_MATERIAL_CERAMIC_MEDIUM") + { + bytesArray[0] = 91; + bytesArray[1] = 51; + bytesArray[2] = 151; + bytesArray[3] = 46; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BASKET") + { + bytesArray[0] = 110; + bytesArray[1] = 105; + bytesArray[2] = 34; + bytesArray[3] = 47; + } + else if (line == "SKY_HAV_MAT_ICE") + { + bytesArray[0] = 28; + bytesArray[1] = 93; + bytesArray[2] = 14; + bytesArray[3] = 52; + } + else if (line == "SKY_HAV_MAT_STAIRS_STONE") + { + bytesArray[0] = 61; + bytesArray[1] = 115; + bytesArray[2] = 157; + bytesArray[3] = 53; + } + else if (line == "SKY_HAV_MAT_WATER") + { + bytesArray[0] = 199; + bytesArray[1] = 227; + bytesArray[2] = 17; + bytesArray[3] = 61; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BLADE_1HAND") + { + bytesArray[0] = 164; + bytesArray[1] = 224; + bytesArray[2] = 48; + bytesArray[3] = 63; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BOOK") + { + bytesArray[0] = 82; + bytesArray[1] = 96; + bytesArray[2] = 97; + bytesArray[3] = 75; + } + else if (line == "SKY_HAV_MAT_MATERIAL_CARPET") + { + bytesArray[0] = 63; + bytesArray[1] = 145; + bytesArray[2] = 177; + bytesArray[3] = 76; + } + else if (line == "SKY_HAV_MAT_SOLID_METAL") + { + bytesArray[0] = 59; + bytesArray[1] = 204; + bytesArray[2] = 202; + bytesArray[3] = 76; + } + else if (line == "SKY_HAV_MAT_MATERIAL_AXE_1HAND") + { + bytesArray[0] = 203; + bytesArray[1] = 2; + bytesArray[2] = 211; + bytesArray[3] = 77; + } + else if (line == "SKY_HAV_MAT_STAIRS_WOOD") + { + bytesArray[0] = 149; + bytesArray[1] = 245; + bytesArray[2] = 31; + bytesArray[3] = 87; + } + else if (line == "SKY_HAV_MAT_MUD") + { + bytesArray[0] = 129; + bytesArray[1] = 112; + bytesArray[2] = 152; + bytesArray[3] = 88; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BOULDER_SMALL") + { + bytesArray[0] = 214; + bytesArray[1] = 13; + bytesArray[2] = 113; + bytesArray[3] = 92; + } + else if (line == "SKY_HAV_MAT_STAIRS_SNOW") + { + bytesArray[0] = 43; + bytesArray[1] = 73; + bytesArray[2] = 1; + bytesArray[3] = 93; + } + else if (line == "SKY_HAV_MAT_HEAVY_STONE") + { + bytesArray[0] = 64; + bytesArray[1] = 215; + bytesArray[2] = 160; + bytesArray[3] = 93; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BOWS_STAVES") + { + bytesArray[0] = 65; + bytesArray[1] = 214; + bytesArray[2] = 202; + bytesArray[3] = 95; + } + else if (line == "SKY_HAV_MAT_MATERIAL_WOOD_AS_STAIRS") + { + bytesArray[0] = 12; + bytesArray[1] = 80; + bytesArray[2] = 128; + bytesArray[3] = 107; + } + else if (line == "SKY_HAV_MAT_GRASS") + { + bytesArray[0] = 238; + bytesArray[1] = 104; + bytesArray[2] = 47; + bytesArray[3] = 110; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BOULDER_LARGE") + { + bytesArray[0] = 123; + bytesArray[1] = 206; + bytesArray[2] = 95; + bytesArray[3] = 112; + } + else if (line == "SKY_HAV_MAT_MATERIAL_STONE_AS_STAIRS") + { + bytesArray[0] = 127; + bytesArray[1] = 69; + bytesArray[2] = 107; + bytesArray[3] = 112; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BLADE_2HAND") + { + bytesArray[0] = 116; + bytesArray[1] = 154; + bytesArray[2] = 144; + bytesArray[3] = 120; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BOTTLE_SMALL") + { + bytesArray[0] = 88; + bytesArray[1] = 44; + bytesArray[2] = 191; + bytesArray[3] = 120; + } + else if (line == "SKY_HAV_MAT_SAND") + { + bytesArray[0] = 13; + bytesArray[1] = 77; + bytesArray[2] = 62; + bytesArray[3] = 129; + } + else if (line == "SKY_HAV_MAT_HEAVY_METAL") + { + bytesArray[0] = 163; + bytesArray[1] = 38; + bytesArray[2] = 226; + bytesArray[3] = 132; + } + else if (line == "SKY_HAV_MAT_DRAGON") + { + bytesArray[0] = 23; + bytesArray[1] = 136; + bytesArray[2] = 26; + bytesArray[3] = 150; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BLADE_1HAND_SMALL") + { + bytesArray[0] = 204; + bytesArray[1] = 170; + bytesArray[2] = 10; + bytesArray[3] = 156; + } + else if (line == "SKY_HAV_MAT_MATERIAL_SKIN_SMALL") + { + bytesArray[0] = 62; + bytesArray[1] = 189; + bytesArray[2] = 230; + bytesArray[3] = 156; + } + else if (line == "SKY_HAV_MAT_STAIRS_BROKEN_STONE") + { + bytesArray[0] = 91; + bytesArray[1] = 105; + bytesArray[2] = 102; + bytesArray[3] = 172; + } + else if (line == "SKY_HAV_MAT_MATERIAL_SKIN_LARGE") + { + bytesArray[0] = 147; + bytesArray[1] = 126; + bytesArray[2] = 200; + bytesArray[3] = 176; + } + else if (line == "SKY_HAV_MAT_ORGANIC") + { + bytesArray[0] = 219; + bytesArray[1] = 173; + bytesArray[2] = 81; + bytesArray[3] = 177; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BONE") + { + bytesArray[0] = 20; + bytesArray[1] = 124; + bytesArray[2] = 194; + bytesArray[3] = 181; + } + else if (line == "SKY_HAV_MAT_HEAVY_WOOD") + { + bytesArray[0] = 71; + bytesArray[1] = 112; + bytesArray[2] = 8; + bytesArray[3] = 183; + } + else if (line == "SKY_HAV_MAT_MATERIAL_CHAIN") + { + bytesArray[0] = 102; + bytesArray[1] = 67; + bytesArray[2] = 59; + bytesArray[3] = 183; + } + else if (line == "SKY_HAV_MAT_DIRT") + { + bytesArray[0] = 170; + bytesArray[1] = 62; + bytesArray[2] = 35; + bytesArray[3] = 185; + } + else if (line == "SKY_HAV_MAT_MATERIAL_ARMOR_LIGHT") + { + bytesArray[0] = 157; + bytesArray[1] = 22; + bytesArray[2] = 33; + bytesArray[3] = 204; + } + else if (line == "SKY_HAV_MAT_MATERIAL_SHIELD_LIGHT") + { + bytesArray[0] = 248; + bytesArray[1] = 211; + bytesArray[2] = 134; + bytesArray[3] = 205; + } + else if (line == "SKY_HAV_MAT_MATERIAL_COIN") + { + bytesArray[0] = 62; + bytesArray[1] = 84; + bytesArray[2] = 237; + bytesArray[3] = 213; + } + else if (line == "SKY_HAV_MAT_MATERIAL_SHIELD_HEAVY") + { + bytesArray[0] = 80; + bytesArray[1] = 251; + bytesArray[2] = 173; + bytesArray[3] = 220; + } + else if (line == "SKY_HAV_MAT_MATERIAL_ARMOR_HEAVY") + { + bytesArray[0] = 53; + bytesArray[1] = 48; + bytesArray[2] = 10; + bytesArray[3] = 221; + } + else if (line == "SKY_HAV_MAT_MATERIAL_ARROW") + { + bytesArray[0] = 146; + bytesArray[1] = 181; + bytesArray[2] = 14; + bytesArray[3] = 222; + } + else if (line == "SKY_HAV_MAT_GLASS") + { + bytesArray[0] = 66; + bytesArray[1] = 72; + bytesArray[2] = 233; + bytesArray[3] = 222; + } + else if (line == "SKY_HAV_MAT_STONE") + { + bytesArray[0] = 55; + bytesArray[1] = 242; + bytesArray[2] = 2; + bytesArray[3] = 223; + } + else if (line == "SKY_HAV_MAT_CLOTH") + { + bytesArray[0] = 163; + bytesArray[1] = 156; + bytesArray[2] = 211; + bytesArray[3] = 228; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BLUNT_2HAND") + { + bytesArray[0] = 213; + bytesArray[1] = 43; + bytesArray[2] = 155; + bytesArray[3] = 236; + } + else if (line == "SKY_HAV_MAT_MATERIAL_BOULDER_MEDIUM") + { + bytesArray[0] = 226; + bytesArray[1] = 168; + bytesArray[2] = 86; + bytesArray[3] = 255; + } + else + { + outLog.Add("WARNING! WAS REPLACED WRONG MATERIAL COLLISION: " + fileName); + } + return bytesArray; + } + + private void checkCollisions(int jump, long coll) + { + string mat = null; + if (coll == 131151687) + { + mat = "SKY_HAV_MAT_BROKEN_STONE"; + } + else if (coll == 365420259) + { + mat = "SKY_HAV_MAT_LIGHT_WOOD"; + } + else if (coll == 398949039) + { + mat = "SKY_HAV_MAT_SNOW"; + } + else if (coll == 428587608) + { + mat = "SKY_HAV_MAT_GRAVEL"; + } + else if (coll == 438912228) + { + mat = "SKY_HAV_MAT_MATERIAL_CHAIN_METAL"; + } + else if (coll == 493553910) + { + mat = "SKY_HAV_MAT_BOTTLE"; + } + else if (coll == 500811281) + { + mat = "SKY_HAV_MAT_WOOD"; + } + else if (coll == 591247106) + { + mat = "SKY_HAV_MAT_SKIN"; + } + else if (coll == 732141076) + { + mat = "SKY_HAV_MAT_BARREL"; + } + else if (coll == 781661019) + { + mat = "SKY_HAV_MAT_MATERIAL_CERAMIC_MEDIUM"; + } + else if (coll == 790784366) + { + mat = "SKY_HAV_MAT_MATERIAL_BASKET"; + } + else if (coll == 873356572) + { + mat = "SKY_HAV_MAT_ICE"; + } + else if (coll == 899511101) + { + mat = "SKY_HAV_MAT_STAIRS_STONE"; + } + else if (coll == 1024582599) + { + mat = "SKY_HAV_MAT_WATER"; + } + else if (coll == 1060167844) + { + mat = "SKY_HAV_MAT_MATERIAL_BLADE_1HAND"; + } + else if (coll == 1264672850) + { + mat = "SKY_HAV_MAT_MATERIAL_BOOK"; + } + else if (coll == 1286705471) + { + mat = "SKY_HAV_MAT_MATERIAL_CARPET"; + } + else if (coll == 1288358971) + { + mat = "SKY_HAV_MAT_SOLID_METAL"; + } + else if (coll == 1305674443) + { + mat = "SKY_HAV_MAT_MATERIAL_AXE_1HAND"; + } + else if (coll == 1461712277) + { + mat = "SKY_HAV_MAT_STAIRS_WOOD"; + } + else if (coll == 1486385281) + { + mat = "SKY_HAV_MAT_MUD"; + } + else if (coll == 1550912982) + { + mat = "SKY_HAV_MAT_MATERIAL_BOULDER_SMALL"; + } + else if (coll == 1560365355) + { + mat = "SKY_HAV_MAT_STAIRS_SNOW"; + } + else if (coll == 1570821952) + { + mat = "SKY_HAV_MAT_HEAVY_STONE"; + } + else if (coll == 1607128641) + { + mat = "SKY_HAV_MAT_MATERIAL_BOWS_STAVES"; + } + else if (coll == 1803571212) + { + mat = "SKY_HAV_MAT_MATERIAL_WOOD_AS_STAIRS"; + } + else if (coll == 1848600814) + { + mat = "SKY_HAV_MAT_GRASS"; + } + else if (coll == 1885326971) + { + mat = "SKY_HAV_MAT_MATERIAL_BOULDER_LARGE"; + } + else if (coll == 1886078335) + { + mat = "SKY_HAV_MAT_MATERIAL_STONE_AS_STAIRS"; + } + else if (coll == 2022742644) + { + mat = "SKY_HAV_MAT_MATERIAL_BLADE_2HAND"; + } + else if (coll == 2025794648) + { + mat = "SKY_HAV_MAT_MATERIAL_BOTTLE_SMALL"; + } + else if (coll == 2168343821) + { + mat = "SKY_HAV_MAT_SAND"; + } + else if (coll == 2229413539) + { + mat = "SKY_HAV_MAT_HEAVY_METAL"; + } + else if (coll == 2518321175) + { + mat = "SKY_HAV_MAT_DRAGON"; + } + else if (coll == 2617944780) + { + mat = "SKY_HAV_MAT_MATERIAL_BLADE_1HAND_SMALL"; + } + else if (coll == 2632367422) + { + mat = "SKY_HAV_MAT_MATERIAL_SKIN_SMALL"; + } + else if (coll == 2892392795) + { + mat = "SKY_HAV_MAT_STAIRS_BROKEN_STONE"; + } + else if (coll == 2965929619) + { + mat = "SKY_HAV_MAT_MATERIAL_SKIN_LARGE"; + } + else if (coll == 2974920155) + { + mat = "SKY_HAV_MAT_ORGANIC"; + } + else if (coll == 3049421844) + { + mat = "SKY_HAV_MAT_MATERIAL_BONE"; + } + else if (coll == 3070783559) + { + mat = "SKY_HAV_MAT_HEAVY_WOOD"; + } + else if (coll == 3074114406) + { + mat = "SKY_HAV_MAT_MATERIAL_CHAIN"; + } + else if (coll == 3106094762) + { + mat = "SKY_HAV_MAT_DIRT"; + } + else if (coll == 3424720541) + { + mat = "SKY_HAV_MAT_MATERIAL_ARMOR_LIGHT"; + } + else if (coll == 3448165368) + { + mat = "SKY_HAV_MAT_MATERIAL_SHIELD_LIGHT"; + } + else if (coll == 3589100606) + { + mat = "SKY_HAV_MAT_MATERIAL_COIN"; + } + else if (coll == 3702389584) + { + mat = "SKY_HAV_MAT_MATERIAL_SHIELD_HEAVY"; + } + else if (coll == 3708432437) + { + mat = "SKY_HAV_MAT_MATERIAL_ARMOR_HEAVY"; + } + else if (coll == 3725505938) + { + mat = "SKY_HAV_MAT_MATERIAL_ARROW"; + } + else if (coll == 3739830338) + { + mat = "SKY_HAV_MAT_GLASS"; + } + else if (coll == 3741512247) + { + mat = "SKY_HAV_MAT_STONE"; + } + else if (coll == 3839073443) + { + mat = "SKY_HAV_MAT_CLOTH"; + } + else if (coll == 3969592277) + { + mat = "SKY_HAV_MAT_MATERIAL_BLUNT_2HAND"; + } + else if (coll == 4283869410) + { + mat = "SKY_HAV_MAT_MATERIAL_BOULDER_MEDIUM"; + } + if (checkBox2.Checked) + { + if (mat != null) + { + outLog.Add("HAVE MATERIAL: " + mat); + } + else + { + outLog.Add("WARNING! WRONG MATERIAL COLLISION: " + fileName); + } + } + if (checkBox5.Checked && mat == textBox1.Text && textBox2.Text.Length > 12) + { + replaceBytesInFile(jump, materialBytes(textBox2.Text)); + } + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + debugMode = !debugMode; + } + + private void checkBox5_CheckedChanged(object sender, EventArgs e) + { + textBox1.Enabled = checkBox5.Checked; + textBox2.Enabled = checkBox5.Checked; + } + + private void checkBox6_CheckedChanged(object sender, EventArgs e) + { + if (checkBox6.Checked) + { + checkBox7.Checked = false; + } + } + + private void checkBox7_CheckedChanged(object sender, EventArgs e) + { + if (checkBox7.Checked) + { + checkBox6.Checked = false; + } + } + + private void checkBox8_CheckedChanged(object sender, EventArgs e) + { + if (checkBox8.Checked) + { + checkBox9.Checked = false; + } + } + + private void checkBox9_CheckedChanged(object sender, EventArgs e) + { + if (checkBox9.Checked) + { + checkBox8.Checked = false; + } + } + + private void checkBox4_CheckedChanged(object sender, EventArgs e) + { + if (checkBox4.Checked) + { + fixesOn = true; + vcColor = false; + vcAlpha = false; + buttonColorVC(vcRemove); + } + else + { + fixesOn = false; + } + } + + private void button3_Click(object sender, EventArgs e) + { + var form = new FormParallax(); + form.ShowDialog(); + form = null; + } + + private void button4_Click(object sender, EventArgs e) + { + var form = new FormEC(); + form.ShowDialog(); + form = null; + } + + private void button5_Click(object sender, EventArgs e) + { + var form = new FormVC(); + form.ShowDialog(); + form = null; + } + + private void button6_Click(object sender, EventArgs e) + { + var form = new FormVer(); + form.ShowDialog(); + form = null; + } + + public void buttonColorParallax(bool edit) + { + buttonColor(button3, edit); + } + + public void buttonColorEC(bool edit) + { + buttonColor(button4, edit); + } + + public void buttonColorVC(bool edit) + { + buttonColor(button5, edit); + } + + public void buttonColorVer(bool edit) + { + buttonColor(button6, edit); + } + + private void buttonColor(Button button, bool edit) + { + if (edit) + { + button.ForeColor = System.Drawing.Color.DarkRed; + } + else + { + button.ForeColor = System.Drawing.SystemColors.ControlText; + } + } + } +} diff --git a/Nifscan/FormMain.resx b/Nifscan/FormMain.resx new file mode 100644 index 0000000..d0233c4 --- /dev/null +++ b/Nifscan/FormMain.resx @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAMGAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAADgAAADEAAABlAAAAfAAA + AGwAAABIAAAAKQAAABkAAAANAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAZIBQUU2xK + SbKEW1nZZkZFvCIXF6MDAgKhAAAAkAAAAHMAAABPAAAAMQAAABwAAAAQAAAABgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAA + AChAKyt6jV5e57WQj//dzMz/v6Gg/6J3df+SZWPxZ0dFvzAhIaUHBQWgAAAAlwAAAHwAAABZAAAAOAAA + ACEAAAATAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAASDQcHQGNCQqSba2v8zK6u/+3d3f/8+vr/+/j4//j09P/j1NT/xamo/6iAfv+XaGb5dVFQzD8r + K6kQCwqgAAAAmwAAAIQAAABjAAAAQQAAACYAAAAXAAAACwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABgAAAB8qHBxiglZW0Kp/f//gysr/69nZ/+zb2//8+fn/+/f3//r29v/59PT/+PLy//fw + 8P/o2tr/y7Kx/6+JiP+abGr9g1pZ2083NrAaEhKhAgEBnwAAAIwAAABtAAAASgAAAC0AAAAbAAAADwAA + AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAMAAAAL04zM4qTY2PxwJ6e/+zb2//s29v/69jY/+zb2//7+Pj/+vb2//n1 + 9f/48/P/8+jo/+nU1P/mzc3/69fX//Pp6f/r3d3/0bm4/7aSkf+dcW/+jWFf6V5BQbkpHBujBQMDoQAA + AJMAAAB2AAAAVAAAADQAAAAfAAAAEgAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgWDw9NcktLtqBycv7YwcH/7+Dg/+3d3f/k0dH/xa6u/+za + 2v/79/f/+vb2//n09P/06ur/5c3N/9W4uP+BZ3P/WkV1/4t2kv/u4eH/8eXl//Dj4//o09P/1r28/7ya + mf+jeHb/k2Zk9G5MSsU3JiWnCwgHoQAAAJkAAAB/AAAAXgAAADwAAAAjAAAAFQAAAAoAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAITckJHKKXFzgtI2N/+na2v/w4uL/7t7e/9K9 + vf+QdXX/o4qK/+vZ2f/69vb/+fX1//jz8//s2tr/3sXF/2VMTP86KHf/PS6Q/yMWcv94ZYr/8eTk//Di + 4v/RpKT/6tfX/+3d3f/r2tr/28TE/8KhoP+pf37/l2ln+3tWVNNGMTCsFQ4OoQAAAJwAAACIAAAAZwAA + AEUAAAApAAAAGQAAAA0AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAApFBQZbUlJm5ppafrNsbH/8ebm//Dj + 4//s3Nz/uqGh/4xubv+CZmb/oIeH/+vY2P/69vb/+fT0//fv7//q19f/n4eH/1o8PP9POqT/fXDO/zop + nP8mGGz/3MbJ//Di4v/RpKT/9ezs/+3d3f/s2tr/6tfX/+fR0f/mzs7/38fG/8enpv+vh4X/mm1r/ole + XeJWPDu0IRYWogMBAaEAAACQAAAAcQAAAE8AAAAwAAAAHAAAABAAAAAGAAAAAQAAAACLX16TrIaE/+PT + 0//z6Oj/8eXl/9/Ozv+niYn/kXFx/4hqav9/Y2P/nYWF/+rX1//59fX/+PPz//bu7v/s2dn/nYKC/3RN + Tf9qRpT/cV3n/2BQv/8tIH3/v6Wv/+/h4f/RpKT/9evr/+3c3P/r2Nj/5c3N/9O1tf+Td4b/jnWP/9vC + xf/mz8//4cjI/8urq/+0jYz/n3Jw/5JkY/FmRka+LiAfpAcFBaIAAACWAAAAewAAAFgAAAA3AAAAHgAA + AAmVZ2XT4tLS//Tq6v/x5eX/zbW1/6F/f/+Wdnb/jW9v/4RoaP97YWH/m4OD/+rW1v/59PT/+PLy//bv + 7//u3t7/yrCw/4xeXv+MXV//Xj6Y/0czqf9BL3H/2ry9/+/g4P/RpKT/9evr/+zb2//q1tb/1r29/1pC + Sf86LIf/KBp7/0c2cf/fxsf/4MPD/9iysv/jyMj/4MXF/9Cvrv+5kpH/pHd1/5doZvl1UVDLPispqQ8K + CqAAAACaAAAAeQAAADOWZWTd5tbW/+rb2/+9nZ3/pYGB/5x6ev+Tc3P/imxs/4BlZf9+ZWX/wKmp/+nW + 1v/48/P/9/Hx//bv7//x5eX/69jY/6qFhf91Tk7/YEBA/041Nf+skpL/5MvL/+7f3//RpKT/9evr/+za + 2v/q19f/jnV1/1k7S/9mVsX/XU64/ygZff+chJv/3r+//9WsrP/r2dn/4cbG/+DExP/gwsL/38DA/9Ox + sP++l5b/qX17/5lraf2CWljZEQsLoAAAAGOVY2Pc49LS/7eSkv+qhYX/oX5+/5h3d/+PcHD/hmlp/5Z8 + fP/XwcH/5c3N/+nU1P/48vL/9/Dw//bu7v/17Oz/7+Hh/+nW1v+vlpb/jnV1/8Kqqv/mzs7/6tfX/+7e + 3v/RpKT/9Orq/+za2v/s2tr/kXNz/3tSUv9lRr7/cGDX/0M0m/+FbZH/3r6+/9ixsf/z6en/4cXF/+HF + xf/ky8v/17m5/6KFkv+vkJ3/27m5/9Wxsf+0ion/YEJBuAAAAHOVY2Pc49HR/7GLi/+ng4P/nnx8/5V1 + df+Nb2//tZ2d/+XQ0P/mz8//5MzM/+nU1P/38fH/9+/v//jy8v/27+//8+np//Dh4f/t3Nz/69jY/+rX + 1//r2dn/7t7e/+3d3f/Ro6P/9Orq/+vY2P/u3t7/xqqq/5BfX/9/VGD/UzeN/0Ascv/Cpqz/3r6+/9ix + sf/z6Oj/4MTE/+fQ0P/Wvr7/XERS/zgqhP8jFm7/i3CL/9q3t//Fnp3/bUtJwQAAAHOVY2Pc49HR/66K + iv+jgID/mnl5/5Fycv+xmJj/xa6u/8Cpqf+/qKj/1r29/+jT0//38PD/4cTE/+bOzv/y5ub/+/j4//v4 + +P/48fH/9Orq//Dj4//v4OD/7t7e/+3c3P/Ro6P/9Onp/+rX1//t29v/69nZ/62MjP9oRkb/Vzw8/6GI + iP/ky8v/3r+//9aurv/z6Oj/4MPD/+vY2P+SeXn/XD1X/2xdyv9MPKn/MiJv/9eys//Fnp3/aklIvwAA + AHOVY2Pc49HR/6yJif+gfX3/l3Z2/41vb/+EaGj/e2Fh/3JaWv9pU1P/tp2d/+jS0v/37+//48jI/9ex + sf/Pn5//zZyc/9aurv/ixcX/7dvb//jy8v/8+vr/+PPz//Tr6//SpaX/9Onp/+rW1v/p1NT/7dzc/+zb + 2//Tvr7/2sXF/+jS0v/mz8//3r6+/9aurv/z6Oj/4MLC/+3c3P+jhYX/hVla/2VHwv9hUMf/Nyh//9Wy + tP/FnZz/aklIvwAAAHSVY2Pc49DQ/7OTk/+gf3//k3R0/4psbP+BZWX/eF5e/29XV/9mUFD/tJub/+fR + 0f/27+//9e3t//Tr6//z6Oj/7Nvb/+PIyP/atrb/0qWl/8yamv/RpKT/3Lq6/+jR0f/RpKT/9Orq//r1 + 9f/17Oz/8OLi/+7f3//t3Nz/7Nra/+jT0//jycn/3r6+/9atrf/z6Oj/38HB/+rX1//ZwcH/jF9f/3FL + Uf9LMWP/gGd7/96+vv/FnZz/a0pJwAAAAHaVY2Pc48/P/+7g4P/s3Nz/4s7O/6WLi/99Y2P/dFtb/2tU + VP9iTU3/s5qa/+fQ0P/07Oz/9ezs//Tq6v/z6Oj/8ubm/9G4t//cvb3/3r6+/+LGxv/ixsb/3Lq6/9Sr + q//NnJz/zZyc/9evr//ixsb/7t3d//nz8//8+fn/9+/v//Dj4//q1tb/4MLC/9Wrq//z5+f/38DA/+HF + xf/t3Nz/ybCw/4BlZf+Xf3//4cjI/96+vv/Gnp3/cExLxAAAAHeVY2Pc4s7O/+7e3v/VwMD/mX19/4Nn + Z/96YGD/cVlZ/2hSUv9fS0v/tZub/93Cwv+mfXv/9fT0/9nGxv/dzMz/8Obm/6N5d//MoqL/4MPD/97A + wP/YtLT/27m5/+DDw//kysr/4sfH/928vP/Wrq7/0KGh/8yamv/SpaX/3bu7/+jS0v/06en/9Orq/9Wr + q//59PT/69nZ/+TKyv/ix8f/7dvb/+za2v/r19f/5MvL/9izs//GnZ3/cExLxAAAAHeVY2Pc38rK/7uh + of+Sc3P/iGtr/39kZP92XV3/bVZW/3FbW/+zmpr/38LC/9zAwP+id3b/8vLy/7yenv/JtbX/6uXl/6J3 + df/NpKT/zcnJ/9LOzv/t5ub/6dvb/+HLy//dwMD/27q6/9y7u//fwcH/4sbG/+HFxf/dvLz/17Cw/9Kl + pf/Nm5v/zZub/86env/jx8f/7t7e//n09P/8+vr/9+/v//Pn5//p1dX/3by8/9iysv/FnZz/cExLxAAA + AHeVY2Pc2MHB/5d2dv+Ob2//hWho/3xhYf91XFz/noaG/9rAwP/hxcX/38LC/9u/v/+cbmz/vqCg/6qB + gf+/pqb/4djY/6B0c//OpaX/HxkZ/wAAAP8YFxf/TktL/4N8fP+3q6v/18fH/9nFxf/Xvr7/17u7/9m7 + u//dv7//4cTE/+LGxv/hxcX/3by8/9ewsP/Sp6f/zp6e/8yamv/Spqb/3by8/+jS0v/06en//Pr6//r1 + 9f/QsbH/cExLxAAAAHeVY2Pc17+//5N0dP+KbW3/gWZm/492dv/MtLT/48rK/93Cwv+ii4v/tpub/9u/ + v/+dcG7/u56e/6Fzc/+cbGz/oHFx/59zcf/Qp6f/HxkZ/wAAAP8AAAD/AAAA/wAAAP8AAAD/DQsL/zUw + MP9iWFj/inp6/7CZmf/EqKj/xaam/8ipqf/Nr6//1be3/93Cwv/kysr/48fH/96/v//XsbH/06en/8+g + oP/Mmpr/zp2d/9q2tv/KpaT/cExLxAAAAHeVY2Pc1r6+/5Bxcf+NcHD/u6Ki/+TNzf/jysr/s5ub/2tX + V/9RQED/qpCQ/9u+vv+hdnT/6Ojo/7CNjf/Jurr/3tbW/55ycP/Sq6r/Hxoa/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAEAP8AJQD/ADIA/wEPAP8QDg7/Mioq/1NERP92X1//lXZ2/6uEhP+wh4f/uZOT/8ys + rP/lzs7/2ra2/9m0tP/YsrL/1ays/9Srq//Fm5r/cExLxAAAAHiVY2Pc1b29/62Skv/eyMj/5tDQ/8Or + q/9+aGj/X0tL/1ZERP9NPT3/qY6O/9u+vv+Zamj/pHh4/55ubv+wj4//yrS0/55xcP/Traz/Hxoa/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAsAP8PdB//F4kv/wdMD/8ABQD/AAAA/wAAAP8AAAD/AAAA/wgG + Bv8lHBz/Szc3/4hgYP/Hpqb/2ra2/9i0tP+8nZ3/wJ+f/9aurv/Empn/cExLxAAAAHmVY2Pc3sbG/+nV + 1f/Qubn/knl5/25WVv9lT0//XEhI/1NBQf9KOjr/p4yM/9q9vf+ec3H/zL29/6J3d/+rh4f/uJaW/51v + bf/VsLD/Hxoa/wAAAP8AAAD/AAAA/wAAAP8AAAD/AA0A/wlMEP9ww3v/oeKl/zKORf8CJQX/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/0YxMP+/nZz/2bW1/7Sbm/9gX1//S0pK/6CFhf/Fm5r/c09OxwAA + AHqVY2Pc3cXF/6eOjv99YmL/c1tb/2pTU/9hTEz/WEVF/08+Pv9YR0f/vJ6e/9q8vP+fdXP/3dzc/6Z+ + fv/Jv7//3dbW/51vbf/WsrL/IBsb/wAAAP8AAAD/AAAA/wAAAP8AAAD/ABsA/0uRUv+I0I3/Xrpt/223 + c/8LShX/AAQA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0o0M//BoKD/2bS0/7Khof+VlZX/YWFh/2xf + X//Gm5r/c1BOyQAAAHuVY2Pc3MPD/4pvb/95X1//cFhY/2dRUf9eSkr/ZVFR/6GIiP/Yt7f/27m5/9q9 + vP+ZaWj/nnBw/5tpaf+si4v/w6qq/5xvbf/YtbT/IBsb/wAAAP8AAAD/AAAA/wAAAP8AAQD/CzcO/3W8 + dv8jcS3/E2ki/2u2bv8faCv/AA8A/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0s0M//CoqH/2LOz/8+2 + tv+wsLD/ZWVl/454eP/Fmpn/c1BOyQAAAHuVY2PW2sDA/4dsbP91XFz/bFVV/3JcXP+oj4//2ry8/92+ + vv/Pr6//z66u/9m7u/+ec3H/yb29/55wcP+tjo7/uJeX/5xtbP/auLj/Hxoa/wAAAP8AAAD/AAAA/wAA + AP8ABgD/L2ky/0aIR/8AKwD/ACwB/zyEQf85hUH/ARwD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/002 + Nf/EpaT/2LKy/9awsP+8oKD/spWV/9Oqqv/FmZn/c1BOyQAAAHuVY2PU2L6+/4Npaf9/Zmb/r5aW/9zB + wf/gwsL/y66u/4ZwcP9ENjb/tJaW/9m7u/+edHL/0tHR/59xcf/GwcH/18/P/5xubP/burr/GhYW/wAA + AP8QEBD/GRkZ/w8PD/8BDgH/TZdO/xhEGP8AFwD/AB8A/xdHGv9LmE3/AyUH/wACAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/083Nv/Gp6b/17Gx/9avr//Tra3/yqSk/9Sqqv/FmZj/c1BOyQAAAHuVY2PU2L29/7yj + o//fxsb/4sfH/8esrP+Ebm7/Tj4+/0EzM/85LCz/s5SU/97Bwf+fc3H/nG9t/5lqaP+lgoH/v6Sj/5xt + bP/cvLz/NzU0/26Tbv9pa2n/YmJi/1xcXP9QZ1H/UZVR/wAOAP8AAAD/AAsA/wEYAv9IlUn/DjIQ/wAF + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/1I4N//Iqqr/17Cw/9Ovr/+Sjo7/SUdH/7OSkv/EmJj/c1BOyQAA + AHuVY2PU2Ly8/+TMzP/Dqqr/hW5u/1pHR/9QPz//Rzg4/z4xMf81Kir/spKS/+PHx//r3Nz/4MzM/9W8 + vP/Kraz/zbGw/5xta//ev7//WFVU/4esh/94iXj/aWlp/2NjY/92l3b/bY5t/xwfHP8AAAD/AAAA/wAI + AP8sYyz/IE4g/wAFAP8AAAD/AAAA/wAAAP8AAAD/AAAA/1Q6Of/Kraz/1q+v/9G4uP++vr7/Wlpa/3xu + bv/El5f/c1BOyQAAAHyVY2PU17q6/411df9nUVH/XkpK/1VDQ/9MPDz/QzU1/zouLv8yJyf/sJGR/+PI + yP/v4eH/7t/f/+7e3v/t3Nz/6NXV/5xta//fwcH/W1hY/4KTgv+Hq4f/b29v/2lqaf+EsoT/ZnJm/1dY + V/8tLS3/AQEB/wAAAP8TLxP/LnEu/wABAP8AAAD/AAAA/wAAAP8AAAD/AAAA/1c8O//MsK//1q6u/9e0 + tP/v7Oz/q6ur/7eamv/El5f/dlFQywAAAH6VY2PU1rm5/3ZfX/9kTk7/W0dH/1JAQP9JOTn/QDIy/0s8 + PP+WfHz/1K2t/+LHx//v4OD/uK6u/5WNjf/Vxsb/6NTU/5xtbP/gxMP/X1xc/4KDgv+OuI7/eoN6/3V/ + df+GtIb/ZGVk/15eXv9ZWVn/PT09/wYGBv8CBgL/MYQx/wYSBv8AAAD/AQQB/wweDP8FBQX/AAAA/1k+ + Pf/OtLP/1q2t/9WsrP/Ura3/0ays/9Kmpv/FmJf/eVRTzgAAAH+VY2PU1be3/3NcXP9gTEz/V0VF/04+ + Pv9GNzf/l319/9Sxsf/YsrL/1q6u/+LGxv/f0tL/b29v/1xcXP9ZVlb/5tPT/51vbf/ixsb/Yl9f/4iI + iP+KoIr/i7KL/4iviP9+l37/a2tr/2VlZf9fX1//WVlZ/0pKSv8gISD/KmAq/ypXKv8mJib/OVI5/z96 + P/8rKyv/GRkZ/1s/Pv/Qtrb/1a2t/9KoqP/Cl5b/1Kur/9Klpf/Fl5f/eVRTzgAAAH+VY2PU1ba2/29Z + Wf9eSkr/eWNj/049Pf9DNTX/1LKy/9izs//XsLD/1a2t/+LGxv/bz8//urq6/3Z2dv9JSUn/4c3N/5xu + bP/iyMj/ZmNj/46Ojv+JiYn/iqCK/4afhv93eXf/cXFx/2tra/9mZmb/YGBg/1paWv9UVFT/U15T/16c + Xv9GU0b/SYBJ/z1aPf8xMTH/Kysr/2ZJR//Tu7r/1ays/82jo/+ieXf/3djY/9Glpf/Elpb/eVRTzgAA + AH+VY2PU1LW1/2xXV/94YmL/3Ly8/04+Pv8/MjL/1LCw/9iysv/Wr6//1aur/+HFxf/s3d3/vLm5/3Nz + c/+Nhob/59LS/5xubP/jycn/b2xs/5WVlf+Pj4//iYmJ/4ODg/99fX3/eHh4/3Jycv9sbGz/ZmZm/2Fh + Yf9bW1v/VVVV/1d0V/9Xmlf/TYdN/z5APv84ODj/MjIy/21QT//Vv77/1Kur/9Cmpf+cbmz/nnNy/8ue + nf/ElpX/eVRTzgAAAH+VY2PU07S0/2lUVP92YWH/27u7/0o7O/88Ly//06+v/9ewsP/Vra3/1Kqq/+DE + xP7t3d3/69ra/+HQ0P/q19f/6NTU/51wbv/gxsb/saGh/6CYmP+FgYH/cnFx/3BwcP95eXn/fX19/3h4 + eP9zc3P/bW1t/2dnZ/9hYWH/XFxc/1ZWVv9RVVH/Sk1K/0RERP8+Pj7/OTk5/3NUUv/YxcT/1Kur/9Oo + qP/NoaH/w5aW/8+hof/ElZX/eVRTzgAAAH+VY2PU07Oz/2ZRUf9zXl7/2rq6/0c4OP9VRET/1K+v/9av + r//VrKz/06io/+DDw/7t3Nz/7Nra/+vY2P/q19f/6dXV/6+Ihv+4kpH/4MfH/+jT0//p1NT/5tPT/9XE + xP+4qqr/oZaW/5CJif+Aenr/bWpq/1taWv9UU1P/WVlZ/1tbW/9XV1f/UVFR/0tLS/9FRUX/Pz8//3VW + VP/ayMf/1a2t/8+lpf+MeHj/f2xs/8KYmP/DlJT/eVRTzgAAAH+VY2PU0rGx/2JPT/9xXFz/2rm5/6SI + iP/WsbH/17Gx/9Wtrf/Uqqr/0qen/9/Cwv7s29v/69nZ/+rX1//p1tb/6NTU/9/Gxv+uhoT/m2xq/6V6 + ef+zjYz/v52c/8qtrP/VvLv/4MvL/+rZ2f/w4eH/8ePj//Dj4//l2tr/ysHB/7Grq/+dmJj/iIWF/3Nx + cf9cW1v/QUFB/3lZWP/ezs3/1q2t/7GUlP9wcHD/WFhY/2tbW//DlJP/eVRTzgAAAIGVY2PU0rCw/19M + TP9uWVn/27m5/9m1tf/YsrL/1q+v/9WsrP/Tqan/0qWl/9/Cwv7s2tr/69jY/+rX1//p1dX/6NPT/+fR + 0f/mz8//3sTE/82urf/AnJz/tY6N/6yCgf+jd3X/m21r/5praf+gdHL/q4OB/7aTkf/Co6L/z7a1/9zJ + yP/q3dz/9e3t//jy8v/59PT/9/Pz//n19f/69vb/06mp/8Cnp/+6urr/a2tr/15VVf/ElZT/fldW0wAA + AIKVY2PU0a+v/1xJSf9vWlr/2re3/9m0tP/XsbH/1q6u/9Opqf7Pp6f317q68eve3vrx5eX+7+Hh/u3d + 3f7r2dn+6dXV/ufR0f7lzs7+5c3N/+TLy//jycn/4sfH/+HFxf/gw8P/38HB/9i3t//Oq6v/xaCf/7yU + k/+ziYj/qn59/6Fzcf+aa2r/m21r/6d/ff+1k5L/xKin/9XBwP/bxcT/0aWl/8+mpv+nn5//bmtr/6GC + gv/ElJT/fVdV0wAAAIKVY2PU0a6u/56EhP/SsbH/2ba2/9iysv/Vrq7+1LOz9d7JyfPu5OT58+np//Po + 6P/y5ub/8eXl//Hk5P/w4uL/7+Hh/+/g4P/t3d3+69ra/unW1v7n09P+5s/P/uTLy/7ix8f+4MPD/t7A + wP7cvb3+3Lu7/9u6uv/buLj/2ra2/9m0tP/WsLD/zaWl/8OZmP+6jo3/sYSD/6d5eP+ecG7/zJ+f/9Gk + pP/QoqL/zp+f/86env/Ek5P/fVdV0wAAAIKVY2PU0a2t/9y6uv/at7f/17S0+9u+vvbm1dX28ebm/vLm + 5v/x5eX/8ePj//Di4v/v4eH/7uDg/+7e3v/t3d3/7Nzc/+za2v/r2dn/6tjY/+rW1v/p1dX/6NPT/+jS + 0v/n0dH/5s/P/+XNzf7jy8v+4sjI/uDExP7ewcH+3b29/tu5uf7Ztrb+17Ky/tWurv7VrKz/1Kqq/9Oo + qP/Spqb/0aWl/9Cjo//PoaH/z5+f/86dnf/Dk5L/gVlX1AAAAHGWZ2bV0Kys/tu8vPrizMz47d/f+vHl + 5f/w4+P/8OLi/+/h4f/u39//7t7e/+3d3f/s29v/7Nra/+vZ2f/q19f/6tbW/+nV1f/o09P/6NLS/+fR + 0f/mz8//5s7O/+XNzf/ky8v/48rK/+PJyf/ix8f/4sbG/+HFxf/gw8P/4MLC/9/Bwf/ev7//3r6+/9y7 + u/7bubn+2ba2/teysv7Vr6/+1Kur/tKnp/7QpKT+zqCg/siXl/60g4L/glpYyQAAADuXaGahnnFv/ql+ + fv6yior/uZSU/8Cenv/HqKj/zrGx/9W6uv/bw8P/4cvL/+bR0f/p1dX/6dTU/+jT0//n0tL/59DQ/+bP + z//lzs7/5czM/+TLy//jysr/48jI/+LHx//hxsb/4cTE/+DDw//fwsL/38DA/96/v//evr7/3by8/9y7 + u//curr/27i4/9q3t//atrb/2bS0/9izs//XsbH/0Kio/8GVlf+xg4P/onFx/phnZv2TZWTWa0lGTAAA + AAp/X18IkWVlP49eXlmQX19ukF9fhJJhYZmSYGCuk2Jiw5ZkZNiWZGTql2Zm+ZpoaP6ebW3/o3V1/6p9 + ff+whob/t46O/72Wlv/Dnp7/yaWl/86trf/Us7P/2bq6/92+vv/ewMD/3r+//92+vv/dvLz/3Lu7/9u6 + uv/buLj/2re3/9q2tv/ZtLT/2LOz/9exsf/Pp6f/wJSU/7CCgv+hcHD/mGZm+5FiYtGMXV2Xf1ZWXGlG + RiMAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CjVVVCZNi + YhqRY2MxkF9fR49fX16PXl50kF9fiZJhYZ6SYWGylGJiyJVjY9yXZGTvmGZm/JpoaP+ebGz/o3Nz/6l6 + ev+ugYH/s4eH/7mNjf++k5P/w5qZ/8Scm/++lJP/r4GB/6Bvb/+YZmb6kWFhzotcXJOBVVVYZENDHQAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/AAACi1xcC4ta + Wh+QXV02jF5eTZBgYGOQX194kGBgjZJiYqOTYmK3lWVlzpVnZtaTZmPHjF5ekYFWVlRjOzsYAAAAAwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gA////////8AAP///////AAAH/// + ///4AAAD//////AAAAB/////wAAAAAf///+AAAAAAP///wAAAAAAH///AAAAAAAB//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAP///+AAAAAP//////4AAP/ + //8= + + + \ No newline at end of file diff --git a/Nifscan/FormParallax.Designer.cs b/Nifscan/FormParallax.Designer.cs new file mode 100644 index 0000000..c07b13e --- /dev/null +++ b/Nifscan/FormParallax.Designer.cs @@ -0,0 +1,132 @@ +namespace Nifscan +{ + partial class FormParallax + { + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.CheckBox checkBox4; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormParallax)); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.checkBox4 = new System.Windows.Forms.CheckBox(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.textBox1.Location = new System.Drawing.Point(12, 25); + this.textBox1.MaxLength = 999999999; + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.textBox1.Size = new System.Drawing.Size(540, 222); + this.textBox1.TabIndex = 0; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label1.Location = new System.Drawing.Point(12, 2); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(540, 21); + this.label1.TabIndex = 0; + this.label1.Text = "List of _n.dds textures for which is necessary set parallax flags:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button1.Location = new System.Drawing.Point(454, 258); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(99, 35); + this.button1.TabIndex = 5; + this.button1.Text = "Save"; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // checkBox1 + // + this.checkBox1.Enabled = false; + this.checkBox1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox1.Location = new System.Drawing.Point(12, 275); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(228, 25); + this.checkBox1.TabIndex = 2; + this.checkBox1.Text = "Invert (remove flags for listed)"; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // checkBox2 + // + this.checkBox2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox2.Location = new System.Drawing.Point(12, 253); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(228, 25); + this.checkBox2.TabIndex = 1; + this.checkBox2.Text = "Compare _p.dds with _n.dds"; + this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged); + // + // checkBox3 + // + this.checkBox3.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox3.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox3.Location = new System.Drawing.Point(246, 253); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(202, 25); + this.checkBox3.TabIndex = 3; + this.checkBox3.Text = "Add parallax Flags"; + this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged); + // + // checkBox4 + // + this.checkBox4.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox4.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox4.Location = new System.Drawing.Point(246, 275); + this.checkBox4.Name = "checkBox4"; + this.checkBox4.Size = new System.Drawing.Size(202, 25); + this.checkBox4.TabIndex = 4; + this.checkBox4.Text = "Complite remove Flags"; + this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged); + // + // FormParallax + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(564, 304); + this.Controls.Add(this.checkBox4); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.button1); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "FormParallax"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Parallax features"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + } +} \ No newline at end of file diff --git a/Nifscan/FormParallax.cs b/Nifscan/FormParallax.cs new file mode 100644 index 0000000..1117f3a --- /dev/null +++ b/Nifscan/FormParallax.cs @@ -0,0 +1,80 @@ +using System; +using System.Windows.Forms; + +namespace Nifscan +{ + public partial class FormParallax : Form + { + public FormParallax() + { + InitializeComponent(); + checkBox1.Checked = FormMain.parallaxInvert; + checkBox2.Checked = FormMain.parallaxCompare; + checkBox3.Checked = FormMain.parallaxAdd; + checkBox4.Checked = FormMain.parallaxRemove; + if (FormMain.texturesList.Count > 0) + { + textBox1.Clear(); + textBox1.AppendText(String.Join(Environment.NewLine, FormMain.texturesList)); + } + } + + private void button1_Click(object sender, EventArgs e) + { + FormMain.texturesList.Clear(); + foreach (string line in textBox1.Lines) + { + if (!String.IsNullOrEmpty(line)) + { + FormMain.texturesList.Add(line); + } + } + Dispose(); + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + FormMain.parallaxInvert = checkBox1.Checked; + } + + private void checkBox2_CheckedChanged(object sender, EventArgs e) + { + FormMain.parallaxCompare = checkBox2.Checked; + } + + private void checkBox3_CheckedChanged(object sender, EventArgs e) + { + if (checkBox3.Checked) + { + checkBox4.Checked = false; + } + else + { + checkBox1.Checked = false; + } + changeState(); + } + + private void checkBox4_CheckedChanged(object sender, EventArgs e) + { + if (checkBox4.Checked) + { + checkBox1.Checked = false; + checkBox3.Checked = false; + } + changeState(); + } + + private void changeState() + { + checkBox1.Enabled = checkBox3.Checked && !checkBox4.Checked; + checkBox2.Enabled = !checkBox3.Checked && !checkBox4.Checked; + checkBox2.Checked = false; + FormMain.parallaxAdd = checkBox3.Checked && !checkBox4.Checked; + FormMain.parallaxRemove = checkBox4.Checked && !checkBox3.Checked; + FormMain.parallaxInvert = checkBox1.Checked; + FormMain.parallaxCompare = checkBox2.Checked; + FormMain.formMain.buttonColorParallax(checkBox3.Checked || checkBox4.Checked); + } + } +} diff --git a/Nifscan/FormParallax.resx b/Nifscan/FormParallax.resx new file mode 100644 index 0000000..4fc9c37 --- /dev/null +++ b/Nifscan/FormParallax.resx @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAMGAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAADgAAADEAAABlAAAAfAAA + AGwAAABIAAAAKQAAABkAAAANAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAZIBQUU2xK + SbKEW1nZZkZFvCIXF6MDAgKhAAAAkAAAAHMAAABPAAAAMQAAABwAAAAQAAAABgAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAA + AChAKyt6jV5e57WQj//dzMz/v6Gg/6J3df+SZWPxZ0dFvzAhIaUHBQWgAAAAlwAAAHwAAABZAAAAOAAA + ACEAAAATAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAASDQcHQGNCQqSba2v8zK6u/+3d3f/8+vr/+/j4//j09P/j1NT/xamo/6iAfv+XaGb5dVFQzD8r + K6kQCwqgAAAAmwAAAIQAAABjAAAAQQAAACYAAAAXAAAACwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABgAAAB8qHBxiglZW0Kp/f//gysr/69nZ/+zb2//8+fn/+/f3//r29v/59PT/+PLy//fw + 8P/o2tr/y7Kx/6+JiP+abGr9g1pZ2083NrAaEhKhAgEBnwAAAIwAAABtAAAASgAAAC0AAAAbAAAADwAA + AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAMAAAAL04zM4qTY2PxwJ6e/+zb2//s29v/69jY/+zb2//7+Pj/+vb2//n1 + 9f/48/P/8+jo/+nU1P/mzc3/69fX//Pp6f/r3d3/0bm4/7aSkf+dcW/+jWFf6V5BQbkpHBujBQMDoQAA + AJMAAAB2AAAAVAAAADQAAAAfAAAAEgAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgWDw9NcktLtqBycv7YwcH/7+Dg/+3d3f/k0dH/xa6u/+za + 2v/79/f/+vb2//n09P/06ur/5c3N/9W4uP+BZ3P/WkV1/4t2kv/u4eH/8eXl//Dj4//o09P/1r28/7ya + mf+jeHb/k2Zk9G5MSsU3JiWnCwgHoQAAAJkAAAB/AAAAXgAAADwAAAAjAAAAFQAAAAoAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAITckJHKKXFzgtI2N/+na2v/w4uL/7t7e/9K9 + vf+QdXX/o4qK/+vZ2f/69vb/+fX1//jz8//s2tr/3sXF/2VMTP86KHf/PS6Q/yMWcv94ZYr/8eTk//Di + 4v/RpKT/6tfX/+3d3f/r2tr/28TE/8KhoP+pf37/l2ln+3tWVNNGMTCsFQ4OoQAAAJwAAACIAAAAZwAA + AEUAAAApAAAAGQAAAA0AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAApFBQZbUlJm5ppafrNsbH/8ebm//Dj + 4//s3Nz/uqGh/4xubv+CZmb/oIeH/+vY2P/69vb/+fT0//fv7//q19f/n4eH/1o8PP9POqT/fXDO/zop + nP8mGGz/3MbJ//Di4v/RpKT/9ezs/+3d3f/s2tr/6tfX/+fR0f/mzs7/38fG/8enpv+vh4X/mm1r/ole + XeJWPDu0IRYWogMBAaEAAACQAAAAcQAAAE8AAAAwAAAAHAAAABAAAAAGAAAAAQAAAACLX16TrIaE/+PT + 0//z6Oj/8eXl/9/Ozv+niYn/kXFx/4hqav9/Y2P/nYWF/+rX1//59fX/+PPz//bu7v/s2dn/nYKC/3RN + Tf9qRpT/cV3n/2BQv/8tIH3/v6Wv/+/h4f/RpKT/9evr/+3c3P/r2Nj/5c3N/9O1tf+Td4b/jnWP/9vC + xf/mz8//4cjI/8urq/+0jYz/n3Jw/5JkY/FmRka+LiAfpAcFBaIAAACWAAAAewAAAFgAAAA3AAAAHgAA + AAmVZ2XT4tLS//Tq6v/x5eX/zbW1/6F/f/+Wdnb/jW9v/4RoaP97YWH/m4OD/+rW1v/59PT/+PLy//bv + 7//u3t7/yrCw/4xeXv+MXV//Xj6Y/0czqf9BL3H/2ry9/+/g4P/RpKT/9evr/+zb2//q1tb/1r29/1pC + Sf86LIf/KBp7/0c2cf/fxsf/4MPD/9iysv/jyMj/4MXF/9Cvrv+5kpH/pHd1/5doZvl1UVDLPispqQ8K + CqAAAACaAAAAeQAAADOWZWTd5tbW/+rb2/+9nZ3/pYGB/5x6ev+Tc3P/imxs/4BlZf9+ZWX/wKmp/+nW + 1v/48/P/9/Hx//bv7//x5eX/69jY/6qFhf91Tk7/YEBA/041Nf+skpL/5MvL/+7f3//RpKT/9evr/+za + 2v/q19f/jnV1/1k7S/9mVsX/XU64/ygZff+chJv/3r+//9WsrP/r2dn/4cbG/+DExP/gwsL/38DA/9Ox + sP++l5b/qX17/5lraf2CWljZEQsLoAAAAGOVY2Pc49LS/7eSkv+qhYX/oX5+/5h3d/+PcHD/hmlp/5Z8 + fP/XwcH/5c3N/+nU1P/48vL/9/Dw//bu7v/17Oz/7+Hh/+nW1v+vlpb/jnV1/8Kqqv/mzs7/6tfX/+7e + 3v/RpKT/9Orq/+za2v/s2tr/kXNz/3tSUv9lRr7/cGDX/0M0m/+FbZH/3r6+/9ixsf/z6en/4cXF/+HF + xf/ky8v/17m5/6KFkv+vkJ3/27m5/9Wxsf+0ion/YEJBuAAAAHOVY2Pc49HR/7GLi/+ng4P/nnx8/5V1 + df+Nb2//tZ2d/+XQ0P/mz8//5MzM/+nU1P/38fH/9+/v//jy8v/27+//8+np//Dh4f/t3Nz/69jY/+rX + 1//r2dn/7t7e/+3d3f/Ro6P/9Orq/+vY2P/u3t7/xqqq/5BfX/9/VGD/UzeN/0Ascv/Cpqz/3r6+/9ix + sf/z6Oj/4MTE/+fQ0P/Wvr7/XERS/zgqhP8jFm7/i3CL/9q3t//Fnp3/bUtJwQAAAHOVY2Pc49HR/66K + iv+jgID/mnl5/5Fycv+xmJj/xa6u/8Cpqf+/qKj/1r29/+jT0//38PD/4cTE/+bOzv/y5ub/+/j4//v4 + +P/48fH/9Orq//Dj4//v4OD/7t7e/+3c3P/Ro6P/9Onp/+rX1//t29v/69nZ/62MjP9oRkb/Vzw8/6GI + iP/ky8v/3r+//9aurv/z6Oj/4MPD/+vY2P+SeXn/XD1X/2xdyv9MPKn/MiJv/9eys//Fnp3/aklIvwAA + AHOVY2Pc49HR/6yJif+gfX3/l3Z2/41vb/+EaGj/e2Fh/3JaWv9pU1P/tp2d/+jS0v/37+//48jI/9ex + sf/Pn5//zZyc/9aurv/ixcX/7dvb//jy8v/8+vr/+PPz//Tr6//SpaX/9Onp/+rW1v/p1NT/7dzc/+zb + 2//Tvr7/2sXF/+jS0v/mz8//3r6+/9aurv/z6Oj/4MLC/+3c3P+jhYX/hVla/2VHwv9hUMf/Nyh//9Wy + tP/FnZz/aklIvwAAAHSVY2Pc49DQ/7OTk/+gf3//k3R0/4psbP+BZWX/eF5e/29XV/9mUFD/tJub/+fR + 0f/27+//9e3t//Tr6//z6Oj/7Nvb/+PIyP/atrb/0qWl/8yamv/RpKT/3Lq6/+jR0f/RpKT/9Orq//r1 + 9f/17Oz/8OLi/+7f3//t3Nz/7Nra/+jT0//jycn/3r6+/9atrf/z6Oj/38HB/+rX1//ZwcH/jF9f/3FL + Uf9LMWP/gGd7/96+vv/FnZz/a0pJwAAAAHaVY2Pc48/P/+7g4P/s3Nz/4s7O/6WLi/99Y2P/dFtb/2tU + VP9iTU3/s5qa/+fQ0P/07Oz/9ezs//Tq6v/z6Oj/8ubm/9G4t//cvb3/3r6+/+LGxv/ixsb/3Lq6/9Sr + q//NnJz/zZyc/9evr//ixsb/7t3d//nz8//8+fn/9+/v//Dj4//q1tb/4MLC/9Wrq//z5+f/38DA/+HF + xf/t3Nz/ybCw/4BlZf+Xf3//4cjI/96+vv/Gnp3/cExLxAAAAHeVY2Pc4s7O/+7e3v/VwMD/mX19/4Nn + Z/96YGD/cVlZ/2hSUv9fS0v/tZub/93Cwv+mfXv/9fT0/9nGxv/dzMz/8Obm/6N5d//MoqL/4MPD/97A + wP/YtLT/27m5/+DDw//kysr/4sfH/928vP/Wrq7/0KGh/8yamv/SpaX/3bu7/+jS0v/06en/9Orq/9Wr + q//59PT/69nZ/+TKyv/ix8f/7dvb/+za2v/r19f/5MvL/9izs//GnZ3/cExLxAAAAHeVY2Pc38rK/7uh + of+Sc3P/iGtr/39kZP92XV3/bVZW/3FbW/+zmpr/38LC/9zAwP+id3b/8vLy/7yenv/JtbX/6uXl/6J3 + df/NpKT/zcnJ/9LOzv/t5ub/6dvb/+HLy//dwMD/27q6/9y7u//fwcH/4sbG/+HFxf/dvLz/17Cw/9Kl + pf/Nm5v/zZub/86env/jx8f/7t7e//n09P/8+vr/9+/v//Pn5//p1dX/3by8/9iysv/FnZz/cExLxAAA + AHeVY2Pc2MHB/5d2dv+Ob2//hWho/3xhYf91XFz/noaG/9rAwP/hxcX/38LC/9u/v/+cbmz/vqCg/6qB + gf+/pqb/4djY/6B0c//OpaX/HxkZ/wAAAP8YFxf/TktL/4N8fP+3q6v/18fH/9nFxf/Xvr7/17u7/9m7 + u//dv7//4cTE/+LGxv/hxcX/3by8/9ewsP/Sp6f/zp6e/8yamv/Spqb/3by8/+jS0v/06en//Pr6//r1 + 9f/QsbH/cExLxAAAAHeVY2Pc17+//5N0dP+KbW3/gWZm/492dv/MtLT/48rK/93Cwv+ii4v/tpub/9u/ + v/+dcG7/u56e/6Fzc/+cbGz/oHFx/59zcf/Qp6f/HxkZ/wAAAP8AAAD/AAAA/wAAAP8AAAD/DQsL/zUw + MP9iWFj/inp6/7CZmf/EqKj/xaam/8ipqf/Nr6//1be3/93Cwv/kysr/48fH/96/v//XsbH/06en/8+g + oP/Mmpr/zp2d/9q2tv/KpaT/cExLxAAAAHeVY2Pc1r6+/5Bxcf+NcHD/u6Ki/+TNzf/jysr/s5ub/2tX + V/9RQED/qpCQ/9u+vv+hdnT/6Ojo/7CNjf/Jurr/3tbW/55ycP/Sq6r/Hxoa/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAEAP8AJQD/ADIA/wEPAP8QDg7/Mioq/1NERP92X1//lXZ2/6uEhP+wh4f/uZOT/8ys + rP/lzs7/2ra2/9m0tP/YsrL/1ays/9Srq//Fm5r/cExLxAAAAHiVY2Pc1b29/62Skv/eyMj/5tDQ/8Or + q/9+aGj/X0tL/1ZERP9NPT3/qY6O/9u+vv+Zamj/pHh4/55ubv+wj4//yrS0/55xcP/Traz/Hxoa/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAsAP8PdB//F4kv/wdMD/8ABQD/AAAA/wAAAP8AAAD/AAAA/wgG + Bv8lHBz/Szc3/4hgYP/Hpqb/2ra2/9i0tP+8nZ3/wJ+f/9aurv/Empn/cExLxAAAAHmVY2Pc3sbG/+nV + 1f/Qubn/knl5/25WVv9lT0//XEhI/1NBQf9KOjr/p4yM/9q9vf+ec3H/zL29/6J3d/+rh4f/uJaW/51v + bf/VsLD/Hxoa/wAAAP8AAAD/AAAA/wAAAP8AAAD/AA0A/wlMEP9ww3v/oeKl/zKORf8CJQX/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/0YxMP+/nZz/2bW1/7Sbm/9gX1//S0pK/6CFhf/Fm5r/c09OxwAA + AHqVY2Pc3cXF/6eOjv99YmL/c1tb/2pTU/9hTEz/WEVF/08+Pv9YR0f/vJ6e/9q8vP+fdXP/3dzc/6Z+ + fv/Jv7//3dbW/51vbf/WsrL/IBsb/wAAAP8AAAD/AAAA/wAAAP8AAAD/ABsA/0uRUv+I0I3/Xrpt/223 + c/8LShX/AAQA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0o0M//BoKD/2bS0/7Khof+VlZX/YWFh/2xf + X//Gm5r/c1BOyQAAAHuVY2Pc3MPD/4pvb/95X1//cFhY/2dRUf9eSkr/ZVFR/6GIiP/Yt7f/27m5/9q9 + vP+ZaWj/nnBw/5tpaf+si4v/w6qq/5xvbf/YtbT/IBsb/wAAAP8AAAD/AAAA/wAAAP8AAQD/CzcO/3W8 + dv8jcS3/E2ki/2u2bv8faCv/AA8A/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0s0M//CoqH/2LOz/8+2 + tv+wsLD/ZWVl/454eP/Fmpn/c1BOyQAAAHuVY2PW2sDA/4dsbP91XFz/bFVV/3JcXP+oj4//2ry8/92+ + vv/Pr6//z66u/9m7u/+ec3H/yb29/55wcP+tjo7/uJeX/5xtbP/auLj/Hxoa/wAAAP8AAAD/AAAA/wAA + AP8ABgD/L2ky/0aIR/8AKwD/ACwB/zyEQf85hUH/ARwD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/002 + Nf/EpaT/2LKy/9awsP+8oKD/spWV/9Oqqv/FmZn/c1BOyQAAAHuVY2PU2L6+/4Npaf9/Zmb/r5aW/9zB + wf/gwsL/y66u/4ZwcP9ENjb/tJaW/9m7u/+edHL/0tHR/59xcf/GwcH/18/P/5xubP/burr/GhYW/wAA + AP8QEBD/GRkZ/w8PD/8BDgH/TZdO/xhEGP8AFwD/AB8A/xdHGv9LmE3/AyUH/wACAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/083Nv/Gp6b/17Gx/9avr//Tra3/yqSk/9Sqqv/FmZj/c1BOyQAAAHuVY2PU2L29/7yj + o//fxsb/4sfH/8esrP+Ebm7/Tj4+/0EzM/85LCz/s5SU/97Bwf+fc3H/nG9t/5lqaP+lgoH/v6Sj/5xt + bP/cvLz/NzU0/26Tbv9pa2n/YmJi/1xcXP9QZ1H/UZVR/wAOAP8AAAD/AAsA/wEYAv9IlUn/DjIQ/wAF + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/1I4N//Iqqr/17Cw/9Ovr/+Sjo7/SUdH/7OSkv/EmJj/c1BOyQAA + AHuVY2PU2Ly8/+TMzP/Dqqr/hW5u/1pHR/9QPz//Rzg4/z4xMf81Kir/spKS/+PHx//r3Nz/4MzM/9W8 + vP/Kraz/zbGw/5xta//ev7//WFVU/4esh/94iXj/aWlp/2NjY/92l3b/bY5t/xwfHP8AAAD/AAAA/wAI + AP8sYyz/IE4g/wAFAP8AAAD/AAAA/wAAAP8AAAD/AAAA/1Q6Of/Kraz/1q+v/9G4uP++vr7/Wlpa/3xu + bv/El5f/c1BOyQAAAHyVY2PU17q6/411df9nUVH/XkpK/1VDQ/9MPDz/QzU1/zouLv8yJyf/sJGR/+PI + yP/v4eH/7t/f/+7e3v/t3Nz/6NXV/5xta//fwcH/W1hY/4KTgv+Hq4f/b29v/2lqaf+EsoT/ZnJm/1dY + V/8tLS3/AQEB/wAAAP8TLxP/LnEu/wABAP8AAAD/AAAA/wAAAP8AAAD/AAAA/1c8O//MsK//1q6u/9e0 + tP/v7Oz/q6ur/7eamv/El5f/dlFQywAAAH6VY2PU1rm5/3ZfX/9kTk7/W0dH/1JAQP9JOTn/QDIy/0s8 + PP+WfHz/1K2t/+LHx//v4OD/uK6u/5WNjf/Vxsb/6NTU/5xtbP/gxMP/X1xc/4KDgv+OuI7/eoN6/3V/ + df+GtIb/ZGVk/15eXv9ZWVn/PT09/wYGBv8CBgL/MYQx/wYSBv8AAAD/AQQB/wweDP8FBQX/AAAA/1k+ + Pf/OtLP/1q2t/9WsrP/Ura3/0ays/9Kmpv/FmJf/eVRTzgAAAH+VY2PU1be3/3NcXP9gTEz/V0VF/04+ + Pv9GNzf/l319/9Sxsf/YsrL/1q6u/+LGxv/f0tL/b29v/1xcXP9ZVlb/5tPT/51vbf/ixsb/Yl9f/4iI + iP+KoIr/i7KL/4iviP9+l37/a2tr/2VlZf9fX1//WVlZ/0pKSv8gISD/KmAq/ypXKv8mJib/OVI5/z96 + P/8rKyv/GRkZ/1s/Pv/Qtrb/1a2t/9KoqP/Cl5b/1Kur/9Klpf/Fl5f/eVRTzgAAAH+VY2PU1ba2/29Z + Wf9eSkr/eWNj/049Pf9DNTX/1LKy/9izs//XsLD/1a2t/+LGxv/bz8//urq6/3Z2dv9JSUn/4c3N/5xu + bP/iyMj/ZmNj/46Ojv+JiYn/iqCK/4afhv93eXf/cXFx/2tra/9mZmb/YGBg/1paWv9UVFT/U15T/16c + Xv9GU0b/SYBJ/z1aPf8xMTH/Kysr/2ZJR//Tu7r/1ays/82jo/+ieXf/3djY/9Glpf/Elpb/eVRTzgAA + AH+VY2PU1LW1/2xXV/94YmL/3Ly8/04+Pv8/MjL/1LCw/9iysv/Wr6//1aur/+HFxf/s3d3/vLm5/3Nz + c/+Nhob/59LS/5xubP/jycn/b2xs/5WVlf+Pj4//iYmJ/4ODg/99fX3/eHh4/3Jycv9sbGz/ZmZm/2Fh + Yf9bW1v/VVVV/1d0V/9Xmlf/TYdN/z5APv84ODj/MjIy/21QT//Vv77/1Kur/9Cmpf+cbmz/nnNy/8ue + nf/ElpX/eVRTzgAAAH+VY2PU07S0/2lUVP92YWH/27u7/0o7O/88Ly//06+v/9ewsP/Vra3/1Kqq/+DE + xP7t3d3/69ra/+HQ0P/q19f/6NTU/51wbv/gxsb/saGh/6CYmP+FgYH/cnFx/3BwcP95eXn/fX19/3h4 + eP9zc3P/bW1t/2dnZ/9hYWH/XFxc/1ZWVv9RVVH/Sk1K/0RERP8+Pj7/OTk5/3NUUv/YxcT/1Kur/9Oo + qP/NoaH/w5aW/8+hof/ElZX/eVRTzgAAAH+VY2PU07Oz/2ZRUf9zXl7/2rq6/0c4OP9VRET/1K+v/9av + r//VrKz/06io/+DDw/7t3Nz/7Nra/+vY2P/q19f/6dXV/6+Ihv+4kpH/4MfH/+jT0//p1NT/5tPT/9XE + xP+4qqr/oZaW/5CJif+Aenr/bWpq/1taWv9UU1P/WVlZ/1tbW/9XV1f/UVFR/0tLS/9FRUX/Pz8//3VW + VP/ayMf/1a2t/8+lpf+MeHj/f2xs/8KYmP/DlJT/eVRTzgAAAH+VY2PU0rGx/2JPT/9xXFz/2rm5/6SI + iP/WsbH/17Gx/9Wtrf/Uqqr/0qen/9/Cwv7s29v/69nZ/+rX1//p1tb/6NTU/9/Gxv+uhoT/m2xq/6V6 + ef+zjYz/v52c/8qtrP/VvLv/4MvL/+rZ2f/w4eH/8ePj//Dj4//l2tr/ysHB/7Grq/+dmJj/iIWF/3Nx + cf9cW1v/QUFB/3lZWP/ezs3/1q2t/7GUlP9wcHD/WFhY/2tbW//DlJP/eVRTzgAAAIGVY2PU0rCw/19M + TP9uWVn/27m5/9m1tf/YsrL/1q+v/9WsrP/Tqan/0qWl/9/Cwv7s2tr/69jY/+rX1//p1dX/6NPT/+fR + 0f/mz8//3sTE/82urf/AnJz/tY6N/6yCgf+jd3X/m21r/5praf+gdHL/q4OB/7aTkf/Co6L/z7a1/9zJ + yP/q3dz/9e3t//jy8v/59PT/9/Pz//n19f/69vb/06mp/8Cnp/+6urr/a2tr/15VVf/ElZT/fldW0wAA + AIKVY2PU0a+v/1xJSf9vWlr/2re3/9m0tP/XsbH/1q6u/9Opqf7Pp6f317q68eve3vrx5eX+7+Hh/u3d + 3f7r2dn+6dXV/ufR0f7lzs7+5c3N/+TLy//jycn/4sfH/+HFxf/gw8P/38HB/9i3t//Oq6v/xaCf/7yU + k/+ziYj/qn59/6Fzcf+aa2r/m21r/6d/ff+1k5L/xKin/9XBwP/bxcT/0aWl/8+mpv+nn5//bmtr/6GC + gv/ElJT/fVdV0wAAAIKVY2PU0a6u/56EhP/SsbH/2ba2/9iysv/Vrq7+1LOz9d7JyfPu5OT58+np//Po + 6P/y5ub/8eXl//Hk5P/w4uL/7+Hh/+/g4P/t3d3+69ra/unW1v7n09P+5s/P/uTLy/7ix8f+4MPD/t7A + wP7cvb3+3Lu7/9u6uv/buLj/2ra2/9m0tP/WsLD/zaWl/8OZmP+6jo3/sYSD/6d5eP+ecG7/zJ+f/9Gk + pP/QoqL/zp+f/86env/Ek5P/fVdV0wAAAIKVY2PU0a2t/9y6uv/at7f/17S0+9u+vvbm1dX28ebm/vLm + 5v/x5eX/8ePj//Di4v/v4eH/7uDg/+7e3v/t3d3/7Nzc/+za2v/r2dn/6tjY/+rW1v/p1dX/6NPT/+jS + 0v/n0dH/5s/P/+XNzf7jy8v+4sjI/uDExP7ewcH+3b29/tu5uf7Ztrb+17Ky/tWurv7VrKz/1Kqq/9Oo + qP/Spqb/0aWl/9Cjo//PoaH/z5+f/86dnf/Dk5L/gVlX1AAAAHGWZ2bV0Kys/tu8vPrizMz47d/f+vHl + 5f/w4+P/8OLi/+/h4f/u39//7t7e/+3d3f/s29v/7Nra/+vZ2f/q19f/6tbW/+nV1f/o09P/6NLS/+fR + 0f/mz8//5s7O/+XNzf/ky8v/48rK/+PJyf/ix8f/4sbG/+HFxf/gw8P/4MLC/9/Bwf/ev7//3r6+/9y7 + u/7bubn+2ba2/teysv7Vr6/+1Kur/tKnp/7QpKT+zqCg/siXl/60g4L/glpYyQAAADuXaGahnnFv/ql+ + fv6yior/uZSU/8Cenv/HqKj/zrGx/9W6uv/bw8P/4cvL/+bR0f/p1dX/6dTU/+jT0//n0tL/59DQ/+bP + z//lzs7/5czM/+TLy//jysr/48jI/+LHx//hxsb/4cTE/+DDw//fwsL/38DA/96/v//evr7/3by8/9y7 + u//curr/27i4/9q3t//atrb/2bS0/9izs//XsbH/0Kio/8GVlf+xg4P/onFx/phnZv2TZWTWa0lGTAAA + AAp/X18IkWVlP49eXlmQX19ukF9fhJJhYZmSYGCuk2Jiw5ZkZNiWZGTql2Zm+ZpoaP6ebW3/o3V1/6p9 + ff+whob/t46O/72Wlv/Dnp7/yaWl/86trf/Us7P/2bq6/92+vv/ewMD/3r+//92+vv/dvLz/3Lu7/9u6 + uv/buLj/2re3/9q2tv/ZtLT/2LOz/9exsf/Pp6f/wJSU/7CCgv+hcHD/mGZm+5FiYtGMXV2Xf1ZWXGlG + RiMAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38CjVVVCZNi + YhqRY2MxkF9fR49fX16PXl50kF9fiZJhYZ6SYWGylGJiyJVjY9yXZGTvmGZm/JpoaP+ebGz/o3Nz/6l6 + ev+ugYH/s4eH/7mNjf++k5P/w5qZ/8Scm/++lJP/r4GB/6Bvb/+YZmb6kWFhzotcXJOBVVVYZENDHQAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/AAACi1xcC4ta + Wh+QXV02jF5eTZBgYGOQX194kGBgjZJiYqOTYmK3lWVlzpVnZtaTZmPHjF5ekYFWVlRjOzsYAAAAAwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gA////////8AAP///////AAAH/// + ///4AAAD//////AAAAB/////wAAAAAf///+AAAAAAP///wAAAAAAH///AAAAAAAB//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAP///+AAAAAP//////4AAP/ + //8= + + + \ No newline at end of file diff --git a/Nifscan/FormVC.Designer.cs b/Nifscan/FormVC.Designer.cs new file mode 100644 index 0000000..63fbbce --- /dev/null +++ b/Nifscan/FormVC.Designer.cs @@ -0,0 +1,241 @@ +namespace Nifscan +{ + partial class FormVC + { + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.NumericUpDown numericUpDown4; + private System.Windows.Forms.NumericUpDown numericUpDown3; + private System.Windows.Forms.NumericUpDown numericUpDown2; + private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox3; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.numericUpDown4 = new System.Windows.Forms.NumericUpDown(); + this.numericUpDown3 = new System.Windows.Forms.NumericUpDown(); + this.numericUpDown2 = new System.Windows.Forms.NumericUpDown(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.SuspendLayout(); + // + // numericUpDown4 + // + this.numericUpDown4.DecimalPlaces = 6; + this.numericUpDown4.Enabled = false; + this.numericUpDown4.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown4.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown4.Location = new System.Drawing.Point(135, 67); + this.numericUpDown4.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDown4.Name = "numericUpDown4"; + this.numericUpDown4.Size = new System.Drawing.Size(77, 21); + this.numericUpDown4.TabIndex = 5; + this.numericUpDown4.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown4.ValueChanged += new System.EventHandler(this.numericUpDown4_ValueChanged); + // + // numericUpDown3 + // + this.numericUpDown3.DecimalPlaces = 3; + this.numericUpDown3.Enabled = false; + this.numericUpDown3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown3.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown3.Location = new System.Drawing.Point(56, 76); + this.numericUpDown3.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDown3.Name = "numericUpDown3"; + this.numericUpDown3.Size = new System.Drawing.Size(58, 21); + this.numericUpDown3.TabIndex = 4; + this.numericUpDown3.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown3.ValueChanged += new System.EventHandler(this.numericUpDown3_ValueChanged); + // + // numericUpDown2 + // + this.numericUpDown2.DecimalPlaces = 3; + this.numericUpDown2.Enabled = false; + this.numericUpDown2.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown2.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown2.Location = new System.Drawing.Point(56, 56); + this.numericUpDown2.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDown2.Name = "numericUpDown2"; + this.numericUpDown2.Size = new System.Drawing.Size(58, 21); + this.numericUpDown2.TabIndex = 3; + this.numericUpDown2.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown2.ValueChanged += new System.EventHandler(this.numericUpDown2_ValueChanged); + // + // numericUpDown1 + // + this.numericUpDown1.DecimalPlaces = 3; + this.numericUpDown1.Enabled = false; + this.numericUpDown1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown1.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown1.Location = new System.Drawing.Point(56, 36); + this.numericUpDown1.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(58, 21); + this.numericUpDown1.TabIndex = 2; + this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged); + // + // label9 + // + this.label9.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label9.Location = new System.Drawing.Point(135, 39); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(77, 25); + this.label9.TabIndex = 0; + this.label9.Text = "Alpha:"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label8.Location = new System.Drawing.Point(10, 75); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(40, 20); + this.label8.TabIndex = 0; + this.label8.Text = "B"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label7.Location = new System.Drawing.Point(10, 55); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(40, 20); + this.label7.TabIndex = 0; + this.label7.Text = "G"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label6.Location = new System.Drawing.Point(10, 35); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(40, 20); + this.label6.TabIndex = 0; + this.label6.Text = "R"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // checkBox2 + // + this.checkBox2.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.checkBox2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox2.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox2.Location = new System.Drawing.Point(143, 7); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(70, 25); + this.checkBox2.TabIndex = 1; + this.checkBox2.Text = "Alpha"; + this.checkBox2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged); + // + // checkBox1 + // + this.checkBox1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox1.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox1.Location = new System.Drawing.Point(12, 7); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(70, 25); + this.checkBox1.TabIndex = 0; + this.checkBox1.Text = "Color"; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // checkBox3 + // + this.checkBox3.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox3.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox3.Location = new System.Drawing.Point(12, 108); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(201, 25); + this.checkBox3.TabIndex = 1; + this.checkBox3.Text = "Remove white Vertex Colors"; + this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged); + // + // FormVC + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(224, 138); + this.Controls.Add(this.numericUpDown4); + this.Controls.Add(this.numericUpDown3); + this.Controls.Add(this.numericUpDown2); + this.Controls.Add(this.numericUpDown1); + this.Controls.Add(this.label9); + this.Controls.Add(this.label8); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.checkBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FormVC"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "VertexColors"; + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.ResumeLayout(false); + + } + } +} \ No newline at end of file diff --git a/Nifscan/FormVC.cs b/Nifscan/FormVC.cs new file mode 100644 index 0000000..15661dd --- /dev/null +++ b/Nifscan/FormVC.cs @@ -0,0 +1,83 @@ +using System; +using System.Windows.Forms; + +namespace Nifscan +{ + public partial class FormVC : Form + { + public FormVC() + { + InitializeComponent(); + checkBox1.Enabled = !FormMain.fixesOn; + checkBox2.Enabled = !FormMain.fixesOn; + checkBox1.Checked = FormMain.vcColor; + checkBox2.Checked = FormMain.vcAlpha; + checkBox3.Checked = FormMain.vcRemove; + numericUpDown1.Value = (decimal)FormMain.vcR; + numericUpDown2.Value = (decimal)FormMain.vcG; + numericUpDown3.Value = (decimal)FormMain.vcB; + numericUpDown4.Value = (decimal)FormMain.vcA; + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + FormMain.vcColor = checkBox1.Checked; + numericUpDown1.Enabled = checkBox1.Checked; + numericUpDown2.Enabled = checkBox1.Checked; + numericUpDown3.Enabled = checkBox1.Checked; + changeButton(); + } + + private void checkBox2_CheckedChanged(object sender, EventArgs e) + { + FormMain.vcAlpha = checkBox2.Checked; + numericUpDown4.Enabled = checkBox2.Checked; + changeButton(); + } + + private void numericUpDown1_ValueChanged(object sender, EventArgs e) + { + FormMain.vcR = (float)numericUpDown1.Value; + } + + private void numericUpDown2_ValueChanged(object sender, EventArgs e) + { + FormMain.vcG = (float)numericUpDown2.Value; + } + + private void numericUpDown3_ValueChanged(object sender, EventArgs e) + { + FormMain.vcB = (float)numericUpDown3.Value; + } + + private void numericUpDown4_ValueChanged(object sender, EventArgs e) + { + FormMain.vcA = (float)numericUpDown4.Value; + } + + private void checkBox3_CheckedChanged(object sender, EventArgs e) + { + FormMain.vcRemove = checkBox3.Checked; + if (checkBox3.Checked) + { + checkBox1.Checked = false; + checkBox2.Checked = false; + checkBox1.Enabled = false; + checkBox2.Enabled = false; + checkBox1_CheckedChanged(this, new EventArgs()); + checkBox2_CheckedChanged(this, new EventArgs()); + } + else if (!FormMain.fixesOn) + { + checkBox1.Enabled = true; + checkBox2.Enabled = true; + } + changeButton(); + } + + private void changeButton() + { + FormMain.formMain.buttonColorVC(checkBox1.Checked || checkBox2.Checked || checkBox3.Checked); + } + } +} diff --git a/Nifscan/FormVC.resx b/Nifscan/FormVC.resx new file mode 100644 index 0000000..e8ae276 --- /dev/null +++ b/Nifscan/FormVC.resx @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Nifscan/FormVer.Designer.cs b/Nifscan/FormVer.Designer.cs new file mode 100644 index 0000000..d34924d --- /dev/null +++ b/Nifscan/FormVer.Designer.cs @@ -0,0 +1,283 @@ +namespace Nifscan +{ + partial class FormVer + { + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.CheckBox checkBox4; + private System.Windows.Forms.CheckBox checkBox5; + private System.Windows.Forms.CheckBox checkBox6; + private System.Windows.Forms.CheckBox checkBox7; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.NumericUpDown numericUpDown2; + private System.Windows.Forms.NumericUpDown numericUpDown3; + private System.Windows.Forms.NumericUpDown numericUpDown4; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.numericUpDown2 = new System.Windows.Forms.NumericUpDown(); + this.numericUpDown3 = new System.Windows.Forms.NumericUpDown(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.checkBox4 = new System.Windows.Forms.CheckBox(); + this.checkBox5 = new System.Windows.Forms.CheckBox(); + this.checkBox6 = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.numericUpDown4 = new System.Windows.Forms.NumericUpDown(); + this.checkBox7 = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).BeginInit(); + this.SuspendLayout(); + // + // checkBox1 + // + this.checkBox1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox1.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox1.Location = new System.Drawing.Point(12, 68); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(44, 25); + this.checkBox1.TabIndex = 7; + this.checkBox1.Text = "X"; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // numericUpDown1 + // + this.numericUpDown1.DecimalPlaces = 6; + this.numericUpDown1.Enabled = false; + this.numericUpDown1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown1.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown1.Location = new System.Drawing.Point(129, 70); + this.numericUpDown1.Maximum = new decimal(new int[] { + 100000000, + 0, + 0, + 0}); + this.numericUpDown1.Minimum = new decimal(new int[] { + 100000000, + 0, + 0, + -2147483648}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(145, 21); + this.numericUpDown1.TabIndex = 8; + this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown1.Value = new decimal(new int[] { + 100000000, + 0, + 0, + -2147483648}); + this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown4_ValueChanged); + // + // checkBox2 + // + this.checkBox2.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox2.Location = new System.Drawing.Point(62, 68); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(61, 25); + this.checkBox2.TabIndex = 7; + this.checkBox2.Text = "Hard"; + this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged); + // + // numericUpDown2 + // + this.numericUpDown2.DecimalPlaces = 6; + this.numericUpDown2.Enabled = false; + this.numericUpDown2.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown2.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown2.Location = new System.Drawing.Point(129, 101); + this.numericUpDown2.Maximum = new decimal(new int[] { + 100000000, + 0, + 0, + 0}); + this.numericUpDown2.Minimum = new decimal(new int[] { + 100000000, + 0, + 0, + -2147483648}); + this.numericUpDown2.Name = "numericUpDown2"; + this.numericUpDown2.Size = new System.Drawing.Size(145, 21); + this.numericUpDown2.TabIndex = 8; + this.numericUpDown2.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown2.Value = new decimal(new int[] { + 100000000, + 0, + 0, + -2147483648}); + this.numericUpDown2.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged); + // + // numericUpDown3 + // + this.numericUpDown3.DecimalPlaces = 6; + this.numericUpDown3.Enabled = false; + this.numericUpDown3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown3.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.numericUpDown3.Location = new System.Drawing.Point(129, 132); + this.numericUpDown3.Maximum = new decimal(new int[] { + 100000000, + 0, + 0, + 0}); + this.numericUpDown3.Minimum = new decimal(new int[] { + 100000000, + 0, + 0, + -2147483648}); + this.numericUpDown3.Name = "numericUpDown3"; + this.numericUpDown3.Size = new System.Drawing.Size(145, 21); + this.numericUpDown3.TabIndex = 8; + this.numericUpDown3.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown3.Value = new decimal(new int[] { + 100000000, + 0, + 0, + -2147483648}); + this.numericUpDown3.ValueChanged += new System.EventHandler(this.numericUpDown2_ValueChanged); + // + // checkBox3 + // + this.checkBox3.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox3.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox3.Location = new System.Drawing.Point(12, 99); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(44, 25); + this.checkBox3.TabIndex = 7; + this.checkBox3.Text = "Y"; + this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged); + // + // checkBox4 + // + this.checkBox4.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox4.Location = new System.Drawing.Point(62, 99); + this.checkBox4.Name = "checkBox4"; + this.checkBox4.Size = new System.Drawing.Size(61, 25); + this.checkBox4.TabIndex = 7; + this.checkBox4.Text = "Hard"; + this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged); + // + // checkBox5 + // + this.checkBox5.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox5.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox5.Location = new System.Drawing.Point(12, 130); + this.checkBox5.Name = "checkBox5"; + this.checkBox5.Size = new System.Drawing.Size(44, 25); + this.checkBox5.TabIndex = 7; + this.checkBox5.Text = "Z"; + this.checkBox5.CheckedChanged += new System.EventHandler(this.checkBox5_CheckedChanged); + // + // checkBox6 + // + this.checkBox6.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox6.Location = new System.Drawing.Point(62, 130); + this.checkBox6.Name = "checkBox6"; + this.checkBox6.Size = new System.Drawing.Size(61, 25); + this.checkBox6.TabIndex = 7; + this.checkBox6.Text = "Hard"; + this.checkBox6.CheckedChanged += new System.EventHandler(this.checkBox6_CheckedChanged); + // + // label1 + // + this.label1.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label1.Location = new System.Drawing.Point(9, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(262, 56); + this.label1.TabIndex = 9; + this.label1.Text = "Set vertices coordinates be offset value. Hard - set all vertices coordination be" + + " this value."; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // numericUpDown4 + // + this.numericUpDown4.Enabled = false; + this.numericUpDown4.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.numericUpDown4.Location = new System.Drawing.Point(231, 159); + this.numericUpDown4.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.numericUpDown4.Name = "numericUpDown4"; + this.numericUpDown4.Size = new System.Drawing.Size(43, 21); + this.numericUpDown4.TabIndex = 8; + this.numericUpDown4.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.numericUpDown4.Value = new decimal(new int[] { + 3, + 0, + 0, + 0}); + this.numericUpDown4.ValueChanged += new System.EventHandler(this.numericUpDown4_ValueChanged_1); + // + // checkBox7 + // + this.checkBox7.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.checkBox7.ForeColor = System.Drawing.Color.DarkRed; + this.checkBox7.Location = new System.Drawing.Point(12, 157); + this.checkBox7.Name = "checkBox7"; + this.checkBox7.Size = new System.Drawing.Size(213, 25); + this.checkBox7.TabIndex = 7; + this.checkBox7.Text = "Trim coordinates after dot"; + this.checkBox7.CheckedChanged += new System.EventHandler(this.checkBox7_CheckedChanged); + // + // FormVer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(286, 192); + this.Controls.Add(this.label1); + this.Controls.Add(this.checkBox6); + this.Controls.Add(this.checkBox4); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.checkBox7); + this.Controls.Add(this.checkBox5); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.numericUpDown4); + this.Controls.Add(this.numericUpDown3); + this.Controls.Add(this.numericUpDown2); + this.Controls.Add(this.numericUpDown1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FormVer"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Vertices"; + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).EndInit(); + this.ResumeLayout(false); + + } + } +} \ No newline at end of file diff --git a/Nifscan/FormVer.cs b/Nifscan/FormVer.cs new file mode 100644 index 0000000..2dfae9a --- /dev/null +++ b/Nifscan/FormVer.cs @@ -0,0 +1,92 @@ +using System; +using System.Windows.Forms; + +namespace Nifscan +{ + public partial class FormVer : Form + { + public FormVer() + { + InitializeComponent(); + checkBox1.Checked = FormMain.verX; + checkBox3.Checked = FormMain.verY; + checkBox5.Checked = FormMain.verZ; + checkBox2.Checked = FormMain.verXHard; + checkBox4.Checked = FormMain.verYHard; + checkBox6.Checked = FormMain.verZHard; + checkBox7.Checked = FormMain.verTrim; + numericUpDown1.Value = (decimal)FormMain.verXval; + numericUpDown2.Value = (decimal)FormMain.verYval; + numericUpDown3.Value = (decimal)FormMain.verZval; + numericUpDown4.Value = (decimal)FormMain.verTrimNum; + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + FormMain.verX = checkBox1.Checked; + numericUpDown1.Enabled = checkBox1.Checked; + changeButton(); + } + + private void checkBox2_CheckedChanged(object sender, EventArgs e) + { + FormMain.verXHard = checkBox2.Checked; + } + + private void numericUpDown4_ValueChanged(object sender, EventArgs e) + { + FormMain.verXval = (double)numericUpDown1.Value; + } + + private void checkBox3_CheckedChanged(object sender, EventArgs e) + { + FormMain.verY = checkBox3.Checked; + numericUpDown2.Enabled = checkBox3.Checked; + changeButton(); + } + + private void checkBox4_CheckedChanged(object sender, EventArgs e) + { + FormMain.verYHard = checkBox4.Checked; + } + + private void numericUpDown1_ValueChanged(object sender, EventArgs e) + { + FormMain.verYval = (double)numericUpDown2.Value; + } + + private void checkBox5_CheckedChanged(object sender, EventArgs e) + { + FormMain.verZ = checkBox5.Checked; + numericUpDown3.Enabled = checkBox5.Checked; + changeButton(); + } + + private void checkBox6_CheckedChanged(object sender, EventArgs e) + { + FormMain.verZHard = checkBox6.Checked; + } + + private void numericUpDown2_ValueChanged(object sender, EventArgs e) + { + FormMain.verZval = (double)numericUpDown3.Value; + } + + private void changeButton() + { + FormMain.formMain.buttonColorVer(checkBox1.Checked || checkBox3.Checked || checkBox5.Checked || checkBox7.Checked); + } + + private void checkBox7_CheckedChanged(object sender, EventArgs e) + { + FormMain.verTrim = checkBox7.Checked; + numericUpDown4.Enabled = checkBox7.Checked; + changeButton(); + } + + private void numericUpDown4_ValueChanged_1(object sender, EventArgs e) + { + FormMain.verTrimNum = (int)numericUpDown4.Value; + } + } +} diff --git a/Nifscan/FormVer.resx b/Nifscan/FormVer.resx new file mode 100644 index 0000000..e8ae276 --- /dev/null +++ b/Nifscan/FormVer.resx @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Nifscan/Nifscan.csproj b/Nifscan/Nifscan.csproj new file mode 100644 index 0000000..d466616 --- /dev/null +++ b/Nifscan/Nifscan.csproj @@ -0,0 +1,146 @@ + + + + + Debug + AnyCPU + {954D1A7F-D909-43EC-A1E2-053ABF7358D6} + WinExe + Properties + Nifscan + Nifscan + v4.0 + 512 + + false + опубликовать\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + favicon.ico + + + Nifscan.Program + + + + + + + + + Form + + + FormEC.cs + + + Form + + + FormMain.cs + + + Form + + + FormVer.cs + + + + + Form + + + FormParallax.cs + + + Form + + + FormVC.cs + + + FormEC.cs + + + FormMain.cs + + + FormVer.cs + + + FormParallax.cs + + + FormVC.cs + + + + + + + + + + + False + Microsoft .NET Framework 4 %28x86 и x64%29 + true + + + False + Клиентский профиль .NET Framework 3.5 SP1 + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + \ No newline at end of file diff --git a/Nifscan/Program.cs b/Nifscan/Program.cs new file mode 100644 index 0000000..7f623f9 --- /dev/null +++ b/Nifscan/Program.cs @@ -0,0 +1,16 @@ +using System; +using System.Windows.Forms; + +namespace Nifscan +{ + static class Program + { + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new FormMain()); + } + } +} diff --git a/Nifscan/Properties/AssemblyInfo.cs b/Nifscan/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c94de21 --- /dev/null +++ b/Nifscan/Properties/AssemblyInfo.cs @@ -0,0 +1,13 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: ComVisible(false)] +[assembly: AssemblyVersion("1.0.0.0")] diff --git a/Nifscan/bin/Release/Nifscan.exe b/Nifscan/bin/Release/Nifscan.exe new file mode 100644 index 0000000000000000000000000000000000000000..4c5b6d85d20371d433a16be0f4b045e7d177150e GIT binary patch literal 96768 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 literal 0 HcmV?d00001 diff --git a/Nifscan/bin/Release/Nifscan.exe.config b/Nifscan/bin/Release/Nifscan.exe.config new file mode 100644 index 0000000..58262a1 --- /dev/null +++ b/Nifscan/bin/Release/Nifscan.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Nifscan/bin/Release/Nifscan.pdb b/Nifscan/bin/Release/Nifscan.pdb new file mode 100644 index 0000000000000000000000000000000000000000..52a50cf27397110f44dee29f7261f54c80456565 GIT binary patch literal 83456 zcmeF42Y41mxVATxP=j>ogx-D_!iXH5V1q(L*`@8;r!QiIPR4<_s+~aeRg(cc6Pr3$%z?hnQ2q9Vtbs{ zqfw*S0mFL5wr$$1SxnJN@xvUBeCE%&gVTMS>sV?2|M%}?D1l9f|2zIKmq5D+jrgzs z%LVd(Ebqm(H;*!Hpd<}J!cpBhe7FESd^o=`|M&0YErCe&ANybZpS%?w%Gq^In@4r6 zT4_=g_T%cja_+j}5BFX1%(&R|c3j)VSCyM2c~ zJ7NAW$>M*>JW2`tSN}&Toc{w(zfKy`^|?a3N?kR~*)-^me79}w+3&_LK7GB^Rb4%E zu@x7NDK%wRsizw{&aZ|0K0Wcy)VNnCpV$Af@4COSDC4dh?U2!_^i4{I^uygh`=H|C z{7-#d@VEa1MR!tU@kG^sM)W;R+6~@!XwlYlvPM7H$}An76a{pWXW~TF|4*;%E?j5f z!QFp9X$t5h&&Y|Y|7*AI zc;WsL#SVOZ>5}!c&u(?rNnUIxP4-Sy{Xh82sk8f3KXm!$Y2)tdeBg|hCrtsJA%cuJ)*^mOQ$pR9vSf5xKD>&U8sEBlcs=9 z@{F9Q`d?7&;JY#H3cPs1FCXk~ne|?ylf2kYn(UpZ`k#}Ub=hm*ZaEmcrdNptzm2)% zq$!}2JR>Kn{y(3za_Pc3*RTF9{gHW9E_u7&NnUIxRrd5CPg}e6v|rDC3L?=+A*3); z1SyIXLy99YND1T=MC-q$kkUvQq%2YnDUY0rR6r^sm5|Cv6{IRs4XKXAA~lejNG+r` zQU}ohLXD_C(g4v7r7_Y3X^NbNG((yrEf7sOS|P2GHb`4U`x@FK9gvPlC!{l?2b*1y zIHViW9qEC@BR!E`NN=PM(ib@$>4)@31|S2GLC9c)W$}~Zcz*ZCkK@OE?~k#<*31VDtRYwa6(2xN=m}qT!}ntpy|GkV@_#y9DkSI?4Xa9 z>cJUlQ!^4~sxb3RXL>H3ymLR2N(t6Zo&lQ5LHU^TtdNhELO;Nxb>vfS*1zId z1(xQzjf1I(j^%K(J(sx)?g>Z%^qVL^dyIkSAh%%m5;78*Z{2l|J=&rB`hUmCQ391e zZWh&!_A-BIm&=Pc+7o4)z%ge|V?vGj;mD_pq+b#)E+x)bW3b(eH?ZAe#cL0w%# zzV0X2WNneIt}*G#EvT#O(bxUH#hM+`RoFU~*uH1sU>H~b;LibdALb@vv>B=prt83cVz5c8Uqok{AUAl4$>Z%{e*3I~- zw{+D%NLOw_U9A2)PJ$B9e6Oj~P*XT(z0J=XmICve=={lc|7X+0th5Zx?edqBzbr($ zzI#!pcBv7==4ECj&1AlpectqppDV!ir#LjflroO-8xt-=%}F)gLKdl|?Y#H8x&TcsAn3=oFZ4%gc|q z#fgcxm(6c&6$nT0K1|-D%lYx9&Yqc+k(@XpJw9ztYO4t&6H;a;EbU5BtCnjFMtgo{12Fsdthv?~kyt&G{`3WuS z!ny!Bf@RHmNAw~;ZojNspO`%RW$oH{gJs=zDN(Hr`-av#t~Uj2~~V zvTkug%DRocrluA2$~w-2`QM7Tcl&WCnl7XJ?5wP`R9ugz-}unR6|7g*t)k1%2=yCn zPi*;))uJAU*5>?!wX*0Qe!RKLH+R1=frj^Q^4!9f?;AF5t^4^$TjCz=#~q)XnVyzu zh8X|!-k|Wp_l7QhUs=S9EvuLxt63L}p5w>cH#IpcIUyx^eo~LLndxb%NvXQ6nS0zG z()?Xv?sNF{^{Y9t=Ca_Qy*vsyJ%-h8R=XJo{^YLPLL~R*)?Hm_BzLYc<6m7)BzLWG zDtuigk=$vo#$C-TlDpPM7r6?r88T8mZqMI*a6 z_sdUJ6~TY==GMRN#gW|o@{7sCUFE0y_djXJYNPV=1AaFl-dHEfjC(Meb?|jM;h*wxR$QZ{>f#k_u087JbU>UdumW3N3>+0?< z$o18I_O^mAPt zk$&$U9y$HggDL;cQ033_3X^`GS>&01@7^3a{XJ}W@y37d^n3T#$myq?P5S#9e>vr^ z`u6UNQBEA^I)e2!0DV1Q8EE{ux$4ck$3@QfQ1sRAhC$_fI8?hEVZu>+KC<0;_pT^i z6Xpn}V>JG_W;EwMqWr!4P89u-_lzsp{&k(H4>}bpT%KRKw0(13sQybibxBK|?0k)- z!}RVCQRZGz7~PwZ!Rkmkh{J@(^DYx!EaaNdb1##>noxafE!Z7$-MEyYo`boXgX=m- zgt`ti_NWi%!3JHdK8rf#cwPa6Hsn%>?)woCx>B1o%Ci1f%lvBm!1|Q(sXqI_5{cZU%ufnVs>6XGq+?1&sw_0Ez5>_4_u<{} z2Y3(67wtIr!t!t}tO@UfE#UpIFMJqIhmXL8a2>n?J_>J#vxgO_&0AJIgMfZxOO;1BQ`_#?a<9)wT8pWsgTGu#V*fnUR4Vg90y^9QT| z|Af`yU$7NC40}QrFx-)l#a4GJ%m?Sf{O}UUdV_ltEC}y~(QpGS1Yd@Q;rp-%JOGPA z4K}!j-9oT9ECFL+IamV5!c$;9SQ0jc3{>6Lur!Q=Wne#87LJ7FU;-=;Q{bsE6IO&V ztiHtXL_CN7x$J%E6wo=7^Ptqkd@Iru>4Rt-(*tRM)I*XGjb)l6w;|<_fk-K&GSVLD zi!?>XBC?x-D9mtp4Y7+9-XQG%F1&CWj>XU4B>zF)wL_TTn(|R+=OlyGrUK zBazz3=#bPk_gJnwjgieW1Yp*r#koi<(hBL1WFbqCbqIZnu1B?XryVjFnTuS7Y(U;X z{y@rdAL)b)M_gnXvJTmS97Kw9UucI6My4SyvI;p_4sK7hfZXf9=LRy@LEXTgPN;tX$Y&ppmrj6eDD z^)xqCP^HaOOu?ABeVgFio+c4?Z!7oa*lS%}ZPg`^Q{hcE{z`<4G2qW}Qj$}XWT(01 zvCm1p^>5XQ{P^p2&6Fq(6Nz`Kxm@%XKmYzZ;c>2ihvQunA>Pi!yDJ>;ajt)dOv@ z+a)JnJ~j8ic%iUp{}F0J+DK!y1x^*tGxN^RPyKbC6WC#wEh|y ze;u;@O~jwq7es09YYx@NaC?55(KmZXUCP3g19>;|;Ciqv?#!Ld{8wdP%IrQ>{WKz9 zm9yhfc;2-ir8&1b)O`EcbNXQN5s(*wAlhXJ+S9 z`SGs*$m=E4om&hYwOh3-wOiVdS+9(=Ub2sV)Vofj%r(pPqO}2MkL_R8KGhy*o384` zZG?4l?ml%%0%sGCuX&y zFClg5GPl$IVwX7&E!%M$!WOUtq}97aU@JHda*en%VH>DD74)g@&5&!xeH5x4Y=fQQ z+pr7V57i!if^o1o7eqX)0DHprP<1>Qs*Wc@)$tstIzAt&j<1EP<9pyB_!1lpKZca4 z`vatXxJ4-2VXzz=4(q@XuoD~&$H6ghCOi{f1joV~AZ6;_4{2ZSlW+pu4kyBo;AEJu zfY~2n)=j2hZj5;<>;$L5VK5m^fYV_boB=O{T9>&Qro-FeEciIgfGBayxXJ!g;VYoDciKv!T{o7Qk`v95@*+glX_xcouZ|TL904G0xRo z3!3w24y$!^e@^RD^VeID-iYQ_nhP~S1|ac><~5p+>0I+Ce?F!;l;&eA5Y4~Tr^rp$ zp#10>R9L}zo*zap?Bzd_n?FDE=Wn{MH81o1YVFkb+mrLKdq?XYoZp4#b;_U8ra7bL za>EhL<@`CE+-0t5`i_HKLnRT`Gt9BlgXteP&~A1jpCcOIR6*jAvB+X%IkFYmixi+v zsvzxU6gG_&VtSW-$-Vph`RzNwRw=K9-U{>d1b z@N&(!R@%7fH?t3#arB+pai5s|M&WpMZ_uH!iGNT=(T6d3dA9K$=X}eL*DveqY`mxX zkwPxL=*B3TcysL=IKDkF;kZjuusVWq(;%aJM2!3R_JoAvUJ@bhLc~2LV%#l{Yd=aj zZh!AjFyD-mqGv^nJNI4 zDoR}U`*Hmb%{P~uUd?f45}AK6hK=6g$9t6d=69rd8vf=`xGt&bZUKt2st;*DOr_Rg{t38K)X|-7X`!x3=yol1T21YmI-}enj`S)}8hl z(Y+n^|8%~sHV~X|69i#L=~}O1RQDD$&!)oM>oAvwMR;S; zn{Ri9dgk03(Y!lHg7Z`FeiM0qTAuK9|Kb{UgZmdIVs|H^{P_0}mHlu;hvqx-R|VFE zRUvZ->cE@lREMK5$3icS8r%7jvoE6$I^Mk@^7HoE_*Xo2pyEMX&137CaFuU`nG;?! z+`K+N@_qr$pU5*KM5U`;_WV))y#6|}KirK!u7e}|d3|kUf3#cUkM?`(JE zrBm~>a5}v{E-Jh4(=|ysnWHQEl$8@_{Ef)YpUT?1%Y96V50-7&=18 z2WtNSb>{AeYvE7uK3IgdbU!QyAAoh>gHZbi*1=)$Q8*Po2IoNP+`SC0hd00{;9c-Z zxDIZF+CT6N`~q%*hu~%y!_8w0tO%cl4d7PT2EG8#fG@%sa63F3z67s?JK)XmWq2=q z1+Is$!)?uS3aPhkuLq%UDj_!VpbzlL4lH*gUA7EXi*;4JtZJP&>kuZ2Ir zRq#jnC_D(CgFnHy;Lq@L_zOG)e}!6PJ_HNF-(U&&JFE!*fU)pTSP%XMo5I7eJ>>S| z#=|H$2k>GQFoolURETZ)g-B;=$TKfpD zPt3xc*Ryu5NlM>;R;}m!Vcmh)=^6I1=xUATMCd9%T9fggk8ABi>mypllS>pg-D)e2!G0uV{vhLei0C$b-mUM#+D1e&({J%n!=cjAHYjH0B_WUzWq4gj7TdiR`zI$-} zr&{3suO4YBT7gMUOU-QBJBjZHBqy@ApYwiL@07Gj+JT=S6~ZeKaO*orki5_KWD4;KBTlpy)>y~s~?8tpaJ!KPJVmq6#O+-YQGC}$7ECZ!R7^5g4i9;qO>RBal~JhpXs z4@Ah_y#LS~f7%1_D*-Gf+|iheQ&0-e&wGx)f4c|5dmbCk|FY^t!qKIfNBuvA{8y(C z6u*-=J0pX4J9;IjB+00BZX%77@h3mNp7Q@J?pzna{O5YVV{0Dn%D?4-Y_KN%v8Cwh zbGv7H`8L;JcDXZ-PfD1al+iOIgO^SfFI{{te@S!G(=xL9rcO!o{HxnPGH=Si=0dTh z7&1k0SJCvEos#0|Fx-it(<5y*O-D)!r&vTCa5CX=Y2?zGnJ{;l zDeC@7sZ+D2nLJayxpZteCL)yyZ9JE|R~KG1axWRtJtv)N(A+JH zMzEUic1>A(tO6mt20*@niZwD%tm=E;$&F@5hfz^|c0n zx-RDj{Kba+spAOx8B4%j8!%4|_^A={OYQtc8FqFwiux@oiZqsMa zOvlRjs~d7loW?hrxF!^4y^x#y={_U3`Vrh(V&|8o(z%=t?{e%`b8-3Uq^R;tXTy+N zFrAG;Zozam4!H%>*(8EnIGq#ebnifKAQ!Wr&ZZ%M!SXyU)}Jvc{O_91=4wX$X_s>{X%ZRboLLq1=Beo z*Wv9!7@Tf_XS2$$F3#YSqX|tZ|JQ7Ifgpj{rIwywQg6T{Mxdqdy zF=j9i!E`1@aP!;5R+ZraML|QZW^qF{pp?&?0a@nF1p`7!obh3 zziANFe~I1%tJ;5w{RPbE$gMTa%@gIGeiD@>C6hb1=Be@3Z@-ahdTpaWzJ_X6>9ZTom%_*Jtp099y0>HT0$j{GAuUAIUUjbbbUk zl4{%(PJzHWi{evVt8cg<1cv^vrUJ}Lc7nCuI&yGx@zH{Rx;9|g;n zwKB4qV&3ObI#-3Yk;x+ljWffq8=V>9=Eo>-P&cg#7sZ!anr-pkD*`-d106 zEDPz|J}vv+DSvvYME;%#_`C5K{H?eC8a2!*$D5Ag&+i|Uw^h_ZUo!P#qa430LVi^T zt*}#hY$C3e`00wDUDl7TmPct0+gw)*Q}SW3F**={VzvLk*BAzrS3jbr$<6&)-bx8v^hr0 z3+tXE_2QEf6H=^-3G3b?b%rKQ$w)Ad+^nLmpS4Ho4Wnz!PSbr6+|v^hlWb>U^i&4- zAE`I8oBBZ;mvkODQm1F?SpyQ%t&Ymz!3a9@l5(k;@_Zygz;2Jhd4&|u=!E>ZaC7NN1I-4D!)%3={_uN zN>=~msnfD}z>;0QTS9t#U#wG?b`vJBJjoEKg}HvqR_56qWAmE%c*n6>&NaU-LShAZ(3a-ff+8-8~WV@72%njO3Z#J<{(ZK4WvpekMS3hDb})?mFKTY2QJYrj0Mt4#zP zgY$dT|I#F}Q&(HpnLP3|-Cm|i=f$LPB7UUr>!>`6;IB{~^Zg9RPZM<32mBNc`3a7_{Ink1_27Nm zBi#43szU@E2_DSLc)_pet!-VHWh^%MTV)G>Nn zINsy@W_38;Rt>z^n6_mfoJaoi=#+y2DHTegvxUyVQfqZ;v!3CDY!-`?@_>-S0PZM?zj zs5~M~W*c z3&?s$+Q{oJy4pOi<^0$um$89huaP=gDhn@H^L&kwONEO7!~1ttRlQeRD@L? z?|q)CoO|DiUyQEz?m|@dyAKSrv%f*b^95JwxfL?T%l?km9hepWYN&Ycgq`3TH~`)a z$HRM}-VH0IFa2_CDb?0w5ISd_DaJ#NVj3$Z5#qw<8;SD)-K(ta6MFNo`Cbncyr0=B%6l(!5d02%eJ}PP)Ef6sFa`bs z7r zD809!zU%w}jDg?667V3@_nd!$(mMq89p}SP-*K)^J<|@|I*@PRx(#4?*c|drGq($@ z2)jY~?*(~h$sGu*!Ksk;>&}E+W9~v&6E1?%zYx~Jd1F!|=Um$hiM(5|dYEa+bZ39n%($o9g?J!q?9bhBK zH|pKyuoG+rrPm&I!Q2hTL9LH=gCk*gsQ197cP8wKIRW;9i(qf4@1OO6m%+a9T6j8K z3H!r4p!~0av>Ef>_z?IE=Am#K90v9N_;C0t90^~C^7j@Tjal!Np9z0}W8trmZ_2p^ z3$P~z>N_yfkAaggmxYtzsn)(CoPxQHweMuv4^G2=B%BU2;0$;Tq%FJm!5hp)o3;k$4F{0g1} ze}@aitlzIX4bo1iM3BhkY#1fJ)bBcp2_z!pq@gYd-~E ziFqcx8qSB;!liI2)H|p0zXINXc`aN9H^H0WYmjgIxxYf`{RvlKzM~NLLAVaCgxle5 za5uai?uU24@8BvJU6}hLYzh@lOL!ON3*p`H21uXb-Usi6Pr$YC1$ZCa1@DJn!3Ute zYp-xBz=trO1|NZOa2*^8ABB_PV^Hs(KMohb_3%3Q1iS~*C%Lafg{Swr2ZiI*7 zGq7Ay?s2dN+zgw+EwCee77l}3;n`5(xbQj5H^3L*8u%jI2)D!S@Fn;*+yVE&m*JoA z6TJ3$B8D;FIuexD&nue}xM7Pq-Iz z+2Y)XU>*1Y>WgAz)#>jxDVb270#XTQ_Qcy&*8`L3-~Mi5*CQz{sYUv zuVFR#4eS8Fg_A_WnF_zdyb%5XuY^Cs)$kyE2>t{&!Jpwv@E72={y#1+Rel;GHl(d<80;U9ceLFJU40J1h+KB3cnx6&8h! zVKLYi@@-3ZFpPn7p~5)_o`U&0$ROTb4NJqPU>W#4EDLwTa_}Qq9{vJPg(Vp5@eL8T zHmnFcz)Em1tPJNu6A!G4`8vow(OnH=;Zv{%d>--)-Q5jq!H*!{BykTx?w#%_42C)J=dL;3ZJuTmkuhy}KH6Pj|I%Hx7OQyTh(!c(w#HA@_LqMc5a9 z2>Zd$V1M{C902n%|6&Z_mV$#|SvVM0f=iz=BE`}u;U|#_1LdH;T3wROi26-3T?F}!1BjKfREW8Y6!X@xLcsaZl zGWK$>hgZUT;MH&=yaw)q*TT=?Qur0T9)1gNfZxMq@F2Vq{sM1;zrmYfR0Y-r;e+rN zcy>kZYw$IAJA50ig8Sf|umg+jYv4e557d6NweTr;Kim!t?*j74c-Kwhxfo2 z;8Sor+yZyNH=)9L3%-K+eYg`IhOfhdRk+{4;_yva1@4AT;2zitz5{zhh0_=A#XK0k z4`;y-;T))Zo@03-l>WtVKlWF^PvJ87Ia~w3fKR|L;dAgSxC4F-_rP!AyYK+q55I$7 zz#rg`@F!T9iQO-7JUj%G;BPPs{sHI0KjC@sFL(hw4DW$a`DqU@AJm?q{P1z8bZ>wK zG4Fzf;Cqm7Fu9*VzCG-I1B=2RVKMk8WNh!|uf}}=#=sJ=3}meDj)JA&nULS$cBetc z{_adz31&g&0PcmbDqI4q!CPQ;xC+L?$6yV(0V2G)T5PKY}Pc7RvIPVh6xcTe1JVORJY><074GQWUD zU_7hRFU_TxXg6rTgxC@SeA4BFm?(gsnShpZPG?)d`;R2Wem%vQ89L|QfLY2!ZI0y41a4viT z&Vw7Q`$o6`^ZW1|xDPIbU&8tDTj;_+;CZlMEic@na53fz@IqMG+Q-6+G53O(!t)^C z5OepyE8x5ED)BpdN>k31!uyi;e7ZE+zA!_>u@vX-SAoX9^4AQhR?%O>oM+!r@@zCC-^cP3SWT< zP~jxPU6|A1oA5%o8!meYXRc--_%*Bo4?%w8&K=aqEB7I=Cg!oQ7Mua=!s}suct30ipMrej z-F*!_Jpiexcy-lI39L|lVKb@3wDDGV0U;0 z>;bQXisyRR8}ka-7p{V=dAN_k0dND9-ex!m^J{Pjd>0OdA3?rJ?|ub`!|&k;_&a3H z#Eoh~e+f&%Q7{gUfdk=KI2F2r2o zG|yZHF2gl*wX zus!74{%%LO9Cn7cK<{@idazzC>56nfw2s{x(QjTP2&V?W#889u$gV11d3K?r24&iZuYfioUsb7>8iZBDhM;1e|`_4x$z^t&PW%l*Acd&RK2t|;H#qjkk(FL<6hONMW|hQR?@+Q<+UX)LJqZ? za^zEW&3D9%T}5M7ekUR0ja@Zod{k8@5%U=2bYvvb4Vi{qY;`tr9!V!9prdliOD7ms zzoY2+@%70=XJ#NiwW&z)DK209@KiUEbc5-inuks*_I@~drAs=B)7Miu{#|_WdFTZ5 zsCtMLj^fhw*aB%x zd-dD?D0G`4VfLo=wn0wgO6bP5p=+lhddmq{VIAgtj%k~9dAeE0{z6qpAGc#Wu=Nfcdla^k@zXXnkH^NbH1kwkYfV4uU5n5|Xu9Hb$bNYwY ze9gBt_1~N{>s&`0`hnJzy~^rD=?tXr>#Q#ub0`f>$ZG>K zBd9<-6Nj&(aEDT^-AF?NVs1eHuKv0KZB~716TVWc{4`+~K?BOqOY;CI-El}qq-~%M zGKsYxaVU&L{M|x*&Zho`Ar~R@O}@PF7oxKmnTwo<%tJ0mT;w9;3S<`2-AWgzG980V zMmms+8(}-7Bj<6*z(87NU{;;S+pmvD(5p$b3ZgvJ^L!x6+l4s7@4@@)L)gj@@vm{z+|q z3g@@MtKlth2$bLZY}%!-d>>2RblqHv|MvKqil}~bQ-LZkO{|;RhmNKujs3A#dkIr% zKNo*V#$Eb~!@Ev1I8VWCI_13@_JOmII8*+)nQrYfLiE~5bNi-11Ij^14cfi>*gCXH z?eC~ax+~JI%Gq&AIpWox4o@_0t(CpMV=?}{ce|pp-wi8*-CPCCaXaJe!tf4Q7OsLU zUpcE`O?Vg7Xzp&PtKeQZ7OsWUAb zEL%A*z}irGV7l$_?A&b&UxK;=y$n^3ufS`e^p?S$m~V%#!@J=wcnH1$e}~fh6Yj=b zJc@N>SQg5@Jlu=90(=khOyBtc&V))&rsdgC`aDy2_F;c6+z(%cpFy5wI$yy3@GHo( zN#`5bjxsp_yTI>YH~2k_hYGJ3{1NjI_!Arre})s`FK`Mx1XG~=WmqnN{6?F5E>t*+ z;GdY6!oT2+*8Nt?yP@=WcHrbM$U3Pt{|*abJ`9UM);OJFP`^u2itE_BE;P4O+pLQ; z3XJK8*!i30F6UFins51YsPnL6Qf%xr-t^`*-aPMO{MF(*Z^aeq&F#E>SQ&(`{aLzB zHSW0qHZoGp?#a@aMsqmLO*HqbN)OVT_S%5HH%BJ{`^H>Jy03LMX{gA!Ku2kOm0}Fx zw`E=9OS)?dQIwNlG;&{8ra91GRo)POuTacV-A-<(=d z*G+Ax>!c3UHD4D_gG#IVo%)#P!G=)Rk=$>vTn(FG_P+D3-<#9#qv{*v6_I#kB5C*g ziDss+YRA1w^Jl+IClbcBBtT{A%??>>!)`dDqdDOhgY0!N*MCc>)qqy81!V7wDcd&C z`-Z#H;Y)0GJSlW4FWY$hcbeE+WBDk2UA|1VMWYcplYEjtPA5H%XFrE z)Ec{ER(}%@<6%#zk!UZdJoJXDW0mK4*cY?1|`{$ubA%+JEn@FmD^RG8n>JQKc&c`SSfO8)~m9`o05B0LBa z;ID8JR6m#q^HEOHF9ee?t3R9yD?)z%&#eKIVFSo-VYp49^jpFd%yBRk#=|t&AEv`0 za26a1rGF;O#H@aGHdMdLZ$Y}V;T)*`bS^v(N}oMP&V0<*L4GUJy%C-RZ-M+4hkGYH z7qVx^=syS-VSXB(54XU@@OgLvWUq^JA$$!geD)_zmVIki8(z z<&eD|M*k0ZCFUaZk5|JI@ETYKUJKa^;amq}p~9~N`Hc{_1zZL@z#CzAcoXamZ-)J$ z^wsaLz&sw_3f14QgsJd0mc1ZO8*XcFJ_(z zJN#ye`zX90J`Ep$+u(zcXS7EDRroMwo~b(P;79OL$g@%BG59@v9R3UyzV07SU@n}W zF$63L`ON{dkML<&1@lH&14_Rx+=RI$+yXnoXJHSx750JK-~cH7q40UkJR5Ufgj3;m zm;zsdS#SsBnUvAz*^|R>vY35^JK?pMUxPdga$bik;4XMORQNp0ao)td4!#ASfP3IZ z_%_@E-+??^G5R~;Ud(U9_aV}*$9{|6{%-Xs0Bb)>eLe|8cpI{37 z8P0;zXD!?L74!M3!TgYMqr+Z8 zcN0|j+h87xUJ(4bcfKv~0O&k4NU<1rtV@@OZ2y6_w7Mv!Kw(c~AFF=L=GGvdX zOPg}|Eg+Y+*>ydec@T~bhr>o|9sdV^Hp#l)V@x_ za&Llz;q7n;ya!7E0myG1xf|dJxEYRw&%ra`b~p;Y4yFGV9D{iu91FjI+?t$mQ525t6&vh~8AK-=X7kCl;16~ZHn2=rqi$Lj@fc&PETNz#sYr!jEBX}ij z2B}N89hAO)zv&vxr^D;uAV?j%!{POCEW80uhSE=lH)1{u-VD!%%i;NO1-uB}0f>#xOc-l;6rc~)IQwRa5I$tv+yp=JK^1M52S6m@45p&96k*7;f_aOMJWBs@Nvv-;1kdrXSQN&uC)M39i$ecCXLzKTC?mVwXMCL znfZ1>dp&3K!wA}U%l7ZbFF6-P+#Fk3P<)ix;g2|E8ch;jvtnv{!TVNFV38B z^h{8?IpU?Wy|t5mFr6)|IUJ6k->|)&N#=x|6R*`t3^T@zUh!`{fo+XRuub^?Td&77rMcCfjcY!Zq?hRjt1FZc}_$uZz;cGC#+E0PIFsH#c;cRQKCnAh1-1Fhv@Dgi( z1$-B?);`{YE3EzP@B_^E!jE8ZF8>XRzN7w^{w|@H5Q2AmbJHZEOEN{0j4D@EiDz zwO2VFz^t{&?_rdkYeqxHH|{C$Cs@wfSAxG_t_2T4&B;}6nv*jQa@)c`VP|XK9UjKq z4@MR8=H$}XoIF3~39ukcg0koRC8rQ(t#uZG^Q`?sSPZk~u&D`)aTe=6bLRY+~&-H$M$?N7x){O;+)0 zEw&}*L9jI(VeQAjwwMzk<3=~x+G~#95i|SQoz75mbA@vr?24Iv1%qbuG|A>&r_uHOjw zleO1c?-`i$GZ!5Vi$Lj@fM;Sp6^?^dt$j^60dpgm0NIyo^xMEh%w1s;WIwI3XWy(d z74tBd3`bl0@o)xa&Dj|@o8N?0yzDo1(lDP5XTe2K_7}oT%vVCj*X~kl&;Ctk4(2=H zJji}aqt8A|=WNWHyE6`VpS1QH;JKK$!9|dLkVc<@|nK2=iy~ z68Md^KL9VotU3JU@Gooc6kzO(xd^-(vM*b!`)`2h^1kU~R=(#{6Yp-)ZUY)BqSK4&$hokf60sD4=^Ps&Sm-Mv~>xUE637!Yz z_0uoE!L$X#(VfK)Gw4?<`M$khKH)U`WhMK#fWGcpzTdpgn*?-%<>S|>!fX}L38o>h zbOyr-ra!133^Q0Jd7TIS>UY{Trl`SMzn3rV>5E~{L@A!r`fL8mf%omJDD$lrWrA*p z(TaE6LwnY;{Jo}K*Ut8*TJgSJmGc|wTxPbFvqp)&#tjcbmHb1-zkWAf-&gRyqo6Rn z?@&eYY|1-=VLWR5FwcV(ael&>m8V9z!YIzbLeDHBh4Hiv;~5*q<~+jiz7G{SjBPfI z=WQ4-<`G8RQPT0U4dYcC#%mG6(6a~cyG>D)l6Po$mSWG}v|+pj%V5VEgDID{p~hzK zK(##eQEDOYW7gHi8ieb$1wFf}Va2;vW%lc%54uZi9!heqgD%Zp$vi(L9F}jK{U$ut zL!sKnXU44G&{e-zF;{rrHF(eQV5hB8Ip2DCuKu#iZ{?8{R=1 z-cLsf&-*q}#tY@f8MuzBKteV`eV+JD?U9#^S;Xy#ZzVP zC@^9tJ?}d_QRYdj+I_IC)N{Of z39Z)jE3|L7DmwHnq*3!*)kmG|@HQ3qzn2qbzMZ4+N-+LhhrJHU+>%%;Y<$81L zVo$GZt{Hk>^DL1&pqahy9_R@iF&u2f=}G3>*X}!eMX`q)yFzUxS_F^Th!b_pXeauDORq#rvXDC;}cj48L{Uq$#q~5ql zu7xEaZNjYvm%>KyM%W+T1joXgVJ2J-&xb4E4e%Ct2c#{TXB8_U&(oY$a5r2HdG6%g z3H9vZE?7F6XN#~JTnih*`(S5yKO6ubfULhe4?@<<&3AxU=XPkLF6+(gl;xQud>pQW z>)|H20W!ySo`%1|jj(Vb)(>D6xCz#Wo1uQ2d!R(f5Fq?VK@dd%yCm;6r2y~6WmK- zes~)!1h>G#@O4-OegTWZL$DZ(DaJdduo9#%G2f1$Z#3VIC=DlJUj}AC_7}L9K-M(e z8)12PA3PQ6n-T24a<@bFAGjaEsxV)1p4Gw9usUo2W1+s;RRa!yHQ^XY-{nq+wc#RI zAKngGD{&u&4dIKh5qujqhTp&@@Ha@G=N9FrdK#<&+2`PPhppf!*cwiQZQ!|(H5d0X z*bd$d=_}nekTn>09qa;fh7ze+D-QXXvCoEio{uq{py`!9!@u$$QVIB{YVJc*8 z#=QW}fY-n@cnj1wWbT2p@b^wh`UlMVO}J}efl~Ajurgc<>%$viYj_hJ30b>wr@-a# z9Jm5r4%uhnu7bD12jNP%3El=@hO6PXkhLDSKxz61SQf5<_2J#H6}$(=L+%CcnUFOh zHyyHH!<_>kf=l4Ta0Pq>-VfKoXCP}w=35Jo!H+OM4u62_Vg53V;bB?G+LBubJ_Xyr z4X`(S8jgY+VKU@iY!vK{#97gKPOyiL+2aPFJsPxg|aKb_03#JBIkx%6rxE08{j#^~J; z?F*9(LT*KRBihdzk2FAlU`$F5TY=8A;B=D z@7wwM%A<7i(pSFxFjR($L*c7@<)-qLyUJL3P#k{R{Wvs#mY+!JZEoGd<*e`;A_`OG z^l#l&9!K-nM`N*XjZ{NUM^v9`hf1^W7R!0qZ6tOp5!Hj- zlz+u5e>zutid0WZm&#CnBub;=lqe7We#N{f9qs$}#rNZfA?o@GnuF(lxJsYewaTY9 zqWsjd=9<~_m{p9q3r_RaHy8_;qXz$%VXuQ*pgtjmKW{$6Ey>J}xW%|tu;R^Cc=s^8CHU6uriztiNj?q%|23Z-ct=; zi@7>v?CQkAJ0NK`d%Q`D`vB%zkTE7XXIup9z|F8Od==J%??KY+egzxA?_op8n29UJ z+Y_ldW)a#z5$di8v$rCw!+C55n;^2+cRV#W42tX}(h1t@yg@+Z?u)*=>5Kg8yalN- z<2$o{wmhFP>RUtRU|i=+Wc-+gEJ5_U?wgRk$U&qeW4`)GJTexUi(G}QMYbXzBEKRP zsAPRhY&epFT#T$lHX(Zuhp|@$Bn}yc=po)RWD~LnQA4SK#37^9Xpm)y=EFOX&k;4E zDo872FrsnO5@Z#!3E6`jM2geM8YA(@L}V^<6|x4|f$T&6K>jx$Ox;)&_r7PFZZi_h z64ywyeyqh@hMf{;XJqiRg8HS0E|VrqXr^~+3KV#;>zB_xGJ1F44Rwm-d+OeG6BWz= z`Zl$g0(g|D*pX;`KlcaDxgH!Z+?=%;#ldxGj_dO?uV$8b5EIQu-y$-H&dZ)c-68)S z$6o@f|E9M7*W2LKPx(g=>g?Htw*H%%&l%Hq=GUVn^PZ1%efOeH?NTF#&CAS6no0ke zectp8en={9PG-|yeD6LJeYJruf7foPZ^c2sj=m=a@_E0RL_0C<$p6iWW@c{;f z9-W1B*v85H9>?+j)`iMKY4_u0PGOEFex#6lOY~decv~FbZz1^c_OkU<+g=OYyRwg7 z#9P3%`Q?Y*_??u*5$W-1b5fg67@3eVJE_Ms{UqpQdH5&SY&h9->hF8?L~JZV-NorK)hZ2c#rbU`d>*idx{cF0n}Nx}VCwnqnk()sx&+l#$$9S@(i@xNDp&|0<$^Om}eLa5!^|bxrdndohWek3e2V9Dp&?S3CXKlgpr3gFVXx~;yuIl&O2bv5&v1v zMErX9n5gV~kJ2|B(V;no?q8Zy)PsRbLu+PT8b2~X{?fUD~&D!V^Zn?v6m_3_92$jn8Q9zPxO z=k@cE{WY=vnwofX`}6wf$o{B16CdrDa>(tkubX!|X>Z0~yO6(4q;sP6cRA-eXcO7* zDN=5xygEb5-aM;n0OK(08t4WQ?(^QBz8+9xi+Gp>H5Z!-dtpw6)Q>wK_JtQh`bc*P z><_*6<2}pQ^ZXp?#<^lqd(^%e?|VghuQgcS-?(1>{XRHYPlE|x?S6=fXL`0jwHL47 zjQosI?OjtP>e!T@+NsJx?KI*u#%RBPi!yy(VRUsJ={boGwO@s&IkDPJbx50ZVxih0 z=jJ`>nvgOz?Q;NB`&9eaoH!BIg(^?YiRVGJ!^M!gaj%38;Z3j+Tn!1^?17|Rx{qU~ z|1|F*sy*$)Oqne%9OXU3WPM({Ll$?0U2yLQyTS=D4zhl2>U|C*jpjT4y&&t+=2;}` z$)=uJXH`8f{t6Dn{V*JaS?}3#-Mfw82-p>lgnCwZ2Gp}c@@n3j8w=-S9tSUk~@CK;&qL#rPa5;Tm`w zTn}%D+u)s$ch}4_LEarR&jgFoM(@U6&j#;-dNz13)O$y3VQ=^#91b6Xv*E+=0{95z zoe}e_kas!EvqJU_n`edW`!&xB*`I5k6@Ct%K%afB=2>AZH_45do55#b54Z`k|IyhD zr@}3e{e;f5@O-!x-UMHOPr(=AOK>~<0KNndz#TA}i|}Pw8omN+!dGE?xC;)1Z@>}o zO*kFyhI%IW7StNe9=HO&4ey8Vz-QpQQ17$sg&)E9;1BS9n7;^nk6~H(A*=&Gf{o$F zuqFHic7Xd}Pq-iUho8b>@H03Deh!o17cd=u3D1UKK|NFa8eR>*fy>|l7(=g`Tl6d- zC|X1IMf<{oQWLZ8?OHdz4Jn5VL`os;5v@;ay;JM4Gmxn8ABsf9+i5p*3B9tzPT)TFVWtkL!6tSSRS-*Sg0;KM!&bu1o9L zM^LoZ9F*X?veKtAkf=VjmaOLtT2~fFhs66X$U(PEAkyum;q%oqz^I~S%6%JtVMPr{~HdvWm>$q{#p*%6hGe1F7qNAPfr`q%%Yxs0@tYA^?M6qU(3zhCuP?62E+z7eBF;^{=({gVdLAz^(=e# z=^MVxxy(GLH*9b7HNeJ~VAIVv1Ux;;PWm;hzdvbUGV^Y~VT{$+o*CIMvgKLT=Cif$ z4@cwAhQ~K9jJdf@Zw;G1y(cQYayC7e*z$PP=BJ5`f1VAmv&|px?HGT0cSQc%+jt7v zc(m6-_VcWN_LLg)5bHj~>esR1wYKpm+kCuj^HtHNW1e-_@46`5<~IJSwjKvyC;KO? z-Yn~`@uuuAx9&x3x>i_wEuzSMw2kLIYd^%=SG4J1pMs}n&E;&qwZ}*P_0EczWb?V% zrt>zxec5tYWb@nJ>Q%Mnk?hx#b&s*;w{3acX!E1@h!syo8*Vq7?#)*35N>jR)TZYG zo1fckxx8lcuit->9`A#BwBe4h;V!b_{$%yo_ha-9*>E1R{;sz6+JmU@w%PbTvU)$+ zaAR!#583v%-<{zm)m$WA5l7P^vlKCzh}em z=7(#;`_q=k_com7Hvjio`@5}P9UIOfTVIQ8JYQII6#34Fj-F8!rYuUvkqGR}Qzw@+ z1>H*<_gJ}_S)+HNbrEyT}qmb9>F}Hy|${Zy+Bc`ZkKzz6)>->H8;Dkorg~Bo5I&Uwy|! zbNF;*0iyXk-yzbsgPgU9=IvXN&k?={!zhz68lvxo)JB>id^bej`fxNipNR1N3w^V~ z(V9KqgwS^!oHfWMWCyYb*@t|G{DEknZdpWg@v+E%$B`va%_%{TsXYLyfgXbfG@8&e z_5ZbZb+K_=Rd~F0Vkkj{;`}$Q3;AtR|HrXInjh~b!ca<@q=B>!_IkZeH(BqdyPL#L zDI{&6p|qip04bE82ZVU2stECfDm4Ngc!*FXB*FuaeF92Bsss{J!uQ>C&d%)Y&Ul;0 z#8>`y*K^Ky?##XS+#drg{BN zbl-Hk(KlU_hy5rZ}1g*OvXEsDvZA|+6K;QHC zq5j62@kLMhS)Wgz^!fEKr8mClDSyg8hGp>0RTcwk4bc@FedxTb9xgf?R*rbJ zdg$h$@mc@#>Gmvv4%bc_AG@6!a_s&P^x#$wjkRydtvvKwK1n~J{YQ`Ae=On{U+sqn zBKr@~Q+}`Chn;o&nm(*ZTxu0@oV^I|;R?nZbVEVFM^*8gLt>`m$ zY4sXUHZZQ}D0i@SY{p%8H#y66IbJXHR2O5jl_$sCh2Dglve7e^%;z#ktH&ZT^0@H4eqO?D==LxGm#0WA7ii8KjZ3!4eDREt3G_q>i@LUkFS5xQ7-%}7@M^; zsQ(tN|8C^dsqO4C_Pxc+6sISOZbIC?Y(AT*WG6=oli3-6+EDfQL|^jkMxIuu8__0U zhb^Ju#5!w-qNjZLwefl0 zXh+)!?ML0jGb;BUKH-Yvhx@rS`fVENf!7R^4{iMj0gA4lBMrRzS zzK@das*k?I+9q7YTIa{K^sk28_oE~au3=@BBGBHncAQ9IadN4w5FPV zO=QY}^IDl*LH#GZz?|klIg3m=!M@-=a!zDRm0TuU-e1a12l@gh6HX8M0?TKngPiP4 zrIdDEC$g#fm&lX@KQ+#|`^hO6OO@e#F>|yW7;EgmmSK7P#4 zM`X%@AKt6|!QdKlO4)MmRCai_lHFMqNjZLrSX4O!;c<&MNjzwA6@n!^Otx9BY%xwi%dBI zAAK{xL5?*XkqM_a;G^Rk{d`c%H5`#CC*Y&45BVI_Yz;?b%7KrX-~2MbK|?N<_M}Vc zd_FxBXv?CbT==T_%{`rdevZ2QR9!Fa5#!C2R(V_iS$)ck`ncUu#2l;~+*fpZ;R z1M~UOag^vOKM(`)`d3?%ag^w)jX(^9K_6}Hl5u@ogL4JhuKMVc z%?Ehxy=@L35FO=C*0#+Bo=oHjw&MkMu86XjPq$AA@EYIA5BId78{mBO^Q*k~@46Si zd0&aoaAH{W+VR`c68u>1{`uz>+jirI{Gu)Xvj1i4Qm&`%(qC~8lBQmH=E()J1#@U~ zQ{_y$;GPY`a5m7_y{Tt-Xr~jKoyK;Td6&?iGhN;&daxk?^DAj#z zYs@^uA`>TdIn|f0N14I1?iCl`ezk+MVyEKFQ`?NnERW3=d zw`b?juD)G(&)#o3|IOoM`ks8%d{V~kAFtUe|4{Y|;9!J|4ICj{T_TUyI+oT+q|B2s zvL|9>Pshm4LAEv`zc(PGABPh*a}5xW^QXe81@m2p7P)!xPSnCxwKP#S1KC*h|618K z$hOcpQkci*eDUW}B4qPE2(}^SVhZ#4Zo8u*s*~|ubCn3$*6q00j&YnRY?JTON{gsY z_AX?sd!{h&LekwMZ7AbAp6vZjVIJ3_zKrpjDJ5*@MI8gzM2wQX9wXygg;Bh#kXc&_mkZYxjFNHvz$h8l2#k_( z9Y8#<*&o^)^SI8%^@cWY+;vCJ&D(dj1jU}lCzpp`NZ6Yjd zJ>vIgVcBBHtX~StHbNF<^I(k4BQZA5#Mpcz#^zfwHvbIS4lRrDF)TqR5p@hn$QZLQ zg?R@dv-%6mPC{1sNF!dKo9}EkTWk6=`1nb;=AI)i;G5Glv1>dH8M+vk!m{5&X5&#< z_NN%xJCJoo*t{DT6&SxUg>7zw>~A8fldYfi%O%X)4cW7LRAJfgzKV6O)TR#G?mr$o zpOdsPH7w(^jaGkQS?g)P?S^G5V`RNCvXL0sIAkw-lEV4D3mHz`T?)%O&iG{(mhsu( zR}uR%1!W0DG+g77BZI}E*Itx+?c8eH_}%7K&`5Z#sI4~4rn?i|1bBi3pJn3nKi>a< z4%p;3(`o=~r|}sUi$zg>9n=tT*^bu5fguFje%r z3h8NFsP8J5GF?w))05fK1n*49hACY7FL$9)O}Iu?kh8i``<_ChI+5v|473+#r#Tvq zwps0CdNuW?vZ|7s%Q;HO<>J-G}4u0Qi1PTuSx+j>6+N(;&`U22oC5 z!tZ90LP@SCcQLL7paTAaN=%`Wcnx9{1-~Bhf1pBlz%JM2N7z#dAyXy$o0muzj%Z*$&t?Snq5DY#*$1wj-!S`!*ZTKtpwQq zRsoCytt{@xZ??Nn0USTq0BeDD0FP}0@Br{2un~9&U<}p;bOSv=FThx#AJ_y80Gok9 zUYsaJPd3DwgWqWoxm`F(@L&6z%_-q)&QSFcXQH5@cmifbHF3O=YdCoF93Uh z$AG=SK43raIB)>?BEWj2uRH-f35)`VfG-1Mz&MZwCV&hu31opO;4ttMkOPhYM}a&r z4HSSPa13}FC;=R#D!_5z1aK0V0cL?yz%#&CfM)@Oj$EtSI}Mxxo&%l-&H`Ttz5%=d zoCCfEya;>~cnNqJI1hXqcm?No_e1D^M2p^|2^;j_q{iB-Df}7xz2U2bDis4Gfqp=At4BYFyQm; z8w6E>H}aSX;9r9{kS(ooS{gbo-l$oHa%|M}@DB*bhVr<6JbEyeNe>C(^05pymKPC% z4G6(nxwvD4xhytLN=jn-_oiK~A;=LW1XwA`D%8<|@MX%&+adb9O4P z{8j^@+HdNME#>(&%Z&HPVRJUNIv2_Dhjq`I*7om9=to44wy#84ND z&kwBIj&~rc>y7Q;Yf)f(NX@?Ug!?-K^S2} zZQF(RR^Xio;(5X#ZV|*~AcesLnnKx5MnmFABV734r6Tn6R#GnUJ zBG3#0v_m6xnF6?408gWLqD7$B=zC~)=o>&z1dp<;RiPaKNVkPeQcekAEp$@oG1Ls*66%C%p>Cn)0E%KB189JG4Ru4dn0}}Oa=}PII3WA7 zQ8;9^1E>H|0h|Vz0H_UF0XRnhi2`T@d4d#6C=9?=f-*(WHenpZgsy>iOY%zVw*sb;r`rkK9PW9N3kL65I!&3l^YPkhnxbKJZ?Cb z!^e3Bgh$YW-1!l#04~lB6b1{!mB(eW!^5HAa3+@*6u^Moqr>^^V915Bg3aVZI3}OV zgPiCAA>T7_ZV@5;fM7Pxlg$ec;D&%EAP+jvkIlCM`yYEHmltTx2TP6-!Ds)mihT&5 z&Etl;vw4vLpi{__8w^kiU<9#$RIzk)2g#v90rU|5kJM45aBgf)5Wos_3z>(9vx6By z(H;T(iPguFt=QpAUO*^P^hYZ{GCA~!Aig>1B>dN0q{{ZeY27~$Lq9zsWVI-eaB6u@U&a>2CI znfza>II|-_Mvxo(dlg4|h+hQVZvx%N#$v?|qDQ+2`2B`#4(wtDx$6sPkecx+JO zNA4J!-}wb0E2zyIpZ)KQBp^3GfDr%&@M~?W0J>iY!l}$~$coK~@bjbp#4e+0fC<4W z809F?iGXl!U?5R~(1bZ2TO;4wV)LB2Aq&IVJWEjf2j+ik#o!k55tIYi;W+o`5GLUD z5T-v5EQpwKzW4CwvFR*ig;+&sofVSvCpf(F~XMY1NF+Cqjffc`ECQi2pQiZxuexmZwXd6Yzb|70Bvu*Y?Kzdyo(u{A9Tq}i zuqc!?0?@)(G)h`p7zE`OA_-z~`OtJA;Nl=C6Er1)NH7q0b2rB$QV-cyM4LZ)T|9cf zzX+FjQ0C|tsqU9wR`jH8_#_k=w9awIR`qhD7d!9YepLH-XN#eNCOTb`H}6AS*4m35 zD`nFziLP{+^^zdH^_6hX)0dj(i{HF_%kp-dw5|5g4&7x8y@PB$wU2j<`OCQa&)%+C zUMh2OyYURw6nRUwGB)`9Hj>klmTeeB4vQT#^;s)-TVgIiN}dhIg+>Cw2nZ8_P-1HG z5n`ff0Kq>61*zbitv$x2o!3uG79pLo;;pq6%ZZ@R+BT3i;ytV5dy(m4h2mb z<3xe9hE!0{lyR=ZT5@@zT%Le;AxH-WVaKyB9L0_baqOrR2XO+7CqNJp1>r6n_)&0T z8#t_aP!Luipu({{z)`$NHVdfs2pV`iP@%{$g+RgKAxH`Zi3w6*98i%ZP>?V?L?0+i z&}V>8#A#q#EJxk2IHEOsO-Aky0=0LUlT2u4r<6D)mPct{`wt+PWx31%=%Ai>DP zqzYbm5{wrF3}J%c{XL&dAQMS=B9iyLAP9k&A)ZL2(dZlwp33In=>#T$j3?0v6e68O zV9{U_fk7b<33v{kLZ;wh0*gaqGw3Y3A&o{LvOzH_2{vRB@N6=J3ggLS0-Zr+fsW~h zWIBOJW`jQHOd6d9n&l8!R6L%|fN3O}A)UlDq?2hZk|CZ(rqY;(G!B_T=fF%7ov(2zx^!c;PqY)GaO znN%|9h()Jxh-@Z|XR~NzLlTorWzmQ%3Z4iW#8U`NDw{y0<6#a=AkqNpOqwABrcj86 z98j4769{AyflgvmNPrx4GKWMYPzfX=p2{GSi8MNy4pS){Dw|AX5jc1vnL}d&oH;}W zg8+~N!~`FhN}`cr5{E%yvgt%XUmAhMq_WsBn?+{l}aTOK{kcN1ha<_ibDb8 zq?1S_GLy)pfYH+Mcn%Eaj!x$gS!5E6jwdhxaan98kwRt=;~_8_sv#gMn~kR$a;PxH z(2z=iX<#&XJb?(BWRuwl1K=rCm`Eq$Nklq>fhQQUSTK>yq5uj|DTWL~8j%XRAh5xZ z@FdU?0cKGE@&v$;FpEJV(MdEWiE7AXzBZ29KVGfB*rE^GzR2mEu!Mw2vOhY^iOdpHFVbGZ* zLkgV?8v;Hh(AY?XO2N~>q>=$aNHjVfOe~84_?AhblGuhU2vSFcg$G*Ei$@Oy`;>JQ zlPyqaz_!9&8IBS|2@WAZe1TPq2p7RKW>Y|9ttyZ;Ltvo~frE~lyOsOH))?yI_6GYS zGb;$%u(~KBk~nj{8DJIjz&_?J(9eR|tN@@-ct?fUVnpg0V9a#v-9#pE0`u1o;3FZ5_oH=*0rfna#$r zf{^nkuqf$3STjNBf5CqO1yBMz05DO+{fw<(tA+qO{F088Lu^Nj%z*7sa5h6ykT3~A zPskmdNIfBIU<+}F>>(G(8N}@Yv;kq{sm8qdI(h<>1S@>zCFE3yyiEnUqbEXSZBBfw zKm-L^r9(W>P5`iVutA$45C`H4icJ@sBRxPa9i)bXd^*Gj<+va=`W(Y3BkCH!i4RHz zfONm#v@`?+2MUaO?2iO75E?)vND8D|g7$*J9~;!>gI<6Q20(w18V=$_hyYI4Y$ytR zkjD`iOvdVj3h;^sRG377R-VlpdKHze*ldA@6!VZN}GfJgTNb^%h6WC1u=v&$jBlA zWPzR`Xq0v?-%BDhkKjH=OC*NO=wHvJFQfs+;0oH{f>t8{?fDZ%|GT+73b646xP^n# zNPk!X=S6_p2*r_H0-!P;K;$tK%+1g3|8a)?dVa(Ke&(PzWc0y+Yl8rV5e$BwY!Dd4qXO(b7PL1o;q0PF=UHWo4DfmX4umgca!k`x|~2TDExCW3S45)dWA zAmMuyj$ik0!A%O5L~xT-z&N?Mx{VD*=ud_MC!n+@(hMaG2_>Lpz|5i~&;Ma) zpyH*5K}Vc(1LV87Dd^mQm32WZp6bwP(+;4uFc^x-b_fJ1YzP@f*--Gj9L;LefB)r~-ckCYQ z5_2>%F}U8+*yo}ZI*idk?{mnlO7q?*ZI~HE6s?7#19I~t?eJU5W0N-!(b=Mq8(1rW=*7JOLUIER7=Bv|{2O z?b{xZ**W~F4O zZ+NxqB#=?3fs85~lTpG7h5|XN@&{tUEB`HWKvTeIKt?J5kWn7s-bo+Wz=K17NGM>s zBolx=5KloQ6tLcmN8$L2e+y=RkWe#W9l-EFV5x^#288;vc~~oVYpk`q^ISZcW~pyZ zw4vw|$P^f_18XA%g%nhOJEHIRBL7mN<&koxHi*w+?m#O>lx*~hEjV+)T>djFqxg<+ zRL#mqJI@S z>^&7`)u`?C#bPaXM7jr=OuNIqe(mk6z^~bgvh8hi`Ri0F4e|*+-=18saMr%fgC3H- zB$BTl#o7<``yY04NG-08b_mP06@BnUr)^in#+wJjt=8U+e>hk@V7Rxz+xk)I5#x4U z|7?~0#k_FOw@R5$zmPL|`FA3H)K^-sTTfMN3STOG+RrVuxIDn%!BokwTlup(BMm$r zPlgwdw4^e=Tx;;L!MmQCsqoYczR8;-lkx8^U}>T++W5VoIhZ5lQNIG`}j)lVx`@w*W}VX=hYq-_YrCx z6E(|$s96HbAfiG6QG|qHA@G_Ydw#12A$qKu45Brml3;le@$W~7DJYDvpkc5bjHjUy z_3KMB-nn%~N>)dXuTcq}yKmmvd;0Ly@j{c)m`Umqz=#q7j2o7a`A@=4`f!4;ndi*x zXF3X>XLm@rXDxoZ7j_*LZuYP(Y@KhJZ=PiO_l4Uyzw-cVGXZA{1e?d0AOnKU4z_`< z#^OM*QU5D~4OuYAdI7Ees(qnR&|;d&+8H*bueoMrgcB=XOB;lg*bl$bxK$b<`+rc+|T}c|Gc~zb}``xwI&)%D$x~(%) zRBfQsd1Q0J)t3sz8O~RxwWRT~W`_mms*I@iyWjDHA>OX2D3fENb}_0C=G=k;B35l zmR%mNc`)c|ZBJ;C*H*9C%+&m8c0x;rZx;DU@QV$5^$nD+Jm*p5hqz_){1QI6m8TLF z+3M0Mk7b{*hPXFuZnY|PM_v9X~_ z`J*&1wYJE(6m7QRTR`siPT3OK;}lo1J9Wlzf`}-P-*3j`x1v8{S_fBJ|AhR8DKH6m z8G@^7n1;x2ydVl34?*;wQ-A-J^xjhtRMz&;ZtLvTfw-w1)tz1SI~HiW9=Y*Y*?GE5 zU-SNE$0K|gEB9LTwnx?!`^;$;TaV^=!!sU0fiG88_auwT3`=9cQTDpVHRALQy9S2* zRP{cuda+UM)eGmMf?93&tEnHYZ;Cf9FKs$zfhqj3FKCcHBCBj~z7MmLoTF7N;cp zX{$*5{K5~3`{isWizn|Gf36}3~%Rct-*TDIw}e4=f0=AypGo>KKFbNtHdxot-4 zwiVFPC)A|MJ`d-Xqi$$9czpXHTz3I0IVQai0qMQ}ucY^H6~mvTx9qqO2GSeIa|n*l zL1e2oCO#dGPmP=WJMmk<+)Mwrs}~8f(MJ>u=I0k5aSUHHB&vX8|HnxE-xwo)Rb>IK zWwTT2yoIa`A9o)=vhv}L=mk!wG8{i_Y49Y4LpRQ?N~^-%k}upG%&780UvtJPxbAoy zW7g?)rgYIx)ebdO(%~~v1Dl$9j8J`@=h7sEucX>__PbAc>~d)9(-)~LZpYO=&m0gj zSTEF_F?+gJ=%@FepGNJ#Nezp3hMrY+-nAuAf|pfQK+E&fuU{bjis5aln6n9M+9|3+ z_;4LRKN4>|hbMXERjBc|^%4qg7bNIg`tMdLy>{NTww^p^c~Q;lv$2vEt8TgTH2dJI zXQJ5NOHoP^lcif8OwM^X?-XZIg}%Xy59^bzFYtW1D>O6cFwODS`{_boNiLSjRd~%g@eVDfVj7Z6OZkxlF*jP?JTTyY$ z$?wV@i*Iq!nsK|Qz?_#B^2=4O?AFq3vh1GIeP+n+y56mOggD0;v+bt)EP3VmX5W(? zyROdVR>#lei^%mwYS!c?)XwxcS+>GBxge5$JfuKjU(G?=etGVf6hct>*R};$HfuL< zs&}bvkY}Nd^-CA0RXx>wcH-Do=J6;G;alc7*Tb2|ilYuyC1bAyTzMYyYJc_({H$-%^-I0)IZZ3L_t9Xt zDQ=-+V1q)@7kq;56gWXw4wz-(_znM{zWkG+_J?^mKYlNwrF}Oeiwof=O)w5)fGPHe z@mLZs4NuISg6M!_6)||A173=Hl3jF9GX~lqY<*$NQr>p&3)_H}^`nVNcteQb`9zT6m(cfsAFWw#U_yuoo=CZo-5tP2{u%1C*7)JdUl-Oflh zcUnD8KI|50bS@+$;y#&&4;6Wq7`SiyY4NE>*e2~ACKa0p@*Cxr7{n4U?|Xnkc_nph z+bOO1$t%`&ejfc`HBtUbTDyPTx5QAHHcdlU}yP*9{<8oPf%=&zMDPh{36LZrV7B%D*yavc z?T5Wh^!rUj{xVqk2fGO2CC4M8D8Odpj3kVgK}=zYQy+{cQ3%u}zpz=D8!bzw>z!xl zlb!^w3yfO zpV`;dTXdtj?|EO{5MO!D<=)OGc=nMY>yL%z^$Rv_7rPcb9Q}Tkg$#TH4Q(;Ls6^5A zd>f|yD)a57lTTjHUNYI()Z*Ypso3Lbl{@BIPRG^Gp6>r}(@dw$2W*m5IS#TbP_6Bj z8}79gFjSw59IEJaVfEVVdE2riwwG52Cur~dvGy=1e1digNJ|>0HF9aBy%Hpa1BSuN zASConvO}?jFleyGVDBH5!Nn0`wEokJBY|OJLR}12i{h^H!EU=9JS3H|_Y3d|t_@6WO5f5^2`-h%MT^!)~y8^??n znd)6TwQTNOyJ6`dk2Q~~W=l*9Hd>szWvY%yld~`X;qko0h4C&erb%%|!sWNjHyvAj z+cvFU-hpoa083A+wwm|!(><=Qs53;&>y=GjkkICO=YIJvli_NyxOB8lc4SK9As%gS z*i4zu&*dW*-yXleCvM=GWs1iaO=if5U5xtGN4thxpPpQ&wb`~-ZMKyO_3cSqRoRgb zQ{Xv?=0)LWc7|rn%1fKkc!O5sIMqNX?_}TXC5N{T8k)#;4$SIyEi}79P@XCJY(F#p zKvD4^bpO-b);v@NuZWDXjyij;I<8qakd-{x#!pwMO>D8gW5#{xEvrAKTk8ScT6feC zp@UorjhO?4gvL4FQ4BS~QbISyn7VE)!%5#5unc2Ldy87w2>)crunS>5a}{n)IH*LS zXq^Zyxf+4a`g1GoZ|{4!q2YpCCBTZ~mq`fk`5-_ars%^|fiZ(VhAl8=EQHOebJOKnY@lMg$>ImQ#rhlX9E-D~Z_dhp9am;^hkPu+^h*~eiKi&H zCZ|!`QbnYD*Q1l-F&l0dKgQI|ExMENv3adil%hlLy!ld)*cPbwWs+69!{fNZ0`;?f z2CUOE+1=8{jb+L6XLM(fIzpe7td?@jb9^nAsWj*HRO<~-*Dfy(UuA(aSvqy!ZV6Ii zzuQ^o^I=cAGERj@OAHv24$11-@AZY{uqvD6a%MnZI#~%>YV$0%-&qiPY*!_1zR<`= ztKGci7DbcwrfqH3i_L0F-FS8Rz9Fl1H%@e)Vg%hqPdN|+m+2n6p<>pvNL^&P*B#}< zCF@VVe`wI3!ShO9OnTBh|LBSjlYHMlbK7J-)5*1RU#Zue^s=)#Cw$=q(HJ1a8Dn-1 z>GT$X+!p!+v%v8i|1E+W*rG=T_pBd+`_GNpKSVel2yozz4g8}877;^16b~cOe|(Ec zK>z9!fJS@*(7-1Ethqz|A9=E>xFh#M4kpMtkxmbsT%@_jV%qG$?j^1Vt3;?O82i&} z>n5o`rUYJ+zbDyGy|6>%*cIAs)MUIxYqC@{Yr~pM-|0c6yY2J3{g=12<+_(k=+%|p zKQQNLjCkqY?TfGast9*;B3}~RX2=`7I3(tJv%;!!*}aQ6p@>8NgV%xw=Xw_?4%wV; zr?L)*u*gyS@|iOFt!CRsx}Jzi-S&Ri6U%5#~#yKhpqdD+Wkmqe9;0)xd*(~b0x5*O81ntUa+RtOoFm6vX% zu4&m7r}xg;GeeWCQ%4J7t#v=0Cv#+~cH*_6(?Ut9!#@2@ZZ(@TH=I4M$=C5w);)QB zrY=<{hc@5v=IXMoM^&}=AK>)RHCA-!+VAq&*r~IuRnx)5?cxb9)9FI}%`r<2Zfkdi zE|Xbcv$A3Y>NtBCo#6BE{FI97X}1vYrf(#$9>wH@oNk}rxo*54|&G~j0qhm1sF7wIW1^Ud06;zCS( zaBQQ}likik+mD^K$q&kDX}_~^^SEKC7i?bL@UOO=9}W?}-HiUiBL9=o=$HF~iJlWY z{kdp-y5*_K!pMbjLiEaagrK2vouD>o<^8oYU?Rt%7U4$M@69mE11Z!Q8sTVtZ^$ z^rZA!whvCvWTcMQ9K7!9In$RCSB+|H4-^dsJY?2rk&CmJu@lo{H`%x@yfJ}9T z)xmido7|d?eF^L`5yj2QeQrFh_|^%vm6^28ZdQYpaa4@3p=&eHHnT6J z$e!7IKzLGaum4AXTvq;U)7gQG?3o(k0U=9rwm)4rbUtm+X3mq(Morb^Hz7JlpOwz+ zZF)Q?UAjXzJI6`dSaLut`Hn^%LAkTPUjN3@-N)@|5|<<{Tsm^}S^52kQ#LNJUPL8? z%~V-iHZ*hOiQZgnKu-DMWd9KE{z`tGnXt${)NEao1XBekj^z0Yr*|D`YgM^ZVy*W_ zJ~NxmE~;DR#z?ADV;W{BwLKUd8Bi?PIkTg&IJ>ED8PmLLsc7B?6Ool7%_3zH8k5h_ z=_mRhU7ChD*JgfMTDR{B+n^`=eS!D(d(fQ%o9e}b*~Q`xcCtI-G@77U^<}xmrq(Of z$(LFR3-`ptXnnNH(m3?VRy*$9?va|nN{8&u*AY=FJ+CM`qLm%K-Ko&_k9c1C@$;tF zl5wvBj7mSly%@(WZEX?3%nak^U7pS^HE~{A1yOPY&6qdl5@n{JO0Mr+R$H(!*DK7^ z+0OdBMMG}nQi(Xbz%S8zYO8~TS2VbVD@et-HsTYe03VkrCk3bdtbcmrLjT$MZNjlI zKfVt507{J6jHY7nz#NVGzqdabj2~siF?cNuHuIcnyUwPyPP>*g&M$}*nlhN5Sk~CI zYem%QL|>`Q({KN6wy4|(tuG7`jqjgZ61}S~+-Lh9n)KpO!|lWb)s*a+^!l2PEr&Oq zJaWq9^4F6nE8$}Lp&0iy%GpmX+rkvB+7(Gs_Gz`)pfz0jIpMGqgAMa`EG|5o5g0k8 zg&y_ovZ7>w&)kxpXYx^&)t6H`JJJ&-wPpK%t*D=WXs)WlhOY)kC8btW?WH|`HL&AuGG8ew3-mD`@pWJuYX#A3UkKKO+rGz+@LTGq$!Qh5n^so5CciTyddg;Z~9*4CrDoe7ms1U^=_ z_`8bxdd=J^%#S&1$`cJ*9{T=jt>g%4-FGN$@@0!*bGHrz)ygg~j7-hwp^LUNaJktfiV>y|ayP zteNghSmbLnu*f!vkf_e5`(^mVdz9VW=D4-?;=X0gbcGPzODZ3d;?A_uKikyKRGaQ6 z&r{J%DRp2ayE4j_eOakt-0u}}xH`qc$!tNhOrD5|-`aPa^FrIL*1TzQ_!9DL=hd>3 zftcA6`2GjZA{i$)ijiMNsUGXz(Kzpgfz|2#LyuV1dr`Gm@oiC!pU<9euv)fUF%Ko| zqUAJZOL-0`)%lm|=xyd)?-YFcpyjI7Hq+{f{!7*eFZ?S9k-x8w-hS_SE$wBYH^aZ# zI5U0e-5WcVFaEze@{X&Eh}{L&hYj@!M1d;$-{8pmCv5{YG+&^GB3?T2S#bPTI6mzs zO*9@h9#bD?p@$;hwEJ6nsOa;J3#2+P zwda_|hY1<)Dk{+AR=nPK{T=??P2tW1Uq5;UPlYQk)N>kEw7q-LA60$1WVcS&hqJwb z9$sQ|79?27e>&y9`TCHrd`jeXGc)ttN8U=`ygw{gBIiu^bl|_SkiAk`v-Z;30ZQx= zQ`LbT(epFhpi-)g(mR9bc=r7RCjy^dzVZHQ48(PSt)^?uyV)yLyghC4tg|P-U^+tg z5a!SPvar

&a(Zh-Vl+J0E(Pb-%r_gOk4b+X}|o$My3iGiG$sdZx|~WA0j|8C;iF zR5-sy4!o=H_@pH7q=nsy$ zs&lK~c0g?}@S=OS%^hajM!g&QS8>(85 zQjhyIEqS&Ft$gW&D^d%0#B2yR5__Jb|0=beh?Af7?!1A=OwHjdhn*kjR+SxixV?P8 zMPb9uspd}YNgrnKERy5Et!MZIhc@P_cRNxHrd`%7U3}u`BddAYu3>izTIv^e1w8Sp zZGHlu|8o7g(4?0`K=G6CLsN$$ z&`tbXq8%BFSLEs_=Sb>az8k>^IB33RlTk*}x4lEJP7Y^n+EKSprDxO2w-ve?eUsLc z7&<^OiO z`hWa(2v9J9r#15JkkL&A81wP}U7O0EwEagb{=f2D5t#PD7f4bigte2qD?XVozaiY% zbg;(hl$@zh#Kq%t{EbZRJH>gcT$jI^dA#U_;bxO46>IsMms7E&mnjmAz4@h#gR!&7 z*t(-z9X`IVTJGS(=Nuj=&<~}CHRl*Etr24O2^N)!|l zRy9p~fIU#_`n+M_dsy^O|O2yBCXN_v=T0d**Sa-n>h+&=R;3waBSWEC@ znt>B{9N-0j7KU2SE*FNilx4tz8$I=b-=-lFmy9QX-|Z13z2yGr{nyBrXpxn+I>VlyZzff|@v+&yN_a=WuwmHeBcY`#WDyKH{agzS7b!TeY(457fbHUhPaT zQm$a6bWhIQ{H0t~U8x*j*ixVo*Yvt6`f_bv%tr&eS6$nRb+?;aeO}n?P%ZOn2DIm( zrdx&iZ7us8nG@$ug|95XSAQO5)i*t4=Go6MW>qegHTZhkg+<*{DOA?X+rDqU<@c%7 zd&1pwuxEi2OBYyqZGx4T^3NXsfG5jO+RQ{-Rsw1ktTJxg0G?A)KbbG!KN_d3dY&@g zp-!WBdq36M*ZywL>`4`kM=JE}^&V<8a4gn6gyZi|XaGG4AKw7SUxIxs2hj*Pf%)DZ>DOO(*4ZQGg74++H7hp-nYd2mbFjl8-Z|J4^DBE|=3O2s zek5^a@3j}Tj)T`@E*uK%emQxmiTWAM;GBbzI!lDLM6QPJT12#0HT-G4VD-$kw5p8UR!p{pIBw)v9hscP%uH+#Y>Arjai_xx977>X$XDt{-KG`snWrQ}L+lGEZ%9l%&XX zS>Jv!vqv)}>D@ciIF~Qf$~(QDyT!e) + + + + + diff --git a/Nifscan/bin/Release/Nifscan.vshost.exe.manifest b/Nifscan/bin/Release/Nifscan.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/Nifscan/bin/Release/Nifscan.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Nifscan/favicon.ico b/Nifscan/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1d1164fe0897988c956dfae3e1646b7ca66eb0d6 GIT binary patch literal 9662 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 literal 0 HcmV?d00001 diff --git a/Nifscan/obj/Release/Nifscan.FormEC.resources b/Nifscan/obj/Release/Nifscan.FormEC.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/Nifscan/obj/Release/Nifscan.FormMain.resources b/Nifscan/obj/Release/Nifscan.FormMain.resources new file mode 100644 index 0000000000000000000000000000000000000000..e8ac65928c4925ed973a5d7add82c67ccd555030 GIT binary patch literal 10228 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 literal 0 HcmV?d00001 diff --git a/Nifscan/obj/Release/Nifscan.FormVer.resources b/Nifscan/obj/Release/Nifscan.FormVer.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/Nifscan/obj/Release/Nifscan.csproj.FileListAbsolute.txt b/Nifscan/obj/Release/Nifscan.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..c0d0be8 --- /dev/null +++ b/Nifscan/obj/Release/Nifscan.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +C:\Build\Nifscan\Nifscan\bin\Release\Nifscan.exe.config +C:\Build\Nifscan\Nifscan\bin\Release\Nifscan.exe +C:\Build\Nifscan\Nifscan\bin\Release\Nifscan.pdb +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.FormEC.resources +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.FormMain.resources +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.FormVer.resources +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.FormParallax.resources +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.FormVC.resources +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.csproj.GenerateResource.Cache +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.exe +C:\Build\Nifscan\Nifscan\obj\Release\Nifscan.pdb diff --git a/Nifscan/obj/Release/Nifscan.csproj.GenerateResource.Cache b/Nifscan/obj/Release/Nifscan.csproj.GenerateResource.Cache new file mode 100644 index 0000000000000000000000000000000000000000..6029ff3adf6ef8c577ce69ae06ed43b50e4d0669 GIT binary patch literal 1148 zcma)4-D(p-6wbE!+x%!&Em3MA1TVyfC7~8Y2#TrEVguEN;*A%R>B%DMd@s|xNtgyuHZAbRCGHMX} zPbV@A{H`!V;~(7j>$S>0X(LtC`I`5kj}F!w3QyQ8lQ(?nl3Psw@7Oa6dCXU>wVvxoy!Fh1k;I6~nU{^v(uoB9Gr9f>go~w(qyUviETfAjHJRMR~ zKApiChIW0xE)pYJJ%@+F#2ppLfuvyNT#TmD#3s%2RdnpstZ)(+9sBY*escKX=#%3> zlNDD+485yn9vyz|{^l5@+So0`(8g~^Yd_~Pbil?|5koJlOCNvDW41AX*Wl3BdpCc4 Xw=oYTz&zxGdAJ{r`G5b1K;63c)VcS*=iGD8 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 literal 0 HcmV?d00001 diff --git a/Nifscan/obj/Release/Nifscan.pdb b/Nifscan/obj/Release/Nifscan.pdb new file mode 100644 index 0000000000000000000000000000000000000000..52a50cf27397110f44dee29f7261f54c80456565 GIT binary patch literal 83456 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