Browse Source

Update

master
ocsnetworks 3 years ago
commit
b898398510
  1. 40
      ChangeLog.txt
  2. 20
      WeatherApp.sln
  3. BIN
      WeatherApp.suo
  4. 165
      WeatherApp/Form1.Designer.cs
  5. 416
      WeatherApp/Form1.cs
  6. 374
      WeatherApp/Form1.resx
  7. 226
      WeatherApp/Form2.Designer.cs
  8. 50
      WeatherApp/Form2.cs
  9. 120
      WeatherApp/Form2.resx
  10. 2468
      WeatherApp/HtmlAgilityPack.XML
  11. BIN
      WeatherApp/HtmlAgilityPack.dll
  12. BIN
      WeatherApp/HtmlAgilityPack.pdb
  13. 38
      WeatherApp/Program.cs
  14. 36
      WeatherApp/Properties/AssemblyInfo.cs
  15. 63
      WeatherApp/Properties/Resources.Designer.cs
  16. 121
      WeatherApp/Properties/Resources.resx
  17. 86
      WeatherApp/Properties/Settings.Designer.cs
  18. 21
      WeatherApp/Properties/Settings.settings
  19. 164
      WeatherApp/WeatherApp.csproj
  20. 228
      WeatherApp/Welcome.Designer.cs
  21. 49
      WeatherApp/Welcome.cs
  22. 120
      WeatherApp/Welcome.resx
  23. 103
      WeatherApp/about.Designer.cs
  24. 74
      WeatherApp/about.cs
  25. 120
      WeatherApp/about.resx
  26. 27
      WeatherApp/app.config
  27. BIN
      WeatherApp/bin/Release/HtmlAgilityPack.dll
  28. BIN
      WeatherApp/bin/Release/HtmlAgilityPack.pdb
  29. 2468
      WeatherApp/bin/Release/HtmlAgilityPack.xml
  30. BIN
      WeatherApp/bin/Release/Rain.exe
  31. BIN
      WeatherApp/bin/Release/Snow.exe
  32. BIN
      WeatherApp/bin/Release/WeatherApp.exe
  33. 27
      WeatherApp/bin/Release/WeatherApp.exe.config
  34. BIN
      WeatherApp/bin/Release/WeatherApp.pdb
  35. BIN
      WeatherApp/bin/Release/WeatherApp.vshost.exe
  36. 27
      WeatherApp/bin/Release/WeatherApp.vshost.exe.config
  37. 11
      WeatherApp/bin/Release/WeatherApp.vshost.exe.manifest
  38. 20
      WeatherApp/bin/Release/log.txt
  39. 1
      WeatherApp/bin/WebUpdateSvc4.LIC
  40. BIN
      WeatherApp/bin/WebUpdateSvc4.exe
  41. BIN
      WeatherApp/bin/WuWUI.exe
  42. 9
      WeatherApp/bin/install.bat
  43. 3
      WeatherApp/bin/remove.bat
  44. BIN
      WeatherApp/bin/wuw4.dll
  45. BIN
      WeatherApp/bin/wuwstub.exe
  46. 80
      WeatherApp/connectionerror.Designer.cs
  47. 19
      WeatherApp/connectionerror.cs
  48. 371
      WeatherApp/connectionerror.resx
  49. BIN
      WeatherApp/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache
  50. BIN
      WeatherApp/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  51. BIN
      WeatherApp/obj/x86/Debug/TempPE/Properties.Resources.Designer.cs.dll
  52. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.Form2.resources
  53. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.Properties.Resources.resources
  54. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.Weather.resources
  55. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.about.resources
  56. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.connectionerror.resources
  57. 18
      WeatherApp/obj/x86/Debug/WeatherApp.csproj.FileListAbsolute.txt
  58. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.csproj.GenerateResource.Cache
  59. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.csproj.ResolveComReference.cache
  60. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.csprojResolveAssemblyReference.cache
  61. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.exe
  62. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.pdb
  63. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.showweather.resources
  64. BIN
      WeatherApp/obj/x86/Debug/WeatherApp.updateform.resources
  65. BIN
      WeatherApp/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache
  66. BIN
      WeatherApp/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache
  67. BIN
      WeatherApp/obj/x86/Release/TempPE/Properties.Resources.Designer.cs.dll
  68. BIN
      WeatherApp/obj/x86/Release/WeatherApp.Form2.resources
  69. BIN
      WeatherApp/obj/x86/Release/WeatherApp.Properties.Resources.resources
  70. BIN
      WeatherApp/obj/x86/Release/WeatherApp.Weather.resources
  71. BIN
      WeatherApp/obj/x86/Release/WeatherApp.Welcome.resources
  72. BIN
      WeatherApp/obj/x86/Release/WeatherApp.about.resources
  73. BIN
      WeatherApp/obj/x86/Release/WeatherApp.connectionerror.resources
  74. 38
      WeatherApp/obj/x86/Release/WeatherApp.csproj.FileListAbsolute.txt
  75. BIN
      WeatherApp/obj/x86/Release/WeatherApp.csproj.GenerateResource.Cache
  76. BIN
      WeatherApp/obj/x86/Release/WeatherApp.csproj.ResolveComReference.cache
  77. BIN
      WeatherApp/obj/x86/Release/WeatherApp.csprojResolveAssemblyReference.cache
  78. BIN
      WeatherApp/obj/x86/Release/WeatherApp.exe
  79. BIN
      WeatherApp/obj/x86/Release/WeatherApp.pdb
  80. BIN
      WeatherApp/obj/x86/Release/WeatherApp.showweather.resources
  81. BIN
      WeatherApp/obj/x86/Release/WeatherApp.updateform.resources
  82. 61
      WeatherApp/showweather.Designer.cs
  83. 23
      WeatherApp/showweather.cs
  84. 120
      WeatherApp/showweather.resx
  85. 106
      WeatherApp/updateform.Designer.cs
  86. 74
      WeatherApp/updateform.cs
  87. 371
      WeatherApp/updateform.resx
  88. BIN
      WeatherApp/weather.ico
  89. 20
      add-ons/WinRain2014/Rain.sln
  90. BIN
      add-ons/WinRain2014/Rain.suo
  91. 122
      add-ons/WinRain2014/Rain/AboutForm.Designer.cs
  92. 35
      add-ons/WinRain2014/Rain/AboutForm.cs
  93. 437
      add-ons/WinRain2014/Rain/AboutForm.resx
  94. 133
      add-ons/WinRain2014/Rain/BitmapRegion.cs
  95. BIN
      add-ons/WinRain2014/Rain/Flake.ico
  96. 61
      add-ons/WinRain2014/Rain/FlakeDlg.Designer.cs
  97. 77
      add-ons/WinRain2014/Rain/FlakeDlg.cs
  98. 123
      add-ons/WinRain2014/Rain/FlakeDlg.resx
  99. 57
      add-ons/WinRain2014/Rain/MainForm.Designer.cs
  100. 61
      add-ons/WinRain2014/Rain/MainForm.cs
  101. Some files were not shown because too many files have changed in this diff Show More

40
ChangeLog.txt

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
WeatherApp Change Log
Things to do:
2014-12-27
- Removed Connection Error popup. Now logs errors.
2014-03-09
- Added Installer
- Fixed Right Click Menu on WeatherApp to not open weatherview if you want menu.
- If No Connection only show 1 no connection window if already opened.
2014-03-04
- Fixed Temp Alignment
- Fixed Timer Error (Time * 60 * 1000)
- Fixed Snow or Rain Effect from Restarting
- Added Falling Rain Effect
2014-03-02
- Added Warning to Code (Check for Watches/Warnings)
- Added Forcast Information if Clicked
- Fix Connection Errors
- Added Automatic Check for Updates
- Added Images and Temps without Browser Control
- Added Snow Effect as Optional
2014-02-04
- Added Check for Updates
- Added Timed Refresh Rate
2014-02-03
- Fixed Right-Click Menu on Brower Control
- Added Settings Dialog
2014-02-01
- Added Browser Control
- Created Tray Menu (Exit, Show, Hide, and About)
- Created WeatherApp

20
WeatherApp.sln

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeatherApp", "WeatherApp\WeatherApp.csproj", "{C8933956-FD25-4E0B-BE48-4F943BD386EF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C8933956-FD25-4E0B-BE48-4F943BD386EF}.Debug|x86.ActiveCfg = Debug|x86
{C8933956-FD25-4E0B-BE48-4F943BD386EF}.Debug|x86.Build.0 = Debug|x86
{C8933956-FD25-4E0B-BE48-4F943BD386EF}.Release|x86.ActiveCfg = Release|x86
{C8933956-FD25-4E0B-BE48-4F943BD386EF}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

BIN
WeatherApp.suo

Binary file not shown.

165
WeatherApp/Form1.Designer.cs generated

@ -0,0 +1,165 @@ @@ -0,0 +1,165 @@
namespace WeatherApp
{
partial class Weather
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Weather));
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.showToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.hideToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.appTemp = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.WarningText = new System.Windows.Forms.Label();
this.contextMenuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.showToolStripMenuItem,
this.hideToolStripMenuItem,
this.settingsToolStripMenuItem,
this.aboutToolStripMenuItem,
this.exitToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(117, 114);
//
// showToolStripMenuItem
//
this.showToolStripMenuItem.Name = "showToolStripMenuItem";
this.showToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
this.showToolStripMenuItem.Text = "Show";
this.showToolStripMenuItem.Click += new System.EventHandler(this.showToolStripMenuItem_Click);
//
// hideToolStripMenuItem
//
this.hideToolStripMenuItem.Name = "hideToolStripMenuItem";
this.hideToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
this.hideToolStripMenuItem.Text = "Hide";
this.hideToolStripMenuItem.Click += new System.EventHandler(this.hideToolStripMenuItem_Click);
//
// settingsToolStripMenuItem
//
this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
this.settingsToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
this.settingsToolStripMenuItem.Text = "Settings";
this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click);
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
this.aboutToolStripMenuItem.Text = "About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
// appTemp
//
this.appTemp.AutoSize = true;
this.appTemp.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.appTemp.Location = new System.Drawing.Point(-2, 41);
this.appTemp.MaximumSize = new System.Drawing.Size(46, 24);
this.appTemp.MinimumSize = new System.Drawing.Size(46, 24);
this.appTemp.Name = "appTemp";
this.appTemp.Size = new System.Drawing.Size(46, 24);
this.appTemp.TabIndex = 1;
this.appTemp.Text = "-99°";
this.appTemp.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// pictureBox1
//
this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.pictureBox1.Location = new System.Drawing.Point(-2, -1);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(46, 39);
this.pictureBox1.TabIndex = 2;
this.pictureBox1.TabStop = false;
this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);
//
// WarningText
//
this.WarningText.AutoSize = true;
this.WarningText.Cursor = System.Windows.Forms.Cursors.Hand;
this.WarningText.Location = new System.Drawing.Point(-1, 61);
this.WarningText.Name = "WarningText";
this.WarningText.Size = new System.Drawing.Size(47, 13);
this.WarningText.TabIndex = 3;
this.WarningText.Text = "Warning";
this.WarningText.Click += new System.EventHandler(this.WarningText_Click);
//
// Weather
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(43, 75);
this.Controls.Add(this.WarningText);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.appTemp);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(43, 75);
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(43, 75);
this.Name = "Weather";
this.ShowInTaskbar = false;
this.Text = "Weather";
this.TopMost = true;
this.contextMenuStrip1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem showToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem hideToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.Label appTemp;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label WarningText;
}
}

416
WeatherApp/Form1.cs

@ -0,0 +1,416 @@ @@ -0,0 +1,416 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using HtmlAgilityPack;
using System.Diagnostics;
using Microsoft.Win32;
namespace WeatherApp
{
public partial class Weather : Form
{
public NotifyIcon trayIcon = new NotifyIcon();
static System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
static int alarmCounter = 1;
public Weather()
{
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
InitializeComponent();
RegistryKey Key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\OBriens Computer Service\WeatherApp");
try
{
if (Key.GetValue("Welcome") == null)
{
Welcome frm = new Welcome(this);
frm.Show();
}
}
catch (Exception ex)
{
}
ContextMenu menu = new ContextMenu();
MenuItem menuItem1 = new MenuItem("Show", Show_Click);
MenuItem menuItem2 = new MenuItem("Hide", Hide_Click);
MenuItem menuItem3 = new MenuItem("Setting", Settings_Click);
MenuItem menuItem4 = new MenuItem("About", About_Click);
MenuItem menuItem5 = new MenuItem("Exit", ExitApp_Click);
menu.MenuItems.Add(menuItem1);
menu.MenuItems.Add(menuItem2);
menu.MenuItems.Add(menuItem3);
menu.MenuItems.Add(menuItem4);
menu.MenuItems.Add(menuItem5);
this.ContextMenu = menu;
trayIcon.Text = "WeatherApp";
trayIcon.Icon = this.Icon;
ContextMenu trayMenu = new ContextMenu();
trayMenu.MenuItems.Add("Show", Show_Click);
trayMenu.MenuItems.Add("Hide", Hide_Click);
trayMenu.MenuItems.Add("Setting", Settings_Click);
trayMenu.MenuItems.Add("About", About_Click);
trayMenu.MenuItems.Add("Exit", ExitApp_Click);
trayIcon.ContextMenu = trayMenu;
trayIcon.Visible = true;
WarningText.Visible = false;
Int32 time = Convert.ToInt32(Properties.Settings.Default.refresh) * 60 * 1000;
myTimer.Tick += new EventHandler(TimerEventProcessor);
if (time <= 0)
{
myTimer.Interval = time;
}
else
{
myTimer.Interval = 5*60*1000;
}
myTimer.Start();
content();
checkforupdates();
}
private void TimerEventProcessor(Object myObject,
EventArgs myEventArgs)
{
myTimer.Stop();
alarmCounter += 1;
myTimer.Enabled = true;
content();
}
private void content()
{
HtmlWeb web = new HtmlWeb();
try
{
HtmlAgilityPack.HtmlDocument doc = web.Load("http://ocs-networks.com/weather/weathernew.php?zipcode=" + Properties.Settings.Default.zipcode + "&refresh=" + Properties.Settings.Default.refresh + "");
HtmlNode TempNode = doc.DocumentNode.SelectSingleNode("//div[@id='appTemp']");
HtmlNode ImageNode = doc.DocumentNode.SelectSingleNode("//div[@id='appImage']");
HtmlNode ConditionNode = doc.DocumentNode.SelectSingleNode("//div[@id='appConditions']");
string starttemp = TempNode.InnerText.Replace("&#xB0;", "°");
string temp = starttemp;
string image = ImageNode.InnerText;
string conditions = ConditionNode.InnerText;
string features = Properties.Settings.Default.features;
if (features == "Yes" && conditions.Contains("snow") || features == "Yes" && conditions.Contains("flur"))
{
Process[] processesSnowStart = Process.GetProcessesByName("Snow");
if (processesSnowStart.Length > 0)
{
processesSnowStart[0].CloseMainWindow();
}
else
{
Process.Start("Snow.exe");
}
}
if (features == "Yes" && conditions.Contains("rain") || features == "Yes" && conditions.Contains("shower"))
{
Process[] processesRainStart = Process.GetProcessesByName("Rain");
if (processesRainStart.Length > 0)
{
processesRainStart[0].CloseMainWindow();
}
else
{
Process.Start("Rain.exe");
}
}
if (features == "No")
{
killweather();
}
// Show Current Conditions Picture
var request = WebRequest.Create(image);
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
pictureBox1.Image = Bitmap.FromStream(stream);
}
// Temp Colors
if (Properties.Settings.Default.tempcolor == "") { appTemp.ForeColor = System.Drawing.Color.Black; }
if (Properties.Settings.Default.tempcolor == "Black") { appTemp.ForeColor = System.Drawing.Color.Black; }
if (Properties.Settings.Default.tempcolor == "Green") { appTemp.ForeColor = System.Drawing.Color.Green; }
if (Properties.Settings.Default.tempcolor == "Pink") { appTemp.ForeColor = System.Drawing.Color.Pink; }
if (Properties.Settings.Default.tempcolor == "Purple") { appTemp.ForeColor = System.Drawing.Color.Purple; }
if (Properties.Settings.Default.tempcolor == "Red") { appTemp.ForeColor = System.Drawing.Color.Red; }
if (Properties.Settings.Default.tempcolor == "Yellow") { appTemp.ForeColor = System.Drawing.Color.Yellow; }
if (Properties.Settings.Default.tempcolor == "White") { appTemp.ForeColor = System.Drawing.Color.White; }
// Temp Background Colors
if (Properties.Settings.Default.tempbackcolor == "") { this.BackColor = System.Drawing.Color.Black; }
if (Properties.Settings.Default.tempbackcolor == "Black") { this.BackColor = System.Drawing.Color.Black; }
if (Properties.Settings.Default.tempbackcolor == "Green") { this.BackColor = System.Drawing.Color.Green; }
if (Properties.Settings.Default.tempbackcolor == "Pink") { this.BackColor = System.Drawing.Color.Pink; }
if (Properties.Settings.Default.tempbackcolor == "Purple") { this.BackColor = System.Drawing.Color.Purple; }
if (Properties.Settings.Default.tempbackcolor == "Red") { this.BackColor = System.Drawing.Color.Red; }
if (Properties.Settings.Default.tempbackcolor == "Yellow") { this.BackColor = System.Drawing.Color.Yellow; }
if (Properties.Settings.Default.tempbackcolor == "White") { this.BackColor = System.Drawing.Color.White; }
// Set the Temp from Website
appTemp.Text = temp;
if (temp.Length == 4) { appTemp.Text = temp; }
if (temp.Length == 3) { appTemp.Text = " " + temp + " "; }
if (temp.Length == 2) { appTemp.Text = " " + temp + " "; }
if (temp.Length == 1) { appTemp.Text = temp; }
} catch (Exception ex)
{
if (IsFormAlreadyOpen(typeof(connectionerror)) == null)
{
//connectionerror frm = new connectionerror();
//frm.Show();
}
}
try
{
HtmlAgilityPack.HtmlDocument doc2 = web.Load("http://ocs-networks.com/weather/hw3.php?config=&forecast=warnings&zipcode=" + Properties.Settings.Default.zipcode + "&refresh=" + Properties.Settings.Default.refresh + "");
HtmlNode WarningNode = doc2.DocumentNode.SelectSingleNode("//span[@class='warnTitle']");
string Warning1 = WarningNode.InnerText;
if (Warning1.Length > 10)
{
WarningText.Visible = true;
WarningText.ForeColor = System.Drawing.Color.Red;
}
else
{
WarningText.Visible = false;
}
}
catch (Exception ex)
{
WarningText.Visible = false;
}
}
private void killweather()
{
Process[] processesSnow = Process.GetProcessesByName("Snow");
foreach (Process processSnow in processesSnow)
{
processSnow.Kill();
}
Process[] processesRain = Process.GetProcessesByName("Rain");
foreach (Process processRain in processesRain)
{
processRain.Kill();
}
}
protected override void OnLoad(EventArgs e)
{
var screen = Screen.FromPoint(this.Location);
this.Location = new Point(screen.WorkingArea.Right - this.Width, screen.WorkingArea.Bottom - this.Height);
base.OnLoad(e);
}
private void ExitApp_Click(object sender, EventArgs e)
{
trayIcon.Visible = false;
trayIcon.Icon = null;
trayIcon.Dispose();
Application.Exit();
}
private void About_Click(object sender, EventArgs e)
{
about frm = new about();
frm.Show();
}
private void Show_Click(object sender, EventArgs e)
{
this.Show();
}
private void Hide_Click(object sender, EventArgs e)
{
this.Hide();
}
private void Settings_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
trayIcon.Visible = false;
trayIcon.Icon = null;
trayIcon.Dispose();
this.Dispose();
}
private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Process[] processesSnow = Process.GetProcessesByName("Snow");
foreach (Process processSnow in processesSnow)
{
processSnow.Kill();
}
Process[] processesRain = Process.GetProcessesByName("Rain");
foreach (Process processRain in processesRain)
{
processRain.Kill();
}
trayIcon.Visible = false;
trayIcon.Icon = null;
trayIcon.Dispose();
Application.Exit();
}
private void showToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Show();
}
private void hideToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
about frm = new about();
frm.Show();
}
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
showweatherview();
}
}
private void showweatherview()
{
showweather frm = new showweather();
frm.Show();
}
private void checkforupdates()
{
HtmlWeb web = new HtmlWeb();
try
{
HtmlAgilityPack.HtmlDocument doc = web.Load("http://ocs-networks.com/apps/WeatherApp/checkversion.php");
HtmlNode VersionNode = doc.DocumentNode.SelectSingleNode("//div[@id='currentversion']");
string updateversion = VersionNode.InnerText;
if (Application.ProductVersion != updateversion)
{
updateform frm = new updateform();
frm.Show();
}
} catch (Exception ex)
{
if (IsFormAlreadyOpen(typeof(connectionerror)) == null)
{
//connectionerror frm = new connectionerror();
//frm.Show();
}
}
}
private void WarningText_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://ocs-networks.com/weather/hw3.php?config=&forecast=warnings&zipcode=" + Properties.Settings.Default.zipcode + "&refresh=" + Properties.Settings.Default.refresh + "");
}
public static Form IsFormAlreadyOpen(Type FormType)
{
foreach (Form OpenForm in Application.OpenForms)
{
if (OpenForm.GetType() == FormType)
return OpenForm;
}
return null;
}
protected void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
using (StreamWriter w = File.AppendText("log.txt"))
{
Log("" + e.Exception, w);
}
}
public static void Log(string logMessage, TextWriter w)
{
w.Write("\r\nWeatherApp : ");
w.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),
DateTime.Now.ToLongDateString());
w.WriteLine(" :");
w.WriteLine(" :{0}", logMessage);
w.WriteLine("-------------------------------");
}
}
}

374
WeatherApp/Form1.resx

@ -0,0 +1,374 @@ @@ -0,0 +1,374 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAOzwAAAEAIABYOQAAFgAAACgAAAA7AAAAeAAAAAEAIAAAAAAAUDcAABILAAASCwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAwAAAA4AAAAcAAAAJAAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA
ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA
ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA
ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJAAAABwAAAAOAAAAAwAAAAAAAAAAAAAAAAAA
AAQAAAAWAAAAOwAAAFwAAABtAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAA
AHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAA
AHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAA
AHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABtAAAAXAAAADsAAAAWAAAABAAAAAAAAAAAAAAADwAA
AD1uWDKevJZW6NarYv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9ar
Yv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9ar
Yv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv/Wq2L/1qti/9ar
Yv/Wq2L/1qti/9arYv/Wq2L/1qti/9arYv+8llboblgyngAAAD0AAAAPAAAAAAAAAAAAAAAdhWg7m8uY
Wf+5f0z/sXRG/7F0Rf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7Bz
Rf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7Bz
Rf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7BzRf+wc0X/sHNF/7Bz
Rf+wc0X/sHNF/7BzRf+xdEX/sXRG/7l/TP/LmFn/hWg7mwAAAB0AAAAAAAAAAAAAACS9h0vqtHNF/7Nx
Qv+yb0D/sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7Jv
P/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7Jv
P/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7JvP/+ybz//sm8//7Jv
P/+ybz//sm8//7JvP/+yb0D/s3FC/7RzRf+9h0vqAAAAJAAAAAAAAAAAAAAAJrlzQP24cUP/tm0//7Vr
Pf+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7Vr
PP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7Vr
PP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7VrPP+1azz/tWs8/7Vr
PP+1azz/tWs8/7VrPf+2bT//uHFD/7lzQP0AAAAmAAAAAAAAAAAAAAAmuWw8/7pwQv+5bT7/uGs8/7hr
PP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hr
PP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hr
PP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hrPP+4azz/uGs8/7hr
PP+4azz/uGs8/7ltPv+6cEL/uWw8/wAAACYAAAAAAAAAAAAAACa6azz/vHBC/7ttPv+6azz/ums8/7pr
PP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7pr
PP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7pr
PP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7prPP+6azz/ums8/7pr
PP+6azz/u20+/7xwQv+6azz/AAAAJgAAAAAAAAAAAAAAJrtsPP+9cUL/vG4+/7tsPP+7bDz/u2w8/7ts
PP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7ts
PP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7ts
PP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7tsPP+7bDz/u2w8/7ts
PP+8bj7/vXFC/7tsPP8AAAAmAAAAAAAAAAAAAAAmu209/71xQ/+8bz//u209/7ttPf+7bT3/u209/7tt
Pf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7tt
Pf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7tt
Pf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7ttPf+7bT3/u209/7xv
P/+9cUP/u209/wAAACYAAAAAAAAAAAAAACa8bj7/vnJE/71wQP+8bj7/vG4+/7xuPv+8bj7/vG4+/7xu
Pv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xu
Pv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xu
Pv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vG4+/7xuPv+8bj7/vXBA/75y
RP+8bj7/AAAAJgAAAAAAAAAAAAAAJrxvP/++c0X/vXFB/7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xv
P/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xv
P/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xv
P/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+8bz//vG8//7xvP/+9cUH/vnNF/7xv
P/8AAAAmAAAAAAAAAAAAAAAmvHBA/750Rv+9ckL/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xw
QP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xw
QP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xw
QP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/7xwQP+8cED/vHBA/71yQv++dEb/vHBA/wAA
ACYAAAAAAAAAAAAAACa9cUL/v3VI/75zRP+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71x
Qv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71x
Qv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71x
Qv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vXFC/71xQv+9cUL/vnNE/791SP+9cUL/AAAAJgAA
AAAAAAAAAAAAJr1zQ/+/d0n/vnVF/71zQ/+9c0P/vXND/71zQ/+9c0P/vXND/71zQ/+9c0P/vXND/71z
Q/+9c0P/vXND/71zQ/+9c0P/vXND/71zQ/+9c0P/vXND/71zQ/+9c0P/vHNE/7xzRP+8c0T/u3NF/7pz
Rv+7c0X/u3NF/7xzRP+8c0T/vXND/71zQ/+9c0P/vXND/71zQ/+9c0P/vXND/71zQ/+9c0P/vXND/71z
Q/+9c0P/vXND/71zQ/+9c0P/vXND/71zQ/+9c0P/vXND/71zQ/++dUX/v3dJ/71zQ/8AAAAmAAAAAAAA
AAAAAAAmvnRF/8B4S/+/dkf/vnRF/750Rf++dEX/vnRF/750Rf++dEX/vnRF/750Rf++dEX/vnRF/750
Rf++dEX/vnRF/750Rf++dEX/vnRF/750Rf+9dEb/u3RI/7p0Sf+3c0z/tXNP/7N2Vf+wdFX/r3JU/7Bz
VP+yc1L/tHNQ/7dzTP+5dEr/u3RI/710Rv++dEX/vnRF/750Rf++dEX/vnRF/750Rf++dEX/vnRF/750
Rf++dEX/vnRF/750Rf++dEX/vnRF/750Rf++dEX/vnRF/792R//AeEv/vnRF/wAAACYAAAAAAAAAAAAA
ACa+dkb/wHpM/794SP++dkb/vnZG/752Rv++dkb/vnZG/752Rv++dkb/vnZG/752Rv++dkb/vnZG/752
Rv++dkb/vnZG/752Rv+9dkf/u3ZJ/7l1TP+0dVD/r3RV/6hzXP+jc2L/nndw/5x8f/+Zcmz/mXJs/51y
aP+ic2P/p3Rf/650V/+zdVH/uHVM/7t2Sf+9dkf/vnZG/752Rv++dkb/vnZG/752Rv++dkb/vnZG/752
Rv++dkb/vnZG/752Rv++dkb/vnZG/752Rv++dkb/v3hI/8B6TP++dkb/AAAAJgAAAAAAAAAAAAAAJr53
SP/Ae03/v3lK/753SP++d0j/vndI/753SP++d0j/vndI/753SP++d0j/vndI/753SP++d0j/vndI/753
SP++d0j/vXdJ/7l2Tf+1dlH/rnVZ/6V0Yv+bdG3/kHF3/4Zwgf9/dJL/fIO3/3hwkf95b47/fm+K/4Z5
k/+Pd4T/mXJu/6N0ZP+sdVr/tHZS/7l2Tf+8d0r/vXdJ/753SP++d0j/vndI/753SP++d0j/vndI/753
SP++d0j/vndI/753SP++d0j/vndI/753SP+/eUr/wHtN/753SP8AAAAmAAAAAAAAAAAAAAAmvnlJ/8B9
Tv+/e0v/vnlJ/755Sf++eUn/vnlJ/755Sf++eUn/vnlJ/755Sf++eUn/vnlJ/755Sf++eUn/vnpK/716
Tf+5eE7/sndV/6l2Xv+cdGv/jHJ7/312l/9udaf/YGyo/1GExv9Kl+P/R5zd/0iQz/9PgsP/XoDQ/2t1
rP96cI7/inJ+/5l0bv+ndmD/sXdW/7d4UP+7eUz/vXlK/755Sf++eUn/vnlJ/755Sf++eUn/vnlJ/755
Sf++eUn/vnlJ/755Sf++eUn/vnlJ/797S//AfU7/vnlJ/wAAACYAAAAAAAAAAAAAACa/ekv/wX5Q/8B8
Tf+/ekv/v3pL/796S/+/ekv/v3pL/796S/+/ekv/v3pL/796S/+/ekv/v3pL/796S/++ekz/vH5X/7WA
Yv+oemn/lnR0/4Jyh/9sb57/Uny//z+18P891/j/TNr6/1LZ+f9c2fn/Vtn5/0zZ+v881fj/Prru/02F
x/9obqL/fXKP/5N1ef+kdmb/sHha/7h5Uv+8ek7/v3pL/796S/+/ekv/v3pL/796S/+/ekv/v3pL/796
S/+/ekv/v3pL/796S/+/ekv/wHxN/8F+UP+/ekv/AAAAJgAAAAAAAAAAAAAAJr98TP/BgFH/wH5O/798
TP+/fEz/v3xM/798TP+/fEz/v3xM/798TP+/fEz/v3xM/798TP+/fEz/vnxN/7p7Uf+zelf/qYFz/5aH
l/99ga3/YHe6/0Cs4/872fj/adz6/4vg+v972fn/cdT4/2fQ+P9u0vj/e9j5/4nf+v9w3Pr/T9z6/z67
7v9ZhM//dnGU/491e/+jeGj/sXtc/7t9VP++fE3/v3xM/798TP+/fEz/v3xM/798TP+/fEz/v3xM/798
TP+/fEz/v3xM/798TP/Afk7/wYBR/798TP8AAAAmAAAAAAAAAAAAAAAmv31O/8GBU//Af1D/v31O/799
Tv+/fU7/v31O/799Tv+/fU7/v31O/799Tv+/fU7/v31O/799Tv+8fVH/tXxX/6l6Y/+Vd3f/fYCq/1uH
0/89xvX/X9z5/4Dd+f9Ry/f/Lrr0/yi09P8msfP/JrDz/yax8/8ns/P/Lrn0/0vH9v952/n/ZNz6/z3R
9v9RgcH/dXOY/5KClP+oiof/s3ta/7t8Uv++fU//v31O/799Tv+/fU7/v31O/799Tv+/fU7/v31O/799
Tv+/fU7/v31O/8B/UP/BgVP/v31O/wAAACYAAAAAAAAAAAAAACa/f0//wYNU/8CBUf+/f0//v39P/79/
T/+/f0//v39P/79/T/+/f0//v39P/79/T/+/f0//vn9Q/7l+Vf+ufWH/nHlx/4F1i/9edLH/Pcn0/2Td
+v9Z0Pj/LLr0/yay8/8jrfL/Iajx/yCn8f8gpvH/IKfx/yGo8f8jrPL/JrHz/yq49P9My/f/Zdv6/z3W
9/9Widn/e4q//5Z6e/+rfGP/t35X/71/Uf+/f0//v39P/79/T/+/f0//v39P/79/T/+/f0//v39P/79/
T/+/f0//wIFR/8GDVP+/f0//AAAAJgAAAAAAAAAAAAAAJsCAUP/ChFX/wYFS/8CAUP/AgFD/wIBQ/8CA
UP/AgFD/wIBQ/8CAUP/AgFD/wIBQ/8CAUP+9gFP/tX5b/6aAcP+OhJv/a3q0/z+16v9c3vn/Rc33/yq6
9P8ksfP/IKry/x6k8f8covH/G6Dx/xuh8P8boPD/HKLx/x2k8f8gqPL/I6/z/yi49P86x/b/Xtv6/z3O
9/9hdrT/hXaJ/6B7bv+yfl3/vH9U/8CAUP/AgFD/wIBQ/8CAUP/AgFD/wIBQ/8CAUP/AgFD/wIBQ/8CA
UP/BgVL/woRV/8CAUP8AAAAmAAAAAAAAAAAAAAAmwIJS/8KGV//Bg1T/wIJS/8CCUv/AglL/wIJS/8CC
Uv/AglL/wIJS/8CCUv/AglL/v4JT/7uBV/+vf2L/mnt2/3x9ov9QkN3/TOH6/0bS+P8qvvX/JLLz/x+p
8v8cpPL/GqDx/xmf8f8YnvH/GJ3w/xie8f8Zn/H/GqDx/xyj8v8fqPL/I6/z/ym79f83y/b/W+H7/0Sj
3f9ydJz/k3p9/6yDcf+7iGb/wYZZ/8CCUv/AglL/wIJS/8CCUv/AglL/wIJS/8CCUv/AglL/wIJS/8GD
VP/Chlf/wIJS/wAAACYAAAAAAAAAAAAAACbAg1P/wodY/8GEVf/Ag1P/wINT/8CDU//Ag1P/wINT/8CD
U//Ag1P/wINT/8CDU/+/g1T/uIFb/6h+av+OeoL/anOl/z7E8v9L2/r/Lsb3/ya39P8grPP/G6by/xii
8f8XoPD/Fp/x/xWf8f8VnvH/FZ/x/xaf8f8WoPD/GKHx/xqk8f8fqvP/JbXz/yvD9f9C1vn/Ptv4/2CC
zf+Jkr7/ppSd/7eIav++g1X/wINT/8CDU//Ag1P/wINT/8CDU//Ag1P/wINT/8CDU//Ag1P/wYRV/8KH
WP/Ag1P/AAAAJgAAAAAAAAAAAAAAJsCEVP/CiFn/wYVW/8CEVP/AhFT/wIRU/8CEVP/AhFT/wIRU/8CE
VP/AhFT/wIRU/76EVv+1hWP/ooR9/4R+mP9ZfcH/POP7/zLS+P8qwvb/IrTz/xyq8v8ZpvL/FqLx/xai
8f8VovH/FaLx/xWj8f8VovH/FaLx/xai8f8WovH/GKXy/xup8v8gsfP/Kb32/zDO9/9L4/r/TJzm/3yH
t/+bf3v/sYFi/72DV//AhFT/wIRU/8CEVP/AhFT/wIRU/8CEVP/AhFT/wIRU/8CEVP/BhVb/wohZ/8CE
VP8AAAAmAAAAAAAAAAAAAAAmwYVV/8OJWv/Chlf/wYVV/8GFVf/BhVX/wYVV/8GFVf/BhVX/wYVV/8GF
Vf/BhVX/voRY/7KCY/+cgHz/fIGq/0uh5P9K5Pv/MND4/yfB9v8ftPT/G6zy/xen8v8WpfL/FaXy/xWm
8v8Vp/L/Fafy/xWn8v8VpvL/FaXy/xal8v8XpvL/Gqny/x6x8/8lvfX/Lsz3/0Lf+v9Bten/cnWf/5V8
fv+ugWf/vIRZ/8GFVf/BhVX/wYVV/8GFVf/BhVX/wYVV/8GFVf/BhVX/wYVV/8KGV//DiVr/wYVV/wAA
ACYAAAAAAAAAAAAAACbDh1j/xYpd/8SIWv/Dh1j/w4dY/8OHWP/Dh1j/w4dY/8OHWP/Dh1j/w4dY/8OH
WP/Ahlv/soNo/5h+fv92d57/RK/k/0jj/P8u0fj/JcH2/x619P8arvP/F6ny/xWo8v8UqfP/FKrz/xSr
8/8Uq/P/FKvz/xSq8/8UqfP/Fajy/xao8v8ZrPP/HbPz/yS+9f8szfj/Q9/6/z/H8P9sdab/kn2E/62C
bP+9hl3/w4dY/8OHWP/Dh1j/w4dY/8OHWP/Dh1j/w4dY/8OHWP/Dh1j/xIha/8WKXf/Dh1j/AAAAJgAA
AAAAAAAAAAAAJseMXP/Jj2H/yI1e/8eMXP/HjFz/x4xc/8eMXP/HjFz/x4xc/8eMXP/HjFz/x4xc/8OL
YP+1iG7/moSI/3Z/rf9Cuu3/Tub8/y7T+f8mxff/H7n1/xmx8/8VrfP/FKzz/xSu8/8Ur/T/FK/0/xSv
9P8Ur/T/FK/0/xSu8/8UrPP/Fa3z/xiw8/8dtvX/I8H2/yvP+P9M4/v/P9X3/2yBwP+UhpT/r4Zx/8GL
Yv/HjFz/x4xc/8eMXP/HjFz/x4xc/8eMXP/HjFz/x4xc/8eMXP/IjV7/yY9h/8eMXP8AAAAmAAAAAAAA
AAAAAAAmyI1d/8qQYv/Jjl//yI1d/8iNXf/IjV3/yI1d/8iNXf/IjV3/yI1d/8iNXf/IjV3/xIxh/7aK
cP+ciI//eIa6/0O47/9Z6f3/Ntn5/ybK9/8ev/b/Gbf1/xWy9P8UsfT/FLL0/xSz9P8Us/X/FLT1/xSz
9f8Us/T/FLL0/xSx9P8VsvT/Gbb1/x289v8kyPf/L9X5/1nn/P8/0/X/bX22/5SFk/+winb/woti/8iN
Xf/IjV3/yI1d/8iNXf/IjV3/yI1d/8iNXf/IjV3/yI1d/8mOX//KkGL/yI1d/wAAACYAAAAAAAAAAAAA
ACbJjl3/y5Fi/8mPX//Jjl3/yY5d/8mOXf/Jjl3/yY5d/8mOXf/Jjl3/yY5d/8mOXf/FjWD/uIps/5+E
gP97e5//R6rh/2Tu/f9K4vz/KNH5/yDH9/8avvb/F7r1/xS49f8UuPX/E7j1/xO49f8TuPX/E7j1/xO4
9f8Ut/X/FLb1/xa49f8ZvPb/H8T3/yXP+P893fr/a+79/0DD7v9yeaf/mIKG/7OJcP/DjWL/yY5d/8mO
Xf/Jjl3/yY5d/8mOXf/Jjl3/yY5d/8mOXf/Jjl3/yY9f/8uRYv/Jjl3/AAAAJgAAAAAAAAAAAAAAJsqQ
Xv/Mk2P/ypFg/8qQXv/KkF7/ypBe/8qQXv/KkF7/ypBe/8qQXv/KkF7/ypBe/8ePYP+7jGr/pYd9/4R/
mf9Skc3/XvH9/3Ls/P812/r/Is/4/xzH9/8Ywfb/Fb/2/xS99/8Uvvb/E772/xO+9v8Tvvb/E772/xS9
9/8Vvvb/F8D2/xzG9/8hzfj/Ltf5/2Do/P908v3/RrLs/3p+pv+ehYL/uItt/8aPYv/KkF7/ypBe/8qQ
Xv/KkF7/ypBe/8qQXv/KkF7/ypBe/8qQXv/KkWD/zJNj/8qQXv8AAAAmAAAAAAAAAAAAAAAmy5Ff/82U
ZP/LkmH/y5Ff/8uRX//LkV//y5Ff/8uRX//LkV//y5Ff/8uRX//LkV//ypFg/8COaP+tiXj/joKR/2Z4
tP9A6fz/o/X+/1rn/P8t2fr/INH5/xnL+P8XyPj/Fcb3/xTF+P8Uxfj/FMX4/xTF+P8Uxfj/Fcb3/xfH
+P8Zyvj/H8/5/ynY+f9N4/z/mfP9/1ny/f9Xi8n/h4eo/6eKgP+8jWv/yJBh/8uRX//LkV//y5Ff/8uR
X//LkV//y5Ff/8uRX//LkV//y5Ff/8uSYf/NlGT/y5Ff/wAAACYAAAAAAAAAAAAAACbMk2D/zpZl/8yU
Yv/Mk2D/zJNg/8yTYP/Mk2D/zJNg/8yTYP/Mk2D/zJNg/8yTYP/Lk2H/xZFm/7WNcv+bhoj/d4Ox/0W6
7/+K9v7/nfT+/1bn/P8s3fr/Hdb6/xrR+v8Xz/n/Fs75/xbO+f8Wzfj/Fs74/xbN+f8Xzvn/GtD6/xzU
+v8o2vr/S+T8/43x/f+d9v7/QNT0/216rf+UhI3/sIx3/8KQaP/Lk2H/zJNg/8yTYP/Mk2D/zJNg/8yT
YP/Mk2D/zJNg/8yTYP/Mk2D/zJRi/86WZf/Mk2D/AAAAJgAAAAAAAAAAAAAAJs2UYf/Pl2b/zZVj/82U
Yf/NlGH/zZRh/82UYf/NlGH/zZRh/82UYf/NlGH/zZRh/82UYf/Jk2X/vZBu/6mLf/+LiaT/YIXG/0Hs
/P+x+P7/ovX+/2Lr/f824vz/I937/x3a+v8Z2Pv/GNf6/xjY+v8Y1/r/Gdj7/xzZ+v8h2/v/MeD8/1bp
/f+U8/7/yfr//2r2/v9SldP/gYCe/6KJg/+5j3H/xpJm/8yUYv/NlGH/zZRh/82UYf/NlGH/zZRh/82U
Yf/NlGH/zZRh/82UYf/NlWP/z5dm/82UYf8AAAAmAAAAAAAAAAAAAAAmzpZi/9CZZ//Ol2T/zpZi/86W
Yv/OlmL/zpZi/86WYv/OlmL/zpZi/86WYv/OlmL/zpZi/8yVZP/Ek2r/tY92/52Jif98gqr/TqXl/333
/v/R/P//uPj+/4Hx/v9X6/3/Pef8/y3k/P8k4vz/IeL8/yLi/P8r5Pz/Oub8/1Hq/f938P7/rPf+/938
//+M+P7/Rbfm/3J/sf+WipT/sI56/8KTa//LlWT/zpZi/86WYv/OlmL/zpZi/86WYv/OlmL/zpZi/86W
Yv/OlmL/zpZi/86XZP/QmWf/zpZi/wAAACYAAAAAAAAAAAAAACbPmGP/0Zto/8+ZZf/PmGP/z5hj/8+Y
Y//PmGP/z5hj/8+YY//PmGP/z5hj/8+YY//PmGP/zphk/8qXZ//AlG//r5B+/5aRpv90isb/R7bs/4j5
/v/N+///2Pz//7b4//+U9f7/efL+/2jx/v9g8P7/ZfD+/3Xy/v+P9f7/r/j//9L7///q/v//jfn+/0LM
8P9qfLP/jYWW/6qNgP+8k3L/yJZo/86YZP/PmGP/z5hj/8+YY//PmGP/z5hj/8+YY//PmGP/z5hj/8+Y
Y//PmGP/z5ll/9GbaP/PmGP/AAAAJgAAAAAAAAAAAAAAJtCaZf/SnWr/0Jtn/9CaZf/QmmX/0Jpl/9Ca
Zf/QmmX/0Jpl/9CaZf/QmmX/0Jpl/9CaZf/QmmX/zpln/8mYa//Amnz/rJeQ/5GLn/9yfq7/Sqjf/z/z
/f+s+v//9P7//+X9///Y/P//0fz//837///P/P//1vz//+L9///x/v//wPv//3T5/v9Ev+z/aonP/4qG
nP+mjoX/upN2/8aXbP/NmWf/0Jpl/9CaZf/QmmX/0Jpl/9CaZf/QmmX/0Jpl/9CaZf/QmmX/0Jpl/9Ca
Zf/Qm2f/0p1q/9CaZf8AAAAmAAAAAAAAAAAAAAAm0ptm/9Sea//SnGj/0ptm/9KbZv/Sm2b/0ptm/9Kb
Zv/Sm2b/0ptm/9KbZv/Sm2b/0ptm/9KbZv/Rm2f/0J1s/8mbcf+9lXb/q5CD/5SJlf96h7j/WZfb/0HS
9P9j+f7/nfr//9L9///l/v///////+z+///X/f//pvv//3D4/v9A3/f/UZ3a/3N/rv+Pip//qJeZ/7qU
eP/Gl2//zZpp/9GbZ//Sm2b/0ptm/9KbZv/Sm2b/0ptm/9KbZv/Sm2b/0ptm/9KbZv/Sm2b/0ptm/9Kc
aP/Unmv/0ptm/wAAACYAAAAAAAAAAAAAACbTnWf/1KBs/9Oeaf/TnWf/051n/9OdZ//TnWf/051n/9Od
Z//TnWf/051n/9OdZ//TnWf/051n/9OdZ//SnWj/z5xq/8mabv++l3b/sJKB/56Rmf+HhqL/cX+w/1eY
2f9Fu/D/QNv2/z/o+/8++f//Pu37/0Df+f9Dven/Up/e/26Ewv+ChKT/mIyU/6yRhP+7lnr/x5py/86b
a//RnWj/051n/9OdZ//TnWf/051n/9OdZ//TnWf/051n/9OdZ//TnWf/051n/9OdZ//TnWf/055p/9Sg
bP/TnWf/AAAAJgAAAAAAAAAAAAAAJtSfaP/Vom3/1KBq/9SfaP/Un2j/1J9o/9SfaP/Un2j/1J9o/9Sf
aP/Un2j/1J9o/9SfaP/Un2j/1J9o/9SfaP/Tn2n/0J5r/8ucb//DmnT/uJZ9/6mSiP+ajZP/jJCu/3+P
wf9zgbD/bYXE/2qAvf9sgLj/c43O/3uFrf+Ih6D/mJGi/6aRi/+1lX//wZl2/8qcb//Pnmv/0p9p/9Sf
aP/Un2j/1J9o/9SfaP/Un2j/1J9o/9SfaP/Un2j/1J9o/9SfaP/Un2j/1J9o/9SfaP/UoGr/1aJt/9Sf
aP8AAAAmAAAAAAAAAAAAAAAm1aFq/9akb//Vomz/1aFq/9Whav/VoWr/1aFq/9Whav/VoWr/1aFq/9Wh
av/VoWr/1aFq/9Whav/VoWr/1aFq/9Whav/UoWv/0qBs/8+fbv/JnXP/wZt4/7iYf/+vmZH/pZaW/52P
k/+Yj5n/l42X/5iNlv+elqP/pJSU/6yUiP+2l4D/v5p6/8eddP/Nn3D/0qBs/9Sha//VoWr/1aFq/9Wh
av/VoWr/1aFq/9Whav/VoWr/1aFq/9Whav/VoWr/1aFq/9Whav/VoWr/1aFq/9WibP/WpG//1aFq/wAA
ACYAAAAAAAAAAAAAACbWo2v/16Zw/9akbf/Wo2v/1qNr/9aja//Wo2v/1qNr/9aja//Wo2v/1qNr/9aj
a//Wo2v/1qNr/9aja//Wo2v/1qNr/9aja//Wo2v/1KJs/9Oibf/PoXD/y59z/8efev/AnHr/vJp+/7ma
f/+4mYH/uZp//7ybgP/Bnn//xZ13/8qfdP/OoHH/0qJu/9SibP/Vo2z/1qNr/9aja//Wo2v/1qNr/9aj
a//Wo2v/1qNr/9aja//Wo2v/1qNr/9aja//Wo2v/1qNr/9aja//Wo2v/1qRt/9emcP/Wo2v/AAAAJgAA
AAAAAAAAAAAAJtilbP/ZqHH/2KZu/9ilbP/YpWz/2KVs/9ilbP/YpWz/2KVs/9ilbP/YpWz/2KVs/9il
bP/YpWz/2KVs/9ilbP/YpWz/2KVs/9ilbP/YpWz/2KVs/9elbf/WpG7/1KRv/9OjcP/QonH/z6Jy/8+i
c//PonL/0KJx/9OjcP/UpG//1qRu/9elbf/YpWz/2KVs/9ilbP/YpWz/2KVs/9ilbP/YpWz/2KVs/9il
bP/YpWz/2KVs/9ilbP/YpWz/2KVs/9ilbP/YpWz/2KVs/9ilbP/Ypm7/2ahx/9ilbP8AAAAmAAAAAAAA
AAAAAAAm2adt/9qqcf/ZqG//2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mn
bf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mn
bf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mn
bf/Zp23/2adt/9mnbf/Zp23/2adt/9mnbf/Zp23/2adt/9mob//aqnH/2adt/wAAACYAAAAAAAAAAAAA
ACbaqW7/26xy/9qqcP/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qp
bv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qp
bv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qp
bv/aqW7/2qlu/9qpbv/aqW7/2qlu/9qpbv/aqW7/2qpw/9uscv/aqW7/AAAAJgAAAAAAAAAAAAAAJtur
cP/crnT/26xy/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9ur
cP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9ur
cP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/bq3D/26tw/9ur
cP/bq3D/26tw/9urcP/bq3D/26tw/9urcP/brHL/3K50/9urcP8AAAAmAAAAAAAAAAAAAAAm3Kxx/92v
df/crXP/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9ys
cf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9ys
cf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9yscf/crHH/3Kxx/9ys
cf/crHH/3Kxx/9yscf/crHH/3Kxx/9ytc//dr3X/3Kxx/wAAACYAAAAAAAAAAAAAACbdrnL/3rB2/92v
dP/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92u
cv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92u
cv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92ucv/drnL/3a5y/92u
cv/drnL/3a5y/92ucv/drnL/3a90/96wdv/drnL/AAAAJgAAAAAAAAAAAAAAJt6wc//fsnf/3rF1/96w
c//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96w
c//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96w
c//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96wc//esHP/3rBz/96w
c//esHP/3rBz/96wc//esXX/37J3/96wc/8AAAAmAAAAAAAAAAAAAAAm37F0/+CzeP/fsnb/37F0/9+x
dP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+x
dP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+x
dP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+xdP/fsXT/37F0/9+x
dP/fsXT/37F0/9+ydv/gs3j/37F0/wAAACYAAAAAAAAAAAAAACTgsnX/4bV6/+Czd//gsnX/4LJ1/+Cy
df/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cy
df/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cy
df/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cydf/gsnX/4LJ1/+Cy
df/gsnX/4LN3/+G0ef/gsnX/AAAAJAAAAAAAAAAAAAAAHOCzdf3iuHv/4bV3/+G0df/htHX/4bR1/+G0
df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0
df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0
df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0df/htHX/4bR1/+G0
df/htXf/4rh7/+Czdf0AAAAcAAAAAAAAAAAAAAAO161x3OS6f//juHv/4rZ4/+K2eP/itnj/4rZ4/+K2
eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2
eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2
eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+K2eP/itnj/4rZ4/+O4
e//kun//161x3AAAAA4AAAAAAAAAAAAAAAPFonBi5Lp9/+S8gf/kvIH/5LqB/+S6gP/kuoD/5LqA/+S6
gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6
gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6
gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gP/kuoD/5LqA/+S6gf/kvIH/5LyB/+S6
ff/Go3BlAAAAAwAAAAAAAAAAAAAAAAAAAAPKo2pR3bJ0zOK2d/rjt3f/47d3/+O3d//jt3f/47d3/+O3
d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+O3
d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+O3
d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+O3d//jt3f/47d3/+K2d/rdsnTMyqNqUQAA
AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADjt3cA47d3AOO3dwDjt3cA47d3AOO3dwDjt3cA47d3AOO3dwDjt3cA47d3AOO3
dwDjt3cA47d3AOO3dwDjt3cA47d3AOO3dwDjt3cA47d3AOO3dwDjt3cA47d3AOO3dwDjt3cA47d3AOO3
dwDjt3cA47d3AOO3dwDjt3cA47d3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/////////4MAAAAAAAABggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAA
AAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAA
ACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAA
AAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAA
ACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAA
AAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAA
ACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACCAAAAAAAAAIIAA
AAAAAAAggAAAAAAAACCAAAAAAAAAIIAAAAAAAAAggAAAAAAAACDAAAAAAAAAYP/////////g////////
/+A=
</value>
</data>
</root>

226
WeatherApp/Form2.Designer.cs generated

@ -0,0 +1,226 @@ @@ -0,0 +1,226 @@
namespace WeatherApp
{
partial class Form2
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.zipcode = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.refresh = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.features = new System.Windows.Forms.ComboBox();
this.label5 = new System.Windows.Forms.Label();
this.tempcolor = new System.Windows.Forms.ComboBox();
this.label6 = new System.Windows.Forms.Label();
this.tempbackcolor = new System.Windows.Forms.ComboBox();
this.label7 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(246, 54);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(53, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Zip Code:";
//
// zipcode
//
this.zipcode.Location = new System.Drawing.Point(305, 51);
this.zipcode.Name = "zipcode";
this.zipcode.Size = new System.Drawing.Size(101, 20);
this.zipcode.TabIndex = 1;
//
// button1
//
this.button1.Location = new System.Drawing.Point(162, 161);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(95, 23);
this.button1.TabIndex = 2;
this.button1.Text = "Update Settings";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(116, 9);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(215, 25);
this.label2.TabIndex = 3;
this.label2.Text = "WeatherApp Settings";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(10, 51);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(73, 13);
this.label3.TabIndex = 4;
this.label3.Text = "Refresh Rate:";
//
// refresh
//
this.refresh.FormattingEnabled = true;
this.refresh.Items.AddRange(new object[] {
"5",
"15",
"30",
"60"});
this.refresh.Location = new System.Drawing.Point(89, 51);
this.refresh.Name = "refresh";
this.refresh.Size = new System.Drawing.Size(101, 21);
this.refresh.TabIndex = 5;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(194, 54);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(28, 13);
this.label4.TabIndex = 6;
this.label4.Text = "mins";
//
// features
//
this.features.FormattingEnabled = true;
this.features.Items.AddRange(new object[] {
"Yes",
"No"});
this.features.Location = new System.Drawing.Point(89, 103);
this.features.Name = "features";
this.features.Size = new System.Drawing.Size(101, 21);
this.features.TabIndex = 9;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(8, 107);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(75, 13);
this.label5.TabIndex = 8;
this.label5.Text = "Enable Extras:";
//
// tempcolor
//
this.tempcolor.FormattingEnabled = true;
this.tempcolor.Items.AddRange(new object[] {
"Black",
"Green",
"Pink",
"Purple",
"Red",
"Yellow",
"White"});
this.tempcolor.Location = new System.Drawing.Point(89, 77);
this.tempcolor.Name = "tempcolor";
this.tempcolor.Size = new System.Drawing.Size(101, 21);
this.tempcolor.TabIndex = 11;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(19, 77);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(64, 13);
this.label6.TabIndex = 10;
this.label6.Text = "Temp Color:";
//
// tempbackcolor
//
this.tempbackcolor.FormattingEnabled = true;
this.tempbackcolor.Items.AddRange(new object[] {
"Black",
"Green",
"Pink",
"Purple",
"Red",
"Yellow",
"White"});
this.tempbackcolor.Location = new System.Drawing.Point(305, 78);
this.tempbackcolor.Name = "tempbackcolor";
this.tempbackcolor.Size = new System.Drawing.Size(101, 21);
this.tempbackcolor.TabIndex = 13;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(207, 80);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(92, 13);
this.label7.TabIndex = 12;
this.label7.Text = "Temp Back Color:";
//
// Form2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(426, 198);
this.Controls.Add(this.tempbackcolor);
this.Controls.Add(this.label7);
this.Controls.Add(this.tempcolor);
this.Controls.Add(this.label6);
this.Controls.Add(this.features);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.refresh);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.button1);
this.Controls.Add(this.zipcode);
this.Controls.Add(this.label1);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Form2";
this.Text = "WeatherApp Settings";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox zipcode;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox refresh;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox features;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox tempcolor;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.ComboBox tempbackcolor;
private System.Windows.Forms.Label label7;
}
}

50
WeatherApp/Form2.cs

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
namespace WeatherApp
{
public partial class Form2 : Form
{
Form opener;
public Form2(Form parentForm)
{
InitializeComponent();
opener = parentForm;
zipcode.Text = Properties.Settings.Default.zipcode;
refresh.Text = Properties.Settings.Default.refresh;
features.Text = Properties.Settings.Default.features;
tempcolor.Text = Properties.Settings.Default.tempcolor;
tempbackcolor.Text = Properties.Settings.Default.tempbackcolor;
}
private void button1_Click(object sender, EventArgs e)
{
Properties.Settings.Default.zipcode = zipcode.Text;
Properties.Settings.Default.refresh = refresh.Text;
Properties.Settings.Default.features = features.Text;
Properties.Settings.Default.tempcolor = tempcolor.Text;
Properties.Settings.Default.tempbackcolor = tempbackcolor.Text;
Properties.Settings.Default.Save();
MessageBox.Show("Your new settings will be applied in " + Properties.Settings.Default.refresh + " mins!");
//System.Diagnostics.Process.Start(Application.StartupPath + "\\WeatherApp.exe");
//opener.Close();
this.Close();
}
}
}

120
WeatherApp/Form2.resx

@ -0,0 +1,120 @@ @@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

2468
WeatherApp/HtmlAgilityPack.XML

File diff suppressed because it is too large Load Diff

BIN
WeatherApp/HtmlAgilityPack.dll

Binary file not shown.

BIN
WeatherApp/HtmlAgilityPack.pdb

Binary file not shown.

38
WeatherApp/Program.cs

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
namespace WeatherApp
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Process thisProc = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(thisProc.ProcessName);
if (processes.Length > 1)
{
MessageBox.Show("WeatherApp is already running.\rPlease look in your system tray!");
/*Application.Run(new Form1());*/
Application.Exit();
}
else
{
Application.Run(new Weather());
}
}
}
}

36
WeatherApp/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute v