diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..1ff0c42
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,63 @@
+###############################################################################
+# Set default behavior to automatically normalize line endings.
+###############################################################################
+* text=auto
+
+###############################################################################
+# Set default behavior for command prompt diff.
+#
+# This is need for earlier builds of msysgit that does not have it on by
+# default for csharp files.
+# Note: This is only used by command line
+###############################################################################
+#*.cs diff=csharp
+
+###############################################################################
+# Set the merge driver for project and solution files
+#
+# Merging from the command prompt will add diff markers to the files if there
+# are conflicts (Merging from VS is not affected by the settings below, in VS
+# the diff markers are never inserted). Diff markers may cause the following
+# file extensions to fail to load in VS. An alternative would be to treat
+# these files as binary and thus will always conflict and require user
+# intervention with every merge. To do so, just uncomment the entries below
+###############################################################################
+#*.sln merge=binary
+#*.csproj merge=binary
+#*.vbproj merge=binary
+#*.vcxproj merge=binary
+#*.vcproj merge=binary
+#*.dbproj merge=binary
+#*.fsproj merge=binary
+#*.lsproj merge=binary
+#*.wixproj merge=binary
+#*.modelproj merge=binary
+#*.sqlproj merge=binary
+#*.wwaproj merge=binary
+
+###############################################################################
+# behavior for image files
+#
+# image files are treated as binary by default.
+###############################################################################
+#*.jpg binary
+#*.png binary
+#*.gif binary
+
+###############################################################################
+# diff behavior for common document formats
+#
+# Convert binary document formats to text before diffing them. This feature
+# is only available from the command line. Turn it on by uncommenting the
+# entries below.
+###############################################################################
+#*.doc diff=astextplain
+#*.DOC diff=astextplain
+#*.docx diff=astextplain
+#*.DOCX diff=astextplain
+#*.dot diff=astextplain
+#*.DOT diff=astextplain
+#*.pdf diff=astextplain
+#*.PDF diff=astextplain
+#*.rtf diff=astextplain
+#*.RTF diff=astextplain
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7964536
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,189 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+x64/
+build/
+bld/
+[Bb]in/
+[Oo]bj/
+
+# Roslyn cache directories
+*.ide/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+#NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding addin-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+## TODO: Comment the next line if you want to checkin your
+## web deploy settings but do note that will include unencrypted
+## passwords
+#*.pubxml
+
+# NuGet Packages Directory
+packages/*
+## TODO: If the tool you use requires repositories.config
+## uncomment the next line
+#!packages/repositories.config
+
+# Enable "build/" folder in the NuGet Packages folder since
+# NuGet packages use it for MSBuild targets.
+# This line needs to be after the ignore of the build folder
+# (and the packages folder if the line above has been uncommented)
+!packages/build/
+
+# Windows Azure Build Output
+csx/
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Others
+sql/
+*.Cache
+ClientBin/
+[Ss]tyle[Cc]op.*
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# LightSwitch generated files
+GeneratedArtifacts/
+_Pvt_Extensions/
+ModelManifest.xml
\ No newline at end of file
diff --git a/MangaColor/MangaColor.sln b/MangaColor/MangaColor.sln
new file mode 100644
index 0000000..b758122
--- /dev/null
+++ b/MangaColor/MangaColor.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.31101.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MangaColor", "MangaColor\MangaColor.csproj", "{4F2A4383-A018-4EE3-AC7C-8836307467AF}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4F2A4383-A018-4EE3-AC7C-8836307467AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4F2A4383-A018-4EE3-AC7C-8836307467AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4F2A4383-A018-4EE3-AC7C-8836307467AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4F2A4383-A018-4EE3-AC7C-8836307467AF}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/MangaColor/MangaColor/Fmark.Designer.cs b/MangaColor/MangaColor/Fmark.Designer.cs
new file mode 100644
index 0000000..74851e6
--- /dev/null
+++ b/MangaColor/MangaColor/Fmark.Designer.cs
@@ -0,0 +1,70 @@
+namespace MangaColor2
+{
+ partial class Fmark
+ {
+ ///
+ /// Variable del diseñador requerida.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Limpiar los recursos que se estén utilizando.
+ ///
+ /// true si los recursos administrados se deben eliminar; false en caso contrario, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Código generado por el Diseñador de Windows Forms
+
+ ///
+ /// Método necesario para admitir el Diseñador. No se puede modificar
+ /// el contenido del método con el editor de código.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fmark));
+ this.cpanel = new System.Windows.Forms.Panel();
+ this.SuspendLayout();
+ //
+ // cpanel
+ //
+ this.cpanel.Location = new System.Drawing.Point(23, 0);
+ this.cpanel.Name = "cpanel";
+ this.cpanel.Size = new System.Drawing.Size(20, 10);
+ this.cpanel.TabIndex = 0;
+ //
+ // Fmark
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.White;
+ this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
+ this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
+ this.ClientSize = new System.Drawing.Size(105, 24);
+ this.Controls.Add(this.cpanel);
+ this.Cursor = System.Windows.Forms.Cursors.Default;
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "Fmark";
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
+ this.Text = "Fmark";
+ this.TransparencyKey = System.Drawing.Color.White;
+ this.Paint += new System.Windows.Forms.PaintEventHandler(this.Fmark_Paint);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel cpanel;
+ }
+}
\ No newline at end of file
diff --git a/MangaColor/MangaColor/Fmark.cs b/MangaColor/MangaColor/Fmark.cs
new file mode 100644
index 0000000..f47f9f7
--- /dev/null
+++ b/MangaColor/MangaColor/Fmark.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using XWolf.Aero;
+
+namespace MangaColor2
+{
+ public partial class Fmark : Form
+ {
+ public string HTML;
+ private Font fnt = new Font("SmallFont", 7);
+ private Brush fntw = new SolidBrush(Color.WhiteSmoke);
+ private Brush fntb = new SolidBrush(Color.Black);
+
+ public Fmark()
+ {
+ InitializeComponent();
+ TopMost = true;
+ }
+
+ public Color Color
+ {
+ set
+ {
+ cpanel.BackColor = value;
+ }
+ }
+
+ private void Fmark_Paint(object sender, PaintEventArgs e)
+ {
+ e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
+ int sz = 23;
+ int szh = 15;
+ e.Graphics.DrawString(HTML, fnt, fntw, sz, szh);
+ e.Graphics.DrawString(HTML, fnt, fntw, sz+2, szh);
+ e.Graphics.DrawString(HTML, fnt, fntw, sz+1, szh-1);
+ e.Graphics.DrawString(HTML, fnt, fntw, sz + 1, szh + 1);
+ e.Graphics.DrawString(HTML, fnt, fntb, sz + 1, szh);
+ }
+ }
+}
diff --git a/MangaColor/MangaColor/Fmark.resx b/MangaColor/MangaColor/Fmark.resx
new file mode 100644
index 0000000..c28a2c7
--- /dev/null
+++ b/MangaColor/MangaColor/Fmark.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAIAAAAmdTLBAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRy
+ oQAAAEdJREFUOE9j+I8XMDAwEFAwqh9fCAxo+AEthwA8LiQUveTFP6aduFwBdyMWBtzZRClC9iQJ9tMw
+ /Q5c+COH3Gj+xZtBKYx/AOVWopYTTKNKAAAAAElFTkSuQmCC
+
+
+
\ No newline at end of file
diff --git a/MangaColor/MangaColor/Form1.Designer.cs b/MangaColor/MangaColor/Form1.Designer.cs
new file mode 100644
index 0000000..2b9eb0d
--- /dev/null
+++ b/MangaColor/MangaColor/Form1.Designer.cs
@@ -0,0 +1,192 @@
+namespace MangaColor2
+{
+ partial class Form1
+ {
+ ///
+ /// Variable del diseñador requerida.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Limpiar los recursos que se estén utilizando.
+ ///
+ /// true si los recursos administrados se deben eliminar; false en caso contrario, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Código generado por el Diseñador de Windows Forms
+
+ ///
+ /// Método necesario para admitir el Diseñador. No se puede modificar
+ /// el contenido del método con el editor de código.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+ this.t = new System.Windows.Forms.Timer(this.components);
+ this.panel = new System.Windows.Forms.Panel();
+ this.lb_a = new System.Windows.Forms.Label();
+ this.lbHint = new System.Windows.Forms.Label();
+ this.lb_b = new System.Windows.Forms.Label();
+ this.lb_g = new System.Windows.Forms.Label();
+ this.lb_r = new System.Windows.Forms.Label();
+ this.lb_cs = new System.Windows.Forms.Label();
+ this.lb_html2 = new System.Windows.Forms.Label();
+ this.lb_html = new System.Windows.Forms.Label();
+ this.cpanel = new System.Windows.Forms.Panel();
+ this.panel.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // t
+ //
+ this.t.Enabled = true;
+ this.t.Interval = 10;
+ this.t.Tick += new System.EventHandler(this.t_Tick);
+ //
+ // panel
+ //
+ this.panel.Controls.Add(this.lb_a);
+ this.panel.Controls.Add(this.lbHint);
+ this.panel.Controls.Add(this.lb_b);
+ this.panel.Controls.Add(this.lb_g);
+ this.panel.Controls.Add(this.lb_r);
+ this.panel.Controls.Add(this.lb_cs);
+ this.panel.Controls.Add(this.lb_html2);
+ this.panel.Controls.Add(this.lb_html);
+ this.panel.Controls.Add(this.cpanel);
+ this.panel.Location = new System.Drawing.Point(147, 0);
+ this.panel.Name = "panel";
+ this.panel.Size = new System.Drawing.Size(273, 141);
+ this.panel.TabIndex = 0;
+ //
+ // lb_a
+ //
+ this.lb_a.AutoSize = true;
+ this.lb_a.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lb_a.Location = new System.Drawing.Point(88, 3);
+ this.lb_a.Name = "lb_a";
+ this.lb_a.Size = new System.Drawing.Size(55, 13);
+ this.lb_a.TabIndex = 8;
+ this.lb_a.Text = "label1";
+ //
+ // lbHint
+ //
+ this.lbHint.Location = new System.Drawing.Point(3, 107);
+ this.lbHint.Name = "lbHint";
+ this.lbHint.Size = new System.Drawing.Size(267, 34);
+ this.lbHint.TabIndex = 4;
+ this.lbHint.Text = "label1";
+ this.lbHint.TextAlign = System.Drawing.ContentAlignment.BottomRight;
+ //
+ // lb_b
+ //
+ this.lb_b.AutoSize = true;
+ this.lb_b.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lb_b.Location = new System.Drawing.Point(88, 48);
+ this.lb_b.Name = "lb_b";
+ this.lb_b.Size = new System.Drawing.Size(55, 13);
+ this.lb_b.TabIndex = 7;
+ this.lb_b.Text = "label1";
+ //
+ // lb_g
+ //
+ this.lb_g.AutoSize = true;
+ this.lb_g.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lb_g.Location = new System.Drawing.Point(88, 33);
+ this.lb_g.Name = "lb_g";
+ this.lb_g.Size = new System.Drawing.Size(55, 13);
+ this.lb_g.TabIndex = 6;
+ this.lb_g.Text = "label1";
+ //
+ // lb_r
+ //
+ this.lb_r.AutoSize = true;
+ this.lb_r.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lb_r.Location = new System.Drawing.Point(88, 18);
+ this.lb_r.Name = "lb_r";
+ this.lb_r.Size = new System.Drawing.Size(55, 13);
+ this.lb_r.TabIndex = 5;
+ this.lb_r.Text = "label1";
+ //
+ // lb_cs
+ //
+ this.lb_cs.AutoSize = true;
+ this.lb_cs.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lb_cs.Location = new System.Drawing.Point(3, 94);
+ this.lb_cs.Name = "lb_cs";
+ this.lb_cs.Size = new System.Drawing.Size(55, 13);
+ this.lb_cs.TabIndex = 3;
+ this.lb_cs.Text = "label1";
+ //
+ // lb_html2
+ //
+ this.lb_html2.AutoSize = true;
+ this.lb_html2.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lb_html2.Location = new System.Drawing.Point(3, 79);
+ this.lb_html2.Name = "lb_html2";
+ this.lb_html2.Size = new System.Drawing.Size(55, 13);
+ this.lb_html2.TabIndex = 2;
+ this.lb_html2.Text = "label1";
+ //
+ // lb_html
+ //
+ this.lb_html.AutoSize = true;
+ this.lb_html.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lb_html.Location = new System.Drawing.Point(3, 64);
+ this.lb_html.Name = "lb_html";
+ this.lb_html.Size = new System.Drawing.Size(55, 13);
+ this.lb_html.TabIndex = 1;
+ this.lb_html.Text = "label1";
+ //
+ // cpanel
+ //
+ this.cpanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.cpanel.Location = new System.Drawing.Point(3, 3);
+ this.cpanel.Name = "cpanel";
+ this.cpanel.Size = new System.Drawing.Size(79, 58);
+ this.cpanel.TabIndex = 0;
+ this.cpanel.DoubleClick += new System.EventHandler(this.cpanel_DoubleClick);
+ //
+ // Form1
+ //
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
+ this.ClientSize = new System.Drawing.Size(556, 168);
+ this.Controls.Add(this.panel);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.Name = "Form1";
+ this.Text = "MangaColor2 (C) XWolf 2012";
+ this.Load += new System.EventHandler(this.Form1_Load);
+ this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
+ this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseClick);
+ this.Resize += new System.EventHandler(this.Form1_Resize);
+ this.panel.ResumeLayout(false);
+ this.panel.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Timer t;
+ private System.Windows.Forms.Panel panel;
+ private System.Windows.Forms.Panel cpanel;
+ private System.Windows.Forms.Label lb_html;
+ private System.Windows.Forms.Label lb_html2;
+ private System.Windows.Forms.Label lb_cs;
+ private System.Windows.Forms.Label lbHint;
+ private System.Windows.Forms.Label lb_a;
+ private System.Windows.Forms.Label lb_b;
+ private System.Windows.Forms.Label lb_g;
+ private System.Windows.Forms.Label lb_r;
+ }
+}
+
diff --git a/MangaColor/MangaColor/Form1.cs b/MangaColor/MangaColor/Form1.cs
new file mode 100644
index 0000000..5510acd
--- /dev/null
+++ b/MangaColor/MangaColor/Form1.cs
@@ -0,0 +1,284 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using XWolf.Aero;
+using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
+using Win32;
+
+namespace MangaColor2
+{
+ public partial class Form1 : XGlassForm
+ {
+ private const int TTLMAX = 15;
+ private int ttl;
+ private Point amouse;
+ private int sz = 17;
+ private int magnify = 7;
+ private int szm;
+ private int szh;
+ private Bitmap mask;
+ private bool auto = true;
+ private Color cl;
+ private string cl_html;
+ private string cl_html2;
+ private string cl_cs;
+ private const string hint1 = "Doble click en el color para seleccionarlo manualmente, ALT+F12 para parar el automatico";
+ private const string hint2 = "Click en la lupa para reiniciar el modo automatico";
+ private byte[,] nmask;
+ private KeyboardHook hook = new KeyboardHook();
+ private Fmark mini;
+
+ public Form1()
+ {
+ InitializeComponent();
+ szm = sz * magnify;
+ szh = sz / 2;
+ GlassMargins = new GlassMargins(szm + 5, 0, 0, 0);
+ mask = new Bitmap(szm, szm);
+ using (Graphics g = Graphics.FromImage(mask))
+ {
+ Pen p = new Pen(Color.Black);
+ int szmd2 = szm / 2;
+ g.DrawRectangle(p, (szm - magnify) / 2, (szm - magnify) / 2, magnify - 1, magnify - 1);
+ g.DrawLine(p, 0, szmd2, szmd2 - magnify, szmd2);
+ g.DrawLine(p, szmd2, 0, szmd2, szmd2 - magnify);
+
+ g.DrawLine(p, szm, szmd2, szmd2 + magnify, szmd2);
+ g.DrawLine(p, szmd2, szm, szmd2, szmd2 + magnify);
+ }
+ TopMost = true;
+ panel.Left = szm + 5;
+ ClientSize = new Size(panel.Right, Math.Max(panel.Height, szm));
+ GenerateAlphamask();
+ hook.KeyPressed += new EventHandler(hook_KeyPressed);
+ hook.RegisterHotKey(Win32.ModifierKeys.Alt, Keys.F12);
+ GlassDrag = false;
+ }
+
+ void hook_KeyPressed(object sender, KeyPressedEventArgs e)
+ {
+ SetAuto(false);
+ Clipboard.SetText(cl_html);
+ }
+
+ private void SetAuto(bool auto)
+ {
+ this.auto = auto;
+ lbHint.Text = auto ? hint1 : hint2;
+ }
+
+ private void GenerateAlphamask()
+ {
+ nmask = new byte[szm, szm];
+ int c = szm / 2;
+ for (int y = 0; y < szm; y++)
+ for (int x = 0; x < szm; x++)
+ {
+ int dist = (int)((Math.Sqrt(Math.Pow(x - c, 2) + Math.Pow(y - c, 2)) * 300) / c);
+ if (dist > 255)
+ dist = 255;
+ nmask[x, y] = (byte)(255 - dist);
+ }
+ }
+
+ private String hex(int val)
+ {
+ String result = val.ToString("X");
+ while (result.Length < 2)
+ result = "0" + result;
+ return result;
+ }
+
+ private void SetCl(Color color)
+ {
+ cl = color;
+ cpanel.BackColor = cl;
+ string XR = hex(cl.R);
+ string XG = hex(cl.G);
+ string XB = hex(cl.B);
+ string XA = hex(cl.A);
+ cl_html = "#" + XR + XG + XB;
+ cl_html2 = "#" + XA + XR + XG + XB;
+ cl_cs = "(int) 0x" + XA + XR + XG + XB;
+ if (mini != null)
+ {
+ mini.Color = cl;
+ mini.HTML = cl_html;
+ mini.Invalidate();
+ }
+ else
+ {
+ lb_html.Text = "HTML:" + cl_html;
+ lb_html2.Text = "HTML:" + cl_html2;
+ lb_cs.Text = "C#:" + cl_cs;
+ lb_a.Text = "A: " + XA + "(" + cl.A + ")";
+ lb_r.Text = "R: " + XR + "(" + cl.R + ")";
+ lb_g.Text = "G: " + XG + "(" + cl.G + ")";
+ lb_b.Text = "B: " + XB + "(" + cl.B + ")";
+ }
+ }
+
+ private Point MouseScreenPosition(int offs)
+ {
+ Point src = System.Windows.Forms.Cursor.Position;
+ src.X -= offs;
+ src.Y -= offs;
+ return src;
+ }
+
+ private Bitmap ZoomImage(Bitmap bmp, InterpolationMode inter)
+ {
+ Bitmap result = new Bitmap(szm, szm, PixelFormat.Format32bppArgb);
+ using (Graphics g = Graphics.FromImage(result))
+ {
+ g.PixelOffsetMode = PixelOffsetMode.Half;
+ g.InterpolationMode = inter;
+ g.DrawImage(bmp, 0, 0, szm, szm);
+ }
+ return result;
+ }
+
+ private Bitmap CaptureImage(Point src)
+ {
+ Bitmap result = new Bitmap(sz, sz, PixelFormat.Format32bppArgb);
+ Point dst = new Point(1, 1);
+ Size size = new Size(sz - 2, sz - 2);
+ using (Graphics g = Graphics.FromImage(result))
+ {
+ g.CopyFromScreen(src, dst, size);
+ }
+ return result;
+ }
+
+ private Color CaptureColor(Point src)
+ {
+ Color result;
+ using (
+ Bitmap bmp = new Bitmap(1, 1, PixelFormat.Format32bppArgb))
+ {
+ Point dst = new Point(0, 0);
+ Size size = new Size(1, 1);
+ using (Graphics g = Graphics.FromImage(bmp))
+ {
+ g.CopyFromScreen(src, dst, size);
+ }
+ result = bmp.GetPixel(0, 0);
+ }
+ return result;
+ }
+
+ private void MaskImage(Bitmap bmp, byte[,] mask)
+ {
+ BitmapData bdata = bmp.LockBits(new Rectangle(0, 0, szm, szm), ImageLockMode.ReadWrite, bmp.PixelFormat);
+ unsafe
+ {
+ byte* p0 = (byte*)bdata.Scan0.ToPointer();
+ for (int y = 0; y < szm; y++)
+ for (int x = 0; x < szm; x++)
+ {
+ int posalpha = (((y * szm) + x) * 4) + 3;
+ *(p0 + posalpha) = (byte)(mask[x, y] * (*(p0 + posalpha)) / 255);
+ }
+ }
+ bmp.UnlockBits(bdata);
+ }
+
+ private void Work(Graphics bg)
+ {
+ if (mini != null)
+ {
+ mini.Location = MouseScreenPosition(10);
+ SetCl(CaptureColor(System.Windows.Forms.Cursor.Position));
+ }
+ else
+ {
+ Point src = MouseScreenPosition(szh - 1);
+ using (Bitmap bmp = CaptureImage(src))
+ {
+ if (auto)
+ SetCl(bmp.GetPixel(szh, szh));
+ if (bg != null)
+ {
+ using (Bitmap blur = ZoomImage(bmp, InterpolationMode.HighQualityBilinear))
+ {
+ bg.DrawImage(blur, 0, 0, szm, szm);
+ }
+ using (Bitmap clear = ZoomImage(bmp, InterpolationMode.NearestNeighbor))
+ {
+ MaskImage(clear, nmask);
+ bg.DrawImage(clear, 0, 0, szm, szm);
+ }
+ bg.DrawImage(mask, 0, 0, szm, szm);
+ }
+ }
+ }
+ }
+
+ private void Form1_Paint(object sender, PaintEventArgs e)
+ {
+ Work(e.Graphics);
+ }
+
+ private void t_Tick(object sender, EventArgs e)
+ {
+ Point src = System.Windows.Forms.Cursor.Position;
+ ttl++;
+ if (src == amouse && ttl < TTLMAX)
+ return;
+ amouse = src;
+ ttl = 0;
+ if (mini == null)
+ Invalidate();
+ else
+ Work(null);
+ }
+
+ private void Form1_Load(object sender, EventArgs e)
+ {
+ lbHint.Text = hint1;
+ }
+
+ private void Form1_MouseClick(object sender, MouseEventArgs e)
+ {
+ if (!auto)
+ {
+ SetAuto(true);
+ }
+ }
+
+ private void cpanel_DoubleClick(object sender, EventArgs e)
+ {
+ ColorDialog cd = new ColorDialog();
+ cd.Color = cl;
+ if (cd.ShowDialog() == DialogResult.OK)
+ {
+ SetAuto(false);
+ SetCl(cd.Color);
+ }
+ }
+
+ private void Form1_Resize(object sender, EventArgs e)
+ {
+ if (WindowState == FormWindowState.Minimized)
+ {
+ if (mini == null)
+ {
+ mini = new Fmark();
+ mini.Visible = true;
+ }
+ }
+ else
+ {
+ if (mini != null)
+ {
+ mini.Dispose();
+ mini = null;
+ }
+ }
+ }
+ }
+}
diff --git a/MangaColor/MangaColor/Form1.resx b/MangaColor/MangaColor/Form1.resx
new file mode 100644
index 0000000..42091b1
--- /dev/null
+++ b/MangaColor/MangaColor/Form1.resx
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA
+ AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAMwAAAAoAAAAwAAAAMwAAADMAAAAzAAAAMwAA
+ ADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzOW6h/ztunv8hP1pdw5E/8sSPOP/EjTT/xI00/8SN
+ NP/FjDT/xY41/8iROP/LlT3/zZg//8+ZP//Zmjf/K2ur/ymy//9EyP//OoPM/8SOOP//////////////
+ ///////////////////e4On/dHmE/1xibv9eY27/Z2dt/39zbP86xv//Vdv//zeAzP/EjTT//////yep
+ i/+Enpn/DaiC/wDcp/8mu5v/cGdp/+XEj///7af///Wy/+jVo/92cG3/nI+J/yh/2P8rgdkAxY00////
+ //8AoXH/VJOD/5aFiP8zrJD/a3Z1/+rAh///5qb//+em///vs///+bv/6Naj/3d3fP////8A1pg2AMWN
+ NP//////AMCK/wDOm/82pon/q6Gj/3xyd///4p///+/K///ns///6av//++y///0sP9vc3//////AMqX
+ QgDFjTX//////wDAi/8HzZr/DLiJ/xDprP+FeXr//9+Y///35P//7cj//+ey///mpf//7Kb/dHmG////
+ /wDIlkQAxY01//////8AoHP/B66B/xKzjP8cONn/f3KM/++/fv//9dv///fk///uyv//5aX/6MuX/4OC
+ g/////8AyJZEAMWNNf//////AMGL/wjQl/8fVsH/Jkf9/zzNnv+ShIH/675////dmP//357/6MWN/4aG
+ i/+ykFb/////AMeWRQDFjTb////6/wDCiv8I0Zf/EqOR/xfWqf956e7/lbXR/42UoP+Eh5L/goaS/5CP
+ if/j3d3/x5E4/////wDHlkUAxY42////9f8Ap2//EnOn/w6viP9GvLD/ksHs/6rBwP/Zs1//2rNZ/9qz
+ Wf/Xr1P////6/8OPOP////8Ax5ZFAMWONv///u7/ALGW/ywP//8Tu4j/md7//8Hc3f/arVD//dBq//vQ
+ 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
+ yv/m2s3/7trJ//bezf//5dX/vKqa/8a2p/9qYE//ODU3/z89PigAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA8NBueOzIb3TYtHf8wJx7/IBsg/x4aIP4fGh//o5B8/5eHeP/b2Nn/zsvL/9HLxP/Xz77/3NK5/+TW
+ uP/t3Ln/7dy5/+3bvf/v3ML/9NnC//fcyf/qzb3/uqmY/4uBd/8/PT//MzEyVXFucAAAAAAAAAAAAAAA
+ AAAAAAAAIRwfzB8aIP4fGiD/IBsf/x0ZIP8YFiH/HRsf/1NHNP+plIH/wbKb/+3dvf/y4bb/8N6y/+za
+ r//p1qz/5NCj/+PPov/k0Kn/5tOx/+rXuv/u1bv/89fA//vbyP+xnIr/rZuL/0dFR/8tLC2BAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAhHB+6Ix8f/04/Gf97YRf/pYEW/8+gFv/ttxj/tZZM/6CLev/l0az/8d61/+7a
+ rv/r16j/5c6Y/+DHjf/fx4//38iU/+HKnf/izab/5dCw/+rOsf/v0rn/9dbB/7mfi/+wnIn/XVpZ/i8v
+ L60AAAAAAAAAAAAAAAAAAAAAAAAAABESIqLlsA7/87wX/+u1G//lsh3/4a8g/96uIv+ymF//opGA/+/Z
+ sf/t2K3/6dOi/+DHiv/bwYH/2L19/9a8gP/Xv4j/2cKS/93Dmf/hxJ7/5smo/+zOs//y0rv/u52I/6iU
+ gP9vamj/MjEy1wAAAAAAAAAAAAAAAAAAAAAAAAAAFRMhibqRFv/mshv/4rAf/96uIf/arCT/16sm/7ie
+ Zf+xoZH/59Gp/+nRof/gxov/2r5//9O3c//Osm7/zrJz/9C0ev/TtoP/17qN/93BnP/jzK//6cux/+zL
+ s/+1l4D/ppF+/3x3df86OTr/AAAAAAAAAAAAAAAAAAAAAAAAAAAdGSNtmnka/+CvIP/crSP/2Kom/9So
+ Kf/Qpiz/up5a/8e2p//Su5X/48iU/9vBh//VuHn/zK5q/8WlXf/Gp2T/yqty/86ygf/Tu5P/2cOh/+DK
+ rv/nya7/5cCm/6WLdv+gjHr/eHNr/0RERP/Kx8gKAAAAAAAAAAAAAAAAAAAAAC4pLk9/ZyH/2qwl/9Wp
+ J//Spyr/zqUt/8ujMP+/nkH/0cG2/7+rj//hx5b/2byE/9GxdP/JqWj/xKRj/8Ona//HrXn/zLOH/9G6
+ lP/XwKH/38mu/+TDqf/Tq4z/nIl2/4l4ZP91bFf/VlZW/2VlZjIAAAAAAAAAAAAAAAAAAAAAOjY5L2xa
+ Kv/Wqir/0KYs/8ykLv/JoTL/xqE2/7mOFP/ArpH/ybus/9a8kP/YvYv/0bR//8qveP/GrHb/xax5/8iv
+ gf/LtIz/0bmY/9jBpP/ex6//17GU/6aIcP+qlYL/ZlQz/3JmTP9tbG3/WlpaWN3c3QAAAAAAAAAAAAAA
+ AAA1MjUPY1c8/9GnMP/IoTL/w50w/7uUI/+whgv/q4EH/6eFKP/f0cf/v7Cc/9W7jv/TuYz/zbOF/8qw
+ g//JsIX/yrKL/862lP/TvJ7/2MKn/9S2m/+yjnH/oY58/4l4Zv9SPw//Z1o8/4SEhf9YWFh9AAAAAAAA
+ AAAAAAAAAAAAAAAAAABcV03/vIwB/7GFBf+sgQT/qH4H/6N7CP+fdwn/m3QG/6qTXf/n2s3/wbGe/8iv
+ h//Qt4//zraP/861kv/Ot5b/0Lmb/9G5nf/St57/p4lt/5+Mef+ah3f/VEIb/048Ev9XSir/np6g/lhY
+ WKIAAAAAAAAAAAAAAAAAAAAAAAAAAHd3feuvgwP/qH4H/6R7CP+feAn/mnQJ/5VwCv+QbQr/imcF/6OO
+ YP/n2s7/1Me5/7uokP+6o4P/wKaE/8Ooif+8oob/spuD/6SRfv+vm4n/lYNy/15OLf9aSyX/WEop/09C
+ Jv+mpqj/MjEyxAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRex5hyBf+feAj/mnQJ/5VwCP+RbQn/jGoJ/4dm
+ Cv+CYgv/fF4I/4ZtL//CtKH/5tjM/+HTxv/Sw7X/yLqr/8m6q//Kuan/uKiZ/4JzXf9dTiv/W0wq/1ZH
+ Kv9RRCr/QjUe/7SztP8lJSXmAAAAAAAAAAAAAAAAAAAAAAAAAABeXWWigWIL/phyCf+Tbgn/jmsK/4hn
+ Cv+CYwr/fl8L/3pcDP91WA3/cFUN/2hNB/9zXSn/i3pY/5yNc/+ekHj/k4Rs/3prTv9gUCz/Wksn/1ZI
+ Kf9RRCj/TEAo/0Y8KP89MyL/qqim/ywsLP8AAAAAAAAAAAAAAAAAAAAAAAAAAGZkan1zWhT/mHIK/5Nv
+ C/+Oawv/iWgM/4RkDf98Xg3/dVkN/21TDv9nTg7/Y0wP/15ID/9ZRA//VUEQ/1tJIP9YSCP/Vkck/1NE
+ Jf9QQib/Sz8m/0c8Jv9COCb/PTMl/zYuI/+Oi4n/Ojo6/////wcAAAAAAAAAAAAAAABjYGIAc3BzV2ZT
+ If+QbAv/i2kM/4ZlDP+BYg3/fF4N/3ZaDv9yVw//bVMP/2hPEP9gSRD/WEQQ/1RBFP9ZSCL/VUQi/09B
+ Iv9LPiH/Rjkh/0E2If88MiH/Ny4g/zIqIf8uJiD/KCIg/3Btbv9TU1P/fn5+JQAAAAAAAAAAAAAAAAAA
+ AAB+e30wYFMx/4loDP+DYw3/fl8N/3lcDv9zWA//b1QP/2lREP9lTRD/X0kQ/11IFf9fSx7/Xkwk/1ZF
+ Iv9OPyD/Rzog/0E1H/88Mh//OC4f/zIqHv8uJh7/KCIe/yQeHv8hHR//UU5Q/3R0dP9YWFhBAAAAAAAA
+ AAAAAAAAAAAAAJeRlQhfV0P/iGoX/35hFP94XBP/c1kS/25VFP9qUhX/ZlAX/2ROG/9iTiD/Xkwi/1hI
+ If9TQyD/TUAh/0g7IP9DNyD/PjMg/zcuH/8yKR//LCQe/ychHv8jHR//IRwf/yAcHv80MTP/mZiZ/0RE
+ RFwAAAAAAAAAAAAAAAAAAAAAAAAAAF9bVP2GaiD/fmQi/3lhIf90XCH/cFkh/2pVIf9lUSD/YE0f/1pI
+ H/9VRB//T0Ae/0k6Hf9CNBv/PC8a/zUqGP8uJBf/Jx8X/yAaFf8aFRX/FhIU/xURE/8UEBP/FxMV/xQR
+ E/+8vLz/Nzc3dgAAAAAAAAAAAAAAAAAAAAAAAAAAZGNl1F1MIP9eUC3/ZFg5/2tgRv9wZ1H/bmZT/2tk
+ Vf9oY1b/bGde/nBsZf92c2//fXt4/4aFg/+Pjo7/mZiZ/6OjpP+urq//urq6/8bGxv/S0tL/39/f/+vq
+ 6v/r6+v/9fT1/+bl5v9dXV2SAAAAAAAAAAAAAAAAAAAAAAAAAACamJmEoJ+hw6SipLynpae2qqipsK2r
+ rKuxr7CktbO0nbm4uZe8u7ySv76/jMPBwYXGxcZ+ysnKeM7NznHS0tJr1tXWY9va21zf3t9V4+LiTufm
+ 50jr6utA7+/vOvX09TP5+fkr////NPf39x0AAAAAAAAAAAAAAAD/////////4f///8H/gA+B/gAHAfwA
+ AAP4AAAH+AAAD/wAAAf4AAAHwAAAP8AAAB+AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAA8AAAAPAAAADwAA
+ AA+AAAAPgAAAD4AAAA+AAAAPgAAAB4AAAAeAAAAHgAAAB8AAAAfAAAAHwAAABygAAAAwAAAAYAAAAAEA
+ IAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAABQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAXFxckAAAAGAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBQWpaWlryZ2dn3zg4OFYAAAAJOzs7AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTExMX3h4ePy3t7f+gICA/zMz
+ M/8eHh5dAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAGAAAABgAAAAcAAAAHAAAABQAA
+ AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAABNTU1ffHx89bOz
+ s/+Pj4//UVFR/jQ0NP8tLS3lJSUlFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAAAwAAAATAAAAGwAAACgAAABIAAAAYwAAAHEAAABwAAAAZQAA
+ AEwAAAAsAAAAIAAAABsAAAARAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElJ
+ SWt4eHj8srKy/4uLi/5PT0//Nzc3/khISP9ERETbAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAAZAAAANwAAAF0AAACiAwMD3QUFBf8JCQn/DQ0N/xAQ
+ EP8UExP/Ghoa/xsbG/8ODg7/CQkJzwcHB3gAAABAAAAAJQAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAACTU1NX3h4ePy0tLT+j4+P/09PT/81NTX/RkZG/1tbW+MnJycaAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAQEBEQAAADkAAACWExMT3BgYGP8mJib/NDQ0/z8/
+ P/9ERET+REND/0BAQP88Ozz/NjY2/zQzNP47Ozv/NTU1/yMjI/8UFBTVAAAAXQAAACoAAAANAAAAAAAA
+ AAAAAAAAWFhYAAAAAABMTExgfHx89bKysv+Pj4//T09P/zc3N/5GRkb/WFhY0UVFRSMAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAASWtra9teXl7+QUFB/0dH
+ R/9KSkr+S0pK/0pKSv9JSUn/R0dH/0NDQ/8/Pz//Ozs7/zU1Nf8uLS7/JiYm/iEgIf4ZGRn/Dg4OxQAA
+ ADwAAAAXAAAAAwAAAAQAAAAKAAAACUJCQnR4eHj8srKy/4uLi/5PT0//Nzc3/kZGRv9bW1vkRUVFIgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAnFhYWn25u
+ bv9dXV3+SklK/01NTf9OTk7/UE9Q/1BPUP9PTk//TEtM/0dHR/9CQkL/Pz4+/zs5Ov82NDT/LSws/yQk
+ I/8ZGBn/DQ0N6wEBAUQAAAAgAAAAGAAAAB4AAAAlPT09dXh4eP21tbX+j4+P/09PT/81NTX/RkZG/1tb
+ W+MxMTEZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAYAAAAuNDQ0oUhISP9LS0v/T05P/1FRUf9TUlP/VVVV/1NTU/9JSUr/SEhH/1tWUf9vZ1//g3hv/5GG
+ ev+YjID/lIh+/4R6cf9oYFr/Qz88+x0cG2IAAAAwAAAAKwAAACYlJysuoqOk07Kysv+Ojo7/T09P/zc3
+ N/5GRkb/WFhY0URERCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAIAAAAfNzc3bTw8PPtLS0v/U1NT/lVVVf9YWFj/VlZX/0ZGRv9gV1D/kIBy/6yZ
+ iP+7p5X/wq+c/8WyoP/ItqT/zbuq/9LAr//UwrH/xrao/6+ilvOCeXC5ExMRZBgXFH8vKh27gnFk9svI
+ xv9NTU3/Nzc3/kZGRv9aWlrlNTU1LQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAHkNDQ3QmJibqMDAw/Dk5Of87Ozv+SkdD/oV2
+ Zv+lkX7/rZmE/6mXhP+nlob/pJWH/6qcj/+ypJj/sqOV/7Wll//BsaH/zbys/9jHt/7Pv7D/oJSH/2FT
+ K/9xWj7/hW9d/7epnP6XlpX/QkND/1hYWO0bGxswAAAAEgAAAAsAAAACAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEABAQEBgAAABAJCQkvJCQkfikq
+ KrhZUkv/l4Rz/6uWg/+ciHX/oJGD/r22r//V0c7/6ujm//Tx7v/38Oz/+vDp//Xo4P/l1s3/1sW5/8S0
+ pv/Gtqb/2ci4/66fk/9yX0//uKqf/9nMwv9vY1v/RURG/zAvMLEAAAAMAAAAEwAAAA8AAAAHAAAAAQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAHAAAADQAA
+ ABYAAAAhAAAAKWVaTbGciXj/qZWB/498avu5sqv84eHg/+fn5v/r6eT/7Ojh/+zm4f/s5uH/7OTh/+/j
+ 3f/z493/9uXd//bi2v/ayLv/u6yc/9bFtP+xoZH/q56T/3BkXv9ZVlj/PTs9/ysqK+IAAAADAAAACgAA
+ AAYAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAwAAAASAAAAGgAA
+ ACMAAAAqAAAAMgAAADgCAgFDUEY8hpqHdvuqlYH+lYRz/8/Kw/3q6eP/5eLd/uHf3P/e3Nr/3NnZ/97Z
+ 2P/g29n/49za/+bf2//r3Nb/797X//Th2P/75tv/4Mu//72snf/UwrH/qpuN/316dv/Bv7r/SEVI/ysq
+ K//i0dgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAIgAA
+ ADAAAAA0AAAANQAAAUMVEw1jLCYShEI2FKREOBvFh3Zm9KuWgv+Vg3L/wry3/t3c2//X1db+19bX/9TS
+ 1P/T0dH/1NHQ/9bS0P/Y0tH/29TS/97X1P/i2dT/5tfR/+3a0f/039L//uXZ/9/Iu/+3p5f/z76u/6GT
+ gP9+bDz/TElQ/ikoKf9JRUgpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1Lh0AAAAAAAAA
+ AAAAAAAAAAAAEBMRDUwnIxWQPzUYx05AGOlJOxnzPjIb+iojHP9SRz3/qJSA/5qHdP6to5v/3t3d/97d
+ 3f/b2tv/1dPT/8zJyv/LyMj/zMjI/8vHx//Mx8f/08zG/97Ux//o28n/79/J//Pdx//23sr/+d/N//3j
+ 0//Vvq//vKua/8Gxof+BdF7/U1BU/yopKv84NzhcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAANS8cFjoyHF88MxupRDka70Q4Gv89Mhv/LyYe/x8aIP8eGiD+Hxog/x4ZHf+OfWz/qZSB/49/
+ cf/f2tv/08/P/8vIyP/Oysn/0MzJ/83JxP/OyL7/1sy5/+HTuf/s27r/8N+9/+/evf/t3L7/797D//Hb
+ wv/02sL/9tvH//ney//12cn/uaSU/8e1pP+ekIP/XFhY/y0sLf8zMTKOAAAAAHFubwAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAgHCBCJyIfzDEpHf8tJR7/Ih0f/x4aIP8fGiD/Hxsg/yAbH/8gGyD/GxYe/0A4
+ Nv+lkX7/mYZz/7yyqP/c1Mn/3tXE/+TZwf/j17r/5Naz/+rasv/t3LL/7Nu0/+rYsv/o1a7/59St/+jV
+ sP/p17b/69i6/+3bwP/w17z/89jA//baxv/53Mr/yrGg/7uol/+yoZH/bGZi/zU0Nf8wLzC+AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhGx+lIBsg/yAbIP8gGyD/IBsf/yAbH/8eGiD/Gxgh/xgX
+ If8dHCD/QDUV/3ZmUP+qlYL/nox2/+rZuv/y4b7/8eG6//Hftf/v3bL/7duu/+zZrf/q16v/5dCg/+PO
+ nf/jzZ//486j/+PPqP/l0a3/59Oz/+rWuv/s1rv/8NS6//PXwP/32cb/3L6r/66bif+6ppX/e3Fr/0A+
+ P/8qKSrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhHB+OIBsg/yMeH/8qJB7/MSof/zwz
+ Hv9hTxj/knIT/8GUEf/nshL/6bQX/5uFZf+rloP/q5iA/+/cuP/y4Lj/8N2z/+7arv/s2ar/6tam/+bR
+ nP/iypD/4MmQ/+DJkv/gyZb/4cqa/+LMoP/jzab/5NCs/+bStP/q0LT/7dC1//HUu//11sH/7Mq0/6KP
+ fP+2oo//h3tx/09NTv4oKCjpa2hrFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeGiBxRzsb/5t5
+ FP+7kBL/2KYS//G4E//zuxf/7bgc/+ezH//isCD/1Kcl/6OQdf+tmYf/taKH//Dctv/w3LP/7dmt/+vX
+ qf/o0p7/4sqQ/97Fh//dw4X/28KG/9rCiP/bw4z/3MSS/93Gmf/fyaD/4sul/+XKpv/oy6r/682x/+7Q
+ t//y073/8c22/56Id/+vmof/i31x/19cXf8rKivwS0pMMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAcGSBVYE0Z/+q0FP/uuBf/67YZ/+izG//ksh3/4rAf/9+uIf/drSP/zqQp/6yZfv+0oo//u6iO/+/a
+ s//t2K3/69Wo/+XOmP/gxon/3MKC/9m+ff/XvHv/1bp8/9W6fv/VvYT/17+L/9nBkv/bwZT/3sGZ/+HE
+ n//lx6b/6Mut/+zNtP/x0rr/7ciw/5+Idf+qlYL/intu/3Btbv8uLS32RENETgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAbGCA4TD0a/+CtGP/otBr/5bIc/+KwH//gryD/3a4i/9qsJP/Yqyb/zqUs/7Ge
+ hP+9q5r/vKmO/+3Xr//s1Kn/5c2X/+DFi//bwIL/17x7/9O3dP/QtHD/z7Ry/9C0dv/Qt3z/0reC/9W3
+ hv/Xuo3/276V/9/Bnf/jyKn/586y/+vMsv/vz7b/58Gn/5yFcv+plYH/h3hr/398ff81NDX8QkJCagAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbFyAjOjAb/9eoGv/ksR3/4bAf/96uIf/crCP/2asl/9aq
+ J//UqCn/zqQp/7CehP/ItqX/uqeP/+jQqP/nzZv/4ceP/9zChv/YvH3/07d1/86xbP/JrGb/yKtm/8qs
+ a//MrXL/zrB5/9Gzgf/UuIv/2L6X/9zFpP/gyq3/5Mux/+nKr//sy7L/27OY/5qEcf+qlYL/fXBk/4iF
+ hv9DQkP/QUFBhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhHSUZKyYg+NChGv/gryH/3a0i/9qr
+ JP/Yqib/1ako/9KnKv/Qpiz/zqQp/7Ccd//Qv67/tqWR/+HInP/jyZb/38SN/9m/hf/VuXz/z7Jw/8qq
+ Zf/EpFz/w6Re/8amZv/IqW//y655/860hv/SupH/1r+a/9rDo//eyKz/48mv/+jJrv/lwaf/xaGG/56K
+ d/+ok4D/bF9L/46Kiv9VVFX/Q0JCoI2LiwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJywUJCMq48OY
+ G//crCP/2Ksl/9apJ//UqCn/0acr/86lLf/NpC//y6Mu/7ecWf/MvbH/va6e/9S8kv/ix5f/3cKO/9i6
+ gf/Ts3b/za1u/8ioZv/Eo2H/wqNi/8Smav/HrHX/yrGA/821if/RuZL/1L2a/9nCo//ex6z/4siu/+XE
+ qv/btZj/sJF4/6WRff+einj/XU0t/5KPi/9oZmf/Q0NDu2dnZwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA1MTUPKCg0zquGG//Yqyf/1Kgo/9KnKv/QpSz/zaQu/8ujMP/JojL/x6E2/7yXLP+9r6P/1cW3/7ak
+ jP/ix5b/3MKQ/9e5gv/Ssnn/za5z/8iqbv/GqGz/xKhv/8WrdP/HrXv/ybCD/8y0i//QuJP/1L2c/9jB
+ pP/dx63/4sWs/9u5nP/NpYf/nYVw/6uWgv+Jd2X/VEAR/46Khf99fHz/RURF1FxbXBEAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAA7ODoKODlDuY5xHv/Wqir/0KYr/86lLf/Moy7/yaIx/8ehM//FoDf/vpcm/7KF
+ B/+wllj/2szB/8a4qv/CrIf/3sSU/9e8i//St4T/zrJ+/8qvev/HrXj/xqx4/8atfP/HroH/ybGI/821
+ j//RuZf/1L2f/9nCpv/dx67/27ug/9Gqi/+riW//n4x6/6OPff9rW0H/Uz0H/4J9dP+TkpP/R0dH7lhY
+ WBbc3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAA8OTwFTExWpHZgI//SqC3/y6Mu/8ihMP/GoDL/w50y/8Gb
+ L/+3jhj/roMG/6uBCP+oghT/xrai/+LTxP++r5//zLSK/9e9kf/TuYz/z7WG/8yygv/JsID/yK+B/8iv
+ hP/JsYj/zLOO/862lP/Rupv/1b+i/9nDqf/ZwKf/z6iK/7aQcf+SgW//qpaD/4V1Zf9TQBP/Uz4M/3py
+ Y/+lo6X/TExM/2JiYh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFBUAVlRdjmpdNP/Gmhr/v5Uc/7yT
+ Hf+4jxn/sokR/6yBB/+pfgb/pn4I/6R8CP+iegj/qIxG/9jKvP/h08T/v6+b/8euh//Vu5D/0biO/862
+ i//Ms4n/y7KK/8yzjP/MtJD/zbeU/9C6mv/TvKD/1b6j/9S8o//PsJT/r4tt/5WBbf+qlYL/lYNy/1xL
+ Kf9SPxD/TjsO/3FnUv+urrD/VFRU/3Z2djsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATEpQd2Zf
+ TP+8jAH/soYH/6+EBv+sggb/qX8H/6Z8B/+jewj/n3gI/511Cf+Zcwn/lnAH/6qVaP/d0cb/49bG/8K0
+ pP+4ooD/zrSL/8+1j//OtpH/zraS/862lP/Pt5b/z7iZ/8+3mv/Pt5v/z7Wa/8+0mf+hhGj/l4Nw/6uW
+ gv+biHf/ZlY7/1A9Ev9OPBP/SDcP/2FWPf+4uLr+Xl5e/3JycmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAT01QYYKBgfq0hgX/rIIG/6l/B/+mfQj/o3sI/594Cf+cdQn/mXMJ/5VxCv+Sbwr/j2wL/4pm
+ Av+mk2r/283A/+nbzP/Pw7X/tqSN/7+nhf/GrIr/xq2L/8eujf/Iro//x62P/8Wrj//Dqo7/tp6E/5mG
+ dP+jkYD/rZiF/5iFdP9rXEX/U0EZ/1dIIv9XSSb/Vkgo/1VIL/+2tbj/UE9Q/1JSUocAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAVVJUSXR1fPWheQf/p30H/6J6CP+feAj/nHUJ/5lzCP+WcQn/k28J/5Bs
+ Cv+Magn/iWgK/4dmC/+BYQn/loBL/8q8rP/n2s7/5dfK/8/Cs//AsJ3/uaeR/7aii/+0oIr/sp6I/7Cd
+ if+vnYv/s6KR/72qmP+zoI//kH9u/2laP/9cTin/Xk8t/1pMLP9XSSv/U0Ys/0M3Hv+6ubz/UlFR/zo6
+ Oq4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkpMMltbYu+HZwn/oXkH/5x2CP+adAn/lnEJ/5Nv
+ CP+QbQn/jWoJ/4poCf+GZQr/g2MK/4BgC/99Xwv/eVwM/3xgGv+djGf/y7+1/+HTx//o2Mv/5NXG/93O
+ vv/Yybn/1sa2/9TDs//OvKz/v66f/6SViP96bFT/YVEv/1xNKf9aSyr/V0gq/1RFKv9QQyr/TUEq/z8z
+ Hv+opqX/ZWVl/zc3N9MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUlBSGV9eZOpxVw/+nXYH/5hy
+ Cf+Ubwn/kG0J/45qCv+KaAr/h2YK/4NjC/+AYgv/fV8M/3pcDP93Wg3/dFgN/3BVDf9rUAn/blUW/4p4
+ U/+nmYX/t6qZ/76woP+9sKD/t6iZ/6mcjP+ViHX/eWpQ/2BPK/9bTCb/Wksp/1dIKP9TRSn/UEMo/01A
+ KP9JPSj/Rjso/z0yIv+Pi4f/enp6/zU1NfYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBwrAWFf
+ ZORgTRf/n3cI/5hyCv+VcAr/km4K/45rC/+KaAv/hWUL/4FiC/98Xgz/eFsM/3RXDP9wVg3/blQN/2tR
+ Df9oTw7/ZEwN/15HCv9aQgj/XEYS/11LHP9jUSf/ZFQt/2BPJ/9bSiH/W0sk/1tLKP9XSCj/VEYo/1BD
+ J/9NQCf/Sj0n/0Y7Jv9DOCf/PzYm/zkwI/9va2f/kJCR/y4uLv////8CAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAGdkaM9TRiP/nXYI/5ZwCv+Sbgv/j2wL/4xpC/+IaAz/hWQM/4FiDf99Xw3/elwN/3Va
+ Dv9wVQ7/aU8O/2VMDv9iSw//X0kP/1xGD/9ZRBD/VUAP/1hFGP9dSyP/Wkkj/1dHI/9URST/UUMj/05A
+ JP9NQCT/Sz4l/0k9Jf9GOiX/Qzkm/z82Jv87MiX/ODAk/zMrI/9NSUX/p6eo/ykpKf+/v78fAAAAAAAA
+ AAAAAAAAAAAAAAAAAABjYGEAAAAAAG1rbqlIQS//mHII/5BsC/+Magz/iWgM/4ZlDP+CYw3/f2EN/3xe
+ Df94XA7/dVkP/3JXD/9vVQ//bFIQ/2dPEP9hSRD/W0YQ/1dDD/9UQBD/VkQY/1pJIv9XRiL/U0Qi/1BC
+ Iv9NPyL/Sj0i/0Y6If9DNyH/QDUh/z0zIP85MCH/Ni0h/zMrIf8wKCD/LCYg/ykjIP83MzL/tbW2/ysr
+ K/94eHhBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRxc31MRz3/jGkJ/4tpC/+HZwz/hGQN/4Fh
+ Df99Xw7/el0O/3daDv90WA//cFYP/21TD/9qURD/Z04Q/2NLEP9gShH/XEcR/1pGFf9bSR3/Wkki/1RE
+ If9QQSH/TT8h/0o9IP9HOiD/RDcg/0A1IP89MiD/OjAg/zYuIP80Kx//MCgf/ywmH/8qIx//JiAf/yMe
+ Hv8vKy3/ubi5/y8vL/9dXV1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHp3eVFYVE7/fF4K/4Zm
+ DP+CYw3/f2AN/3xdDf94XA7/dVkO/3JWDv9uVA//a1IP/2dPEP9lTRD/YUoQ/11HEP9dSBX/YEwe/19N
+ Iv9cSyP/WUgj/1VFIv9QQSH/Sz0g/0U4H/9ANB7/PTIf/zovH/83Lh7/NCse/zAoHv8tJh3/KiMe/yUg
+ Hv8kHh7/Ih0f/yEdH/8rJyr/urm6/zY2Nv9QUFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF+
+ gCRmY17/blQN/oJjD/99YA//el0P/3daEP9zWA//cFYQ/21TEf9pURH/Z08S/2NNEv9iSxX/Yk0a/2NP
+ IP9hTiL/XUsi/1lIIf9VRSH/UkMh/05AIf9LPSD/Rzog/0Q4IP9BNSD/PDEg/zguH/80Kx//Lyge/ywk
+ Hv8pIx//JiAe/yMeH/8hHB//IRwe/yAbHv8nIiX/sbCx/0xMTP9FRUWeAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAB0cW//ZlEZ/4drIv+CZyD/fWMf/3lgHf92XR3/clod/29YHf9tVh7/alQf/2hT
+ If9lUSH/YU4g/15LIP9aSCD/VkYg/1JDIP9PQB//TD0f/0g6H/9ENx//QTUf/z0yH/86Lx//Ni0f/zIq
+ Hv8vJx7/KyQe/yghHv8kHh//IRwe/yEbH/8hGx//IBse/yAbHv8iHSD/n52e/2xsbP8/Pz+7AAAAAP//
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9ennmXkwe/4BmIP99YyH/eWAh/3ZfIP9yWyD/cFkg/21W
+ IP9pVCD/ZVEg/2JOH/9fTB//W0kf/1dGH/9UQx//UEAe/0w9Hf9HORz/QzUb/z4xGv87Lhn/NisY/zEo
+ F/8tIxb/KCAW/yQcFv8fGRX/HBYV/xgTFf8WEhT/FRIU/xQREv8UERP/FhQV/xoXGf8cGhv/j46O/5CP
+ kP81NTXSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAfoC4WUso/3JZHP9uWB7/a1Yf/2hU
+ If9lUiP/YVAl/11NJv9YSSb/UkUn/05CJ/9JPyf/Rz4p/0M8K/5CPC3/Qz4y/0VAN/9JRT3/T0xH/1ZU
+ Uf9eXFr/ZmZl/29vb/95eXn/g4OE/42Njv+ZmJn/o6Sk/66vr/+6urr/xsbH/9PT0//e3t7/5eXl/+Xk
+ 5P/u7u7/9/X3/729vf86OjrjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMioyLcnFw/3Fw
+ b/92dXb/fn1//4aGif+PkJT/mZmd/6CgpP+jpKf/pqap/6mprP+sq67/sbGz/7e2uf+9vL7/wsHD/8fG
+ yP/Lysz/zs3O/9HQ0f/T0tP/1dTW/NjX2Pra2drz3dzd8N/e3+rh4eHm4+Pj4Obl5d3n5+fX6unq1Ozr
+ 7M/u7e3L7u7uxuzs7MDy8fK89vf2tvr6+sqoqaiwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AACXlZYympmaop2bnZSgnp+Lo6GihaWjpX2opqd3qaipbqyrrGqvra5gsrCxWrSztFK4trdMubi5Qr28
+ vT2/vr43wcDBMMPBwivGxcYkyMfIIsvKyx/NzM0d0M/QGtPT0xnV1NUY2dfZF9vb2xbd3d0V4eDhE+Pj
+ 4xPl5eUR6ejpEOvr6w/t7u4O8vHyDfX19Qz4+PgL+fn5Cf///xPz8/MQAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///////8AAP//////xwAA//////+DAAD//////gEAAP//AB/+AQAA//AAA/wBAAD/wAAB8AMAAP+A
+ AAHwBwAA/4AAAAAPAAD/AAAAAB8AAP8AAAAAPwAA/wAAAAA/AAD/gAAAAB8AAP/AAAAADwAA/gAAAAAf
+ AADgAAAAAP8AAOAAAAAA/wAA8AAAAAD/AACAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAH8AAAAA
+ AAAAfwAAAAAAAAB/AAAAAAAAAH8AAAAAAAAAfwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/
+ AAAAAAAAAD8AAIAAAAAAPwAAgAAAAAA/AACAAAAAAD8AAIAAAAAAPwAAgAAAAAA/AACAAAAAAD8AAIAA
+ AAAAHwAAwAAAAAAfAADAAAAAAB8AAMAAAAAAHwAAwAAAAAAfAADAAAAAAB8AAOAAAAAAHwAA4AAAAAAf
+ AADgAAAAAB8AAOAAAAAAHwAA4AAAAAAfAAA=
+
+
+
\ No newline at end of file
diff --git a/MangaColor/MangaColor/Hotkeys.cs b/MangaColor/MangaColor/Hotkeys.cs
new file mode 100644
index 0000000..ad0152e
--- /dev/null
+++ b/MangaColor/MangaColor/Hotkeys.cs
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Windows.Forms;
+
+namespace Win32
+{
+ public sealed class KeyboardHook : IDisposable
+ {
+ // Registers a hot key with Windows.
+ [DllImport("user32.dll")]
+ private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
+ // Unregisters the hot key with Windows.
+ [DllImport("user32.dll")]
+ private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
+ ///
+ /// Represents the window that is used internally to get the messages.
+ ///
+ private class Window : NativeWindow, IDisposable
+ {
+ private static int WM_HOTKEY = 0x0312;
+
+ public Window()
+ {
+ // create the handle for the window.
+ this.CreateHandle(new CreateParams());
+ }
+
+ ///
+ /// Overridden to get the notifications.
+ ///
+ ///
+ protected override void WndProc(ref Message m)
+ {
+ base.WndProc(ref m);
+
+ // check if we got a hot key pressed.
+ if (m.Msg == WM_HOTKEY)
+ {
+ // get the keys.
+ Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
+ ModifierKeys modifier = (ModifierKeys)((int)m.LParam & 0xFFFF);
+
+ // invoke the event to notify the parent.
+ if (KeyPressed != null)
+ KeyPressed(this, new KeyPressedEventArgs(modifier, key));
+ }
+ }
+
+ public event EventHandler KeyPressed;
+
+ #region IDisposable Members
+
+ public void Dispose()
+ {
+ this.DestroyHandle();
+ }
+
+ #endregion
+ }
+
+ private Window _window = new Window();
+ private int _currentId;
+
+ public KeyboardHook()
+ {
+ // register the event of the inner native window.
+ _window.KeyPressed += delegate(object sender, KeyPressedEventArgs args)
+ {
+ if (KeyPressed != null)
+ KeyPressed(this, args);
+ };
+ }
+
+ ///
+ /// Registers a hot key in the system.
+ ///
+ /// The modifiers that are associated with the hot key.
+ /// The key itself that is associated with the hot key.
+ public void RegisterHotKey(ModifierKeys modifier, Keys key)
+ {
+ // increment the counter.
+ _currentId = _currentId + 1;
+
+ // register the hot key.
+ if (!RegisterHotKey(_window.Handle, _currentId, (uint)modifier, (uint)key))
+ throw new InvalidOperationException("Couldn’t register the hot key.");
+ }
+
+ ///
+ /// A hot key has been pressed.
+ ///
+ public event EventHandler KeyPressed;
+
+ #region IDisposable Members
+
+ public void Dispose()
+ {
+ // unregister all the registered hot keys.
+ for (int i = _currentId; i > 0; i--)
+ {
+ UnregisterHotKey(_window.Handle, i);
+ }
+
+ // dispose the inner native window.
+ _window.Dispose();
+ }
+
+ #endregion
+ }
+
+ ///
+ /// Event Args for the event that is fired after the hot key has been pressed.
+ ///
+ public class KeyPressedEventArgs : EventArgs
+ {
+ private ModifierKeys _modifier;
+ private Keys _key;
+
+ internal KeyPressedEventArgs(ModifierKeys modifier, Keys key)
+ {
+ _modifier = modifier;
+ _key = key;
+ }
+
+ public ModifierKeys Modifier
+ {
+ get { return _modifier; }
+ }
+
+ public Keys Key
+ {
+ get { return _key; }
+ }
+ }
+
+ ///
+ /// The enumeration of possible modifiers.
+ ///
+ [Flags]
+ public enum ModifierKeys : uint
+ {
+ Alt = 1,
+ Control = 2,
+ Shift = 4,
+ Win = 8
+ }
+}
diff --git a/MangaColor/MangaColor/MangaColor.csproj b/MangaColor/MangaColor/MangaColor.csproj
new file mode 100644
index 0000000..aebcdda
--- /dev/null
+++ b/MangaColor/MangaColor/MangaColor.csproj
@@ -0,0 +1,132 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {4F2A4383-A018-4EE3-AC7C-8836307467AF}
+ WinExe
+ Properties
+ MangaColor2
+ MangaColor2
+ v2.0
+ 512
+ mag2.ico
+
+
+
+
+ 3.5
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ true
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ true
+
+
+
+
+
+
+
+
+
+
+
+ Glass.cs
+ Form
+
+
+ Form
+
+
+ Fmark.cs
+
+
+
+ Form1.cs
+
+
+
+
+
+ Fmark.cs
+
+
+ Form1.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/MangaColor/MangaColor/Program.cs b/MangaColor/MangaColor/Program.cs
new file mode 100644
index 0000000..91c4c9a
--- /dev/null
+++ b/MangaColor/MangaColor/Program.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace MangaColor2
+{
+ static class Program
+ {
+ ///
+ /// Punto de entrada principal para la aplicación.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/MangaColor/MangaColor/Properties/AssemblyInfo.cs b/MangaColor/MangaColor/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4c579f8
--- /dev/null
+++ b/MangaColor/MangaColor/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general sobre un ensamblado se controla mediante el siguiente
+// conjunto de atributos. Cambie estos atributos para modificar la información
+// asociada con un ensamblado.
+[assembly: AssemblyTitle("MangaColor2")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HP")]
+[assembly: AssemblyProduct("MangaColor2")]
+[assembly: AssemblyCopyright("Copyright © HP 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si establece ComVisible como false, los tipos de este ensamblado no estarán visibles
+// para los componentes COM. Si necesita obtener acceso a un tipo de este ensamblado desde
+// COM, establezca el atributo ComVisible como true en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como identificador de typelib si este proyecto se expone a COM
+[assembly: Guid("18fe3895-6bc1-4374-ae47-e3e22911ee91")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+// Versión principal
+// Versión secundaria
+// Número de versión de compilación
+// Revisión
+//
+// Puede especificar todos los valores o establecer como predeterminados los números de versión de compilación y de revisión
+// mediante el asterisco ('*'), como se muestra a continuación:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MangaColor/MangaColor/Properties/Resources.Designer.cs b/MangaColor/MangaColor/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..a51f612
--- /dev/null
+++ b/MangaColor/MangaColor/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34209
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace MangaColor2.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MangaColor2.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/MangaColor/MangaColor/Properties/Resources.resx b/MangaColor/MangaColor/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/MangaColor/MangaColor/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/MangaColor/MangaColor/Properties/Settings.Designer.cs b/MangaColor/MangaColor/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..f6db0e4
--- /dev/null
+++ b/MangaColor/MangaColor/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34209
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace MangaColor2.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/MangaColor/MangaColor/Properties/Settings.settings b/MangaColor/MangaColor/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/MangaColor/MangaColor/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/MangaColor/MangaColor/app.config b/MangaColor/MangaColor/app.config
new file mode 100644
index 0000000..0df7832
--- /dev/null
+++ b/MangaColor/MangaColor/app.config
@@ -0,0 +1,3 @@
+
+
+
diff --git a/MangaColor/MangaColor/mag2.ico b/MangaColor/MangaColor/mag2.ico
new file mode 100644
index 0000000..e27178a
--- /dev/null
+++ b/MangaColor/MangaColor/mag2.ico
Binary files differ