Project tutorial

WhatYouNeed © GPL3+

Here's your solution to knowing WhatYouNeed for the reported weather.

  • 302 views
  • 0 comments
  • 3 respects

Components and supplies

Screen%20shot%202016 07 29%20at%204.35.08%20pm
Onion Corporation Omega2 Plus
The Omega2 should also work, although I didn't test if it has enough memory
×1
45 68c0d8d9 d843 4d87 8547 fc508e5279dd large
Onion Corporation Expansion Dock
This is optional in the final product, but some Onion dock (with a micro-USB port) may be needed to power the Onion when programming it
×1
Ardgen 101
Arduino 101 & Genuino 101
×1
128x64 Monochrome SPI OLED
Just go to amazon.com and search for "128x64 SPI OLED" and you will be flooded with results that look exactly like this one. If you find a cheaper offer than the one listed here, by all means take it!
×1
09067 action 01
SparkFun Serial Enabled 16x2 LCD - White on Black 3.3V
The Arduino 101 runs on 3.3v so for best performance a 3.3v LCD is recommend, but a regular 5v LCD still works fine.
×1
Potentiometer
Any generic (10k) Potentiometer would work
×1
220Ω resistor
×1
Male/Male Jumper wires
26 is the minimum amount that I used
×26

Apps and online services

About this project

What is this?

WhatYouNeed is taking reporting the weather to the next level. Not only does it give you the typical weather report, it will let you know what you need to do based on that data. For example, what do you do when the reported UV index is 7? A weather station won’t tell you that the EPA recommends you reduce your sun exposure from 10am-4pm, wear a wide-brimmed hat, sunglasses, and re-apply SPF 30+ sunblock every 2 hours. But this device does! It’ll let you know WhatYouNeed.

How does it work?

Simple description: detailed weather data like the temperature, humidity, cloud cover, UV index, and weather summary are taken and converted to human interpretable information. The biggest data point in the list (and for summer activity) is the UV index. This number can determine many things that you need, and can be considered a health hazard if not approached appropriately.

A “technical” description: weather data from DarkSky.net is taken through a Losant workflow, which sends the data to the Omega2(+) via a MQTT connection. The Omega then parses the JSON data from DarkSky.net and passes it to the Arduino (101) through a wired serial connection (TX and RX pins). Finally, the Arduino takes the parsed information and drives the user interface to let the user know what they need.

The next two sections will go show how to make/setup your WhatYouNeed device.

Hardware setup

Using the Fritizing breadboard diagrams in the attachments section, put together the circuit. Although the image shows a Omega2, the 2+ works fine. In fact, I developed this device with a Omega2+. The Arduino 101 is not optional though. WhatYouNeed uses the on board RTC to calculate the time for some time sensitive data (like the sun exposure notice), and telling the time too!

After putting the parts together, do make sure the potentiometer is turned all the way to the right, putting it at the 0 position.

If you haven’t already, power up and connect to the Omega (through serial or ssh). You can follow the instruction on Onion’s getting started page, or you can set it up yourself. The goal is just to get to the Omega’s command line, and have it connected to the internet.

Software

This section will be the most complex, but it’s also the most important. Here’s a summary of what we will do in this section:

1. Get and setup a DarkSky.net developer account

2. Get, setup, and connect a Losant account to the Omega

3. Getting the python code onto the Omega and installing all dependencies

4. Uploading the Arduino code the Arduino, installing dependencies, and configuring the Adafruid_SSD1306.h file

Let’s start!

Go to https://darksky.net/dev and click the “TRY FOR FREE” or “SIGN UP” button to get started.

DarkSky lets you have up to 1000 API calls for free per day, which is means you can make an API call every two minutes and still have 250 calls left per day. Once you do make your account take note of API secret key, you will need it when calling the DarkSky API. I suggest creating a text document to store this key and the other ones that will be created during the Losant setup. DarkSky’s API call needs your latitude and longitude in order to return the correct information. Simply look it up or use websites like My NASA Data to find out what your latitude and longitude are, you can also store this data in the text document you created earlier. Next, you’ll setup your Losant account, create a Losant device, and a Losant workflow to call and transfer data from DarkSky.

Go to https://www.losant.com/ and click the “SIGN UP” button to get started.

Once signed in, you may be prompted with a getting started page. You can go through the tutorials and getting started information if you like. When you’re ready, navigate your way to your “Sandbox” and create a new application:

Give it a name (like WhatYouNeed) and (optionally) a description, then click “Create Application”. You will then be brought to your application dashboard, which would look something like this:

Your dash board will show the name of your application (a), your devices you’ve created for this application (b), your application ID (c), your payload usage (d) which tells you the amount of data you’ve sent (free accounts get to send 1,000,000 payloads/month which is way more than enough), your workflows (e) which are the processes that you create to tell Losant what to do, and your security tab which you will use to create access keys to your device.

First, let’s create a device for your application by clicking the green “Add” button in the device section. Select “Create Blank Device” in the next page to start creating your device. In the “DEVICE OVERVIEW” section, give your device a name (like Omega) and (optionally) a description. Click on the “Create Device” button when you’re ready to continue, you will be brought to the device’s dashboard which kind of resembles the application dashboard.

Now that you have a Losant device, we’ll gather all of the security keys and IDs. First, copy your device’s ID (located where the Application ID used to be) in the top right corner and put it into that text document. Then, go to the security page by clicking on the security tab. Once there, click on the green “+Add Access Key” button in the top right corner to create the device’s security credentials. In the next page, you have the option to give the access key a description and to “DEFINE ACCESS RESTRICTIONS”, all of these options are optional. Once you’re satisfied with the data on this page, click on the “Create Access Key” button to get your credentials. Losant will not save the data so you will have to copy it down somewhere (hint: like that text document. Seriously, I’ve wasted a lot of time having to recreate the access keys and ID data after losing them from deleting codes or other files). Check the box at the end of the pop-up and close it after you’ve finished copying the data. Next, you’ll create the Losant workflow that will gather the data from DarkSky.

Using the “Workflows” tab or navigating back to the application dashboard, create a new workflow. Give it a name and (optionally) a description, and click “Create Workflow”. Workflows are a simple drag-n-drop interface that lets you build “code” instructions for Losant to follow. On the left of the interface there is a “Node Palette” pane, from that palette you will drag nodes (pieces of code) out and drop them onto the build area (the center pane). Our workflow’s pseudo code would look something like this:

1. Initial trigger via a timer (fires every two minutes) or via a virtual button (fires whenever you press it)

2. Call a HTTP API request to DarkSky

3. Take certain parts of that data and send it to the device using a “Device Command”

4. Add a small one second delay

5. And use a switch node (works the same as the switch statement in most programming languages) to send (also using a “Device Command”) the “summary” DarkSky data point as an integer (instead of a long string)

To create the workflow (based on the pseudo code) start by dragging out both a “Timer” trigger and a “Virtual Button” trigger out onto the build area:

The Virtual button doesn’t need any configuring but the Timer does (trigger interval). Select the Timer node to configure and change the interval to “Run Once Every” two minutes:

Next, drag out a HTTP node from the “Data” section in the node palette. In the node’s configuration page, paste https://api.darksky.net/forecast/YOUR_DARKSKY_API_KEY/YOUR_LATITUDE/YOUR_LONGITUDE into the “URL Template” text box (the one with the red warning sign highlighting it), replacing the YOUR_DARKSKY_API_KEY, YOUR_LATITUDE, and YOUR_LONGITUDE with the corresponding data you kept in that text document:

Then scroll down to the “RESPONSE” section and put “weather” in the “Payload Path to Store Response” text box. Once you’ve configured the HTTP node, draw connection lines from the Timer and Virtual Button nodes’ (diamond shaped) ports to the HTTP node’s (square shaped) port:

Next, drag a “Device Command” node (from the “Outputs” section) and connect it to the HTTP node. Scroll down to the “COMMAND” section and enter “update” into the “Command Name template” and enter this JSON code into the “Command payload JSON Template”:

{
 "temp": {{ weather.body.currently.temperature }},
 "uvin": {{ weather.body.currently.uvIndex }},
 "humi": {{ weather.body.currently.humidity }},
 "clco": {{ weather.body.currently.cloudCover }}
} 

After that, add a small delay of one second after the Device Command. We add this because you want to give the connected device (your omega) enough time to receive the data and prep for the next data point. To do this, drag out a “Delay” node from the “Logic” section and connect it to the Device Command. Configure it to be a one second delay.

Next, add, connect, and configure a “Switch” node (also located in the “Logic” section). Paste: {{ weather.body.currently.icon }} into the “Switch template” text box, and then start adding the “CASES”. Here’s a list of the cases you need, make sure you copy down the text exactly as it is listed:

1. clear-day

2. clear-night

3. rain

4. snow

5. sleet

6. wind

7. fog

8. cloudy

9. partly-cloudy-day

10. partly-cloudy-night

11. hail

12. thunderstorm

13. tornado

Finally, connect a “Device Command” node to every case in the build area and configure them to have a “Command Name Template” value of “Summary” and a “Command Payload JSON Template” of {"sum":x} where x is the case’s number in the list above (x should not be entered as a string, it’s an integer). Once you’ve finished all of that, click on the green “Deploy Workflow” button in the top right corner. This will save and run your workflow.

The next part will be to get the python code up and running it on your Omega. At this point, I’m assuming you’ve already gone through the getting started guide (here’s the link again) and are somewhat familiar with using the onion. Open a command line connection with the Omega (if you haven’t already) and transfer the python code file (in the attachments section) onto the Omega. Next, you need to install all of the dependencies, this step needs your Omega to be connected to the internet (which it should be if you’ve gone through the getting started guide). Run opkg update and then install these packages:

  • python
  • git
  • git-http
  • ca-bundle
  • python-pyserial
  • python-pip

Then use python pip to install a module called “paho-mqtt”: pip install paho-mqtt. If you get an error saying that the “setup.py egg_info” failed with error code 1, you simply need to pip install –-upgrade setuptools and then try again.

Next, copy and install the Losant MQTT python module:

git clone https://github.com/Losant/losant-mqtt-python.git
cd Losant-mqtt-python
python setup.py install 

Once you’re done with installing the dependencies, simply navigate to the location of the python script (you downloaded from the attachments section) and run it with python index.py, don’t worry the Python code will wait for the Arduino code to run before it does.

Finally, the last thing you need to do is get the Arduino code uploaded and running. This part is pretty simple, just download the Arduino code from the attachments section and get it ready to upload. Once your there, download these dependency libraries (or make sure they are downloaded) from your library manager:

  • LiquidCrystal
  • Adafruit_SSD1306
  • Adafruit_GFX
  • SPI

Also make sure that you have downloaded the Intel 32-bit Arduino boards, which is basically the Arduino 101 board (Intel Curie), from your boards manager. By downloading the Intel Curie board package, you also automatically download the Arduino 101 libraries (like CurieTime which is used in the code).

Finally, the last thing you need to do is make a tiny edit to the Adafruit_SSD1306.h file to make the library work properly with 128x64 OLED display. This step is almost always skipped in tutorials I’ve used, but it is the most critical in making sure your OLED functions properly. Navigate to your Arduino sketchbook and open libraries >> Adafruit_SSD1306 >> Adafruit_SSD1306.h. Once opened, scroll to line 74 (or around the area) and find the (uncommented line) #define SSD1306_128_32. This line basically tells the library that the display we are using is 128x32, which is wrong! So, we comment out this line and uncomment the line above it (73 for me). This line says #define SSD1306_128_64, so now the library knows that we are using a 128x64 display. Save and close the file. Now everything should be setup and ready to run!

Demos and some operation notes

Here is a little gallery of the different functions and things you may see while operating the device. Upon initial upload, your will see this:

Do what it’s asking you to do, open a serial port (which can be easily done through the Arduino IDE). If you are shown a blank screen for more than 5sec, press “y” and hit <enter> to submit it. This will prompt the setup process to start again so you can setup your device. This setup process is mainly for adjusting the time on the Arduino and setting your temperature preference.

Once you’ve finished the setup process in the Serial monitor, you will be brought to the main display screen where you can use the potentiometer to scroll through the list to see WhatYouNeed:

As you may have noticed, where were 13 different possible summaries from DarkSky. These summaries have each been given an icon and will display when appropriate, letting this device function even when summer is over.

End Notes

So, there you have it! A device that will not only give you the weather, but also WhatYouNeed based on it. You will never have to face the “bring the umbrella?” dilemma or the “oh wait, I need sunglasses?” situation ever again!

Thank you for taking interest in this project!

Please leave feedback in the comments section.

Thanks!

Schematics

Breadboard image of the setup. This image has the displays covering some of the power-bus wires. The other image will show the displays off of the breadboard, allowing you to see the wires and their placement.
Fritz bbo wg7calyi4w
Main (uncovered)
Breadboard image of the setup. This image has the displays not covering the power-bus wires.
Fritz bb 4mq8txvmnu

Code

Main Arduino codeArduino
What else do you think it is?
#include <LiquidCrystal.h>
#include <Adafruit_SSD1306.h>
#include <CurieTime.h>
#include <SPI.h>


//OLED
#define oledMOSI 7 //D1
#define oledCLK 8 //D0
#define oledDC 6
#define oledCS 10
#define oledRST 13
Adafruit_SSD1306 display(oledMOSI, oledCLK, oledDC, oledRST, oledCS);
#if (SSD1306_LCDHEIGHT != 64)
#error("height incorrect, please fix Adafruit_SSD1306");
#endif

//LCD
#define bri 9
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//RTC
unsigned int pmin = 0; //previous min, used to test if need to update time

//Serial
int inin = 0;
String stin = "";
int data[5];

//UI
#define scroll A0
unsigned int tshirt = 70;
unsigned int jacket = 40;
unsigned long prevMil = 0;
boolean wn[11] = {false, false, false, false, false, false, false, false, false, false, false};
int pages = 1, prevPage = 1, curPage = 1;
boolean first = false;

#define darkskyWidth 47
static const unsigned char PROGMEM darkskyIcon[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x1e, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x30, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x40, 0x2, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x2, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf, 0x80, 0x0,
  0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0,
  0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0,
  0x0, 0x8, 0x0, 0x3f, 0xe0, 0x0,
  0x0, 0x10, 0x0, 0x7f, 0xf0, 0x0,
  0x0, 0x10, 0x0, 0x7f, 0xf0, 0x0,
  0x0, 0x30, 0x0, 0xff, 0xf8, 0x0,
  0x0, 0x70, 0x0, 0xff, 0xfc, 0x0,
  0x0, 0xe0, 0x1, 0xf, 0xfe, 0x0,
  0x1, 0xe0, 0x0, 0x1f, 0xfe, 0x0,
  0x1, 0xe0, 0x0, 0x1f, 0xff, 0x0,
  0x3, 0xe0, 0x0, 0x3f, 0xff, 0x80,
  0x7, 0xe0, 0x0, 0x3f, 0xff, 0x80,
  0x7, 0xe0, 0x0, 0x7f, 0xff, 0xc0,
  0xf, 0xe0, 0x0, 0x7f, 0xff, 0xe0,
  0xf, 0xe0, 0x0, 0xff, 0xff, 0xe0,
  0x1f, 0xe0, 0x0, 0xff, 0xff, 0xf0,
  0x1f, 0xe4, 0x0, 0xff, 0xff, 0xf0,
  0x3f, 0xfc, 0x1, 0xff, 0xff, 0xf0,
  0x3f, 0xfc, 0x1, 0xff, 0xff, 0xf8,
  0x3f, 0xfc, 0x1, 0xff, 0xff, 0xf8,
  0x7f, 0xfc, 0x1, 0xff, 0xff, 0xf8,
  0x7f, 0xfc, 0x1, 0xff, 0xff, 0xfc,
  0x7f, 0xfc, 0x1, 0xff, 0xff, 0xfc,
  0x7f, 0xfc, 0x1, 0x3f, 0xff, 0xfc,
  0x7f, 0xfe, 0x0, 0x3f, 0xff, 0xfc,
  0x7f, 0xfe, 0x0, 0x3f, 0xff, 0xfc,
  0x7f, 0xfe, 0x0, 0x7f, 0xff, 0xfc,
  0x7f, 0xfe, 0x0, 0x7f, 0xff, 0xfc,
  0x7f, 0xfe, 0x0, 0x7f, 0xff, 0xfc,
  0x7f, 0xff, 0x0, 0x7f, 0xff, 0xfc,
  0x7f, 0xff, 0x0, 0x7f, 0xff, 0xfc,
  0x7f, 0xff, 0x20, 0x7f, 0xff, 0xf8,
  0x3f, 0xff, 0xe0, 0x7f, 0xff, 0xf8,
  0x3f, 0xff, 0xe0, 0xff, 0xff, 0xf8,
  0x3f, 0xff, 0xe0, 0xff, 0xff, 0xf8,
  0x1f, 0xff, 0xf0, 0xff, 0xff, 0xf0,
  0x1f, 0xff, 0xf0, 0xff, 0xff, 0xf0,
  0xf, 0xff, 0xf0, 0xff, 0xff, 0xe0,
  0x7, 0xff, 0xf0, 0xff, 0xff, 0xc0,
  0x7, 0xff, 0xf8, 0xff, 0xff, 0xc0,
  0x3, 0xff, 0xf8, 0xff, 0xff, 0x80,
  0x1, 0xff, 0xfc, 0x7f, 0xff, 0x0,
  0x0, 0xff, 0xfc, 0x7f, 0xfe, 0x0,
  0x0, 0x7f, 0xfe, 0x7f, 0xfc, 0x0,
  0x0, 0x3f, 0xfe, 0x7f, 0xf8, 0x0,
  0x0, 0xf, 0xff, 0x7f, 0xe0, 0x0,
  0x0, 0x3, 0xff, 0x7f, 0x80, 0x0,
  0x0, 0x0, 0xff, 0xbe, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x80, 0x0, 0x0
};

static const unsigned char PROGMEM usbIcon[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xfe, 0x0, 0x1f, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xfc, 0x0, 0xf, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x3f, 0xe0, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x7, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x3f, 0xf0, 0x0, 0xf, 0xff, 0xc0, 0x0, 0x3, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x3, 0xff, 0xfe, 0x0, 0x1f, 0xff, 0x80, 0x0, 0x0, 0xff, 0x80, 0x0, 0x3c, 0x0, 0x0, 0x0,
  0x3, 0xff, 0xff, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0,
  0xf, 0xff, 0xff, 0x80, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0,
  0xf, 0xff, 0xff, 0xc0, 0x3f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0,
  0x3f, 0xff, 0xff, 0xe0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0x0,
  0x3f, 0xff, 0xff, 0xe0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0x0,
  0x7f, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xf8, 0x0,
  0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xfc, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x3f, 0xff, 0xff, 0xf0, 0x0, 0x3, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xc0, 0x0,
  0x3f, 0xff, 0xff, 0xe0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xc0, 0x0,
  0xf, 0xff, 0xff, 0xc0, 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0,
  0xf, 0xff, 0xff, 0x80, 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xf0, 0x0, 0x0,
  0x3, 0xff, 0xff, 0x0, 0x0, 0x0, 0x3f, 0xfc, 0x0, 0xf, 0xff, 0xff, 0x3f, 0x0, 0x0, 0x0,
  0x3, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, 0xf, 0xff, 0xff, 0x3e, 0x0, 0x0, 0x0,
  0x0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0xf, 0xff, 0xff, 0x30, 0x0, 0x0, 0x0,
  0x0, 0x7f, 0xf0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x80, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xf8, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xfc, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdf, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0
};

static const unsigned char PROGMEM ClearDay[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x2, 0x0, 0x40, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x0, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x1, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x83, 0xc0, 0x0, 0x0,
  0x0, 0xc, 0x7, 0x87, 0xc0, 0x0, 0x0,
  0x0, 0xe, 0xf, 0x87, 0xc0, 0x10, 0x0,
  0x0, 0xf, 0xf, 0x87, 0xc0, 0x30, 0x0,
  0x0, 0xf, 0x87, 0x83, 0x80, 0xf0, 0x0,
  0x0, 0xf, 0x80, 0x0, 0x1, 0xe0, 0x0,
  0x0, 0xf, 0x80, 0xfc, 0x3, 0xe0, 0x0,
  0x0, 0x7, 0x8f, 0xff, 0xc3, 0xe0, 0x0,
  0x6, 0x3, 0x1f, 0xff, 0xe3, 0xe0, 0x0,
  0x3, 0xc0, 0x7f, 0xff, 0xf9, 0xc0, 0x0,
  0x3, 0xf0, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x1, 0xf1, 0xff, 0xff, 0xfe, 0x3, 0xe0,
  0x1, 0xf3, 0xff, 0xff, 0xff, 0xf, 0xc0,
  0x0, 0xf3, 0xff, 0xff, 0xff, 0x1f, 0xc0,
  0x0, 0x67, 0xff, 0xff, 0xff, 0x9f, 0x80,
  0x0, 0x7, 0xff, 0xff, 0xff, 0x9f, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xc4, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x7f, 0x8f, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x3f, 0xdf, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x1f, 0xdf, 0xff, 0xff, 0xff, 0xe7, 0x80,
  0xf, 0xdf, 0xff, 0xff, 0xff, 0xef, 0xe0,
  0x3, 0x9f, 0xff, 0xff, 0xff, 0xef, 0xf0,
  0x0, 0x1f, 0xff, 0xff, 0xff, 0xef, 0xc0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xc7, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0xef, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x3, 0xf7, 0xff, 0xff, 0xff, 0x9c, 0x0,
  0x7, 0xf7, 0xff, 0xff, 0xff, 0xbf, 0x0,
  0x1f, 0xf3, 0xff, 0xff, 0xff, 0x3f, 0x0,
  0x1, 0xe1, 0xff, 0xff, 0xfe, 0x3f, 0x80,
  0x0, 0x1, 0xff, 0xff, 0xfc, 0x1f, 0xc0,
  0x0, 0x0, 0x7f, 0xff, 0xf8, 0x0, 0x0,
  0x0, 0x2, 0x3f, 0xff, 0xf3, 0x80, 0x0,
  0x0, 0xf, 0x9f, 0xff, 0xc7, 0xc0, 0x0,
  0x0, 0xf, 0x83, 0xff, 0x7, 0xe0, 0x0,
  0x0, 0x1f, 0x80, 0x0, 0x7, 0xe0, 0x0,
  0x0, 0x3f, 0x7, 0x3, 0x83, 0xe0, 0x0,
  0x0, 0x3e, 0xf, 0x87, 0xc0, 0xf0, 0x0,
  0x0, 0x60, 0xf, 0x87, 0xc0, 0x30, 0x0,
  0x0, 0x0, 0xf, 0x83, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x83, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x1, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x6, 0x0, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x6, 0x0, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x4, 0x0, 0x40, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};
static const unsigned char PROGMEM ClearNight[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x70, 0x0, 0x80, 0x0, 0x0,
  0x0, 0x3, 0xe0, 0x0, 0xc0, 0x0, 0x0,
  0x0, 0xf, 0xc0, 0x0, 0xc0, 0x0, 0x0,
  0x0, 0x1f, 0x80, 0x1, 0xc0, 0x0, 0x0,
  0x0, 0x3f, 0x80, 0x1, 0xe0, 0x0, 0x0,
  0x0, 0x7f, 0x0, 0x7, 0xf8, 0x0, 0x0,
  0x0, 0xff, 0x0, 0x7f, 0xff, 0x80, 0x0,
  0x1, 0xff, 0x0, 0x1f, 0xfc, 0x0, 0x0,
  0x3, 0xfe, 0x0, 0x3, 0xe0, 0x0, 0x0,
  0x7, 0xfe, 0x0, 0x1, 0xc0, 0x0, 0x0,
  0xf, 0xfe, 0x0, 0x0, 0xc0, 0x6, 0x0,
  0xf, 0xfc, 0x0, 0x0, 0xc0, 0x6, 0x0,
  0x1f, 0xfc, 0x0, 0x0, 0x80, 0x1f, 0x80,
  0x1f, 0xfc, 0x0, 0x0, 0x80, 0x3f, 0xc0,
  0x3f, 0xfc, 0x0, 0x0, 0x0, 0x6, 0x0,
  0x3f, 0xfc, 0x0, 0x0, 0x0, 0x6, 0x0,
  0x7f, 0xfc, 0x0, 0x0, 0x0, 0x4, 0x0,
  0x7f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x7f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x7f, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0,
  0x7f, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0,
  0x7f, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0,
  0x7f, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0,
  0x3f, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0,
  0x3f, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0,
  0x3f, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0,
  0x1f, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0,
  0x1f, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0,
  0xf, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0,
  0x7, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0x7, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xe0, 0xc, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x7, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xff, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0
};
static const unsigned char PROGMEM Rain[] =
{
  0x0, 0x0, 0x0, 0x0, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf, 0xfe, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x3f, 0xff, 0x80, 0x0,
  0x0, 0x0, 0x0, 0x7e, 0x1f, 0xc0, 0x0,
  0x0, 0x0, 0x1, 0xf0, 0x3, 0xe0, 0x0,
  0x0, 0x0, 0xe1, 0xe0, 0x0, 0xf0, 0x0,
  0x0, 0x7, 0xff, 0xc0, 0x0, 0x78, 0x0,
  0x0, 0x1f, 0xff, 0x80, 0x0, 0x38, 0x0,
  0x0, 0x3f, 0x1f, 0x0, 0x0, 0x3c, 0x0,
  0x0, 0x7c, 0x7, 0x0, 0x0, 0x1c, 0x0,
  0x0, 0x70, 0x0, 0x0, 0x0, 0x1e, 0x0,
  0x0, 0xf0, 0x0, 0x0, 0x0, 0xe, 0x0,
  0x0, 0xe0, 0x0, 0x0, 0x0, 0xe, 0x0,
  0x0, 0xe0, 0x0, 0x0, 0x0, 0xe, 0x0,
  0x1, 0xc0, 0x0, 0x0, 0x0, 0xe, 0x0,
  0x3, 0xc0, 0x0, 0x0, 0x0, 0xf, 0x80,
  0xf, 0xc0, 0x0, 0x0, 0x0, 0xf, 0xe0,
  0x1f, 0x80, 0x0, 0x0, 0x0, 0x3, 0xf0,
  0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
  0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c,
  0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
  0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
  0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c,
  0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c,
  0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38,
  0x1e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8,
  0x1f, 0xc0, 0x0, 0x0, 0x0, 0x3, 0xf0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x4, 0x0, 0x0, 0x8, 0x0, 0x0,
  0x0, 0x1c, 0x0, 0x0, 0x18, 0x4, 0x0,
  0x0, 0x3c, 0x0, 0x0, 0x38, 0xe, 0x0,
  0x0, 0x7c, 0x0, 0x0, 0x38, 0x3e, 0x0,
  0x0, 0xfc, 0x0, 0x0, 0x38, 0x7e, 0x0,
  0x0, 0xfc, 0x18, 0x0, 0x0, 0x7e, 0x0,
  0x0, 0xfc, 0x38, 0x6, 0x0, 0xfc, 0x0,
  0x0, 0x7c, 0x38, 0xe, 0x0, 0xfc, 0x0,
  0x0, 0x0, 0x38, 0x3e, 0x0, 0x7c, 0x0,
  0x0, 0x0, 0x0, 0x7e, 0x0, 0x38, 0x0,
  0x0, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7c, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7c, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
};
static const unsigned char PROGMEM Snow[] =
{
  0x0, 0x0, 0x3, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0xc3, 0x86, 0x0, 0x0,
  0x0, 0x1, 0xf3, 0x9f, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0,
  0x0, 0xc0, 0x1f, 0xf0, 0xc, 0x0,
  0x0, 0xe0, 0x7, 0xc0, 0xe, 0x0,
  0x0, 0xe0, 0x3, 0x80, 0xe, 0x0,
  0x40, 0xe0, 0x3, 0x80, 0xe, 0xc,
  0xf0, 0xe0, 0x3, 0x80, 0xe, 0x1e,
  0xfc, 0xe0, 0x3, 0x80, 0xe, 0x7e,
  0x7f, 0xe0, 0x3, 0x80, 0xf, 0xfc,
  0x1f, 0xe0, 0xf, 0xe0, 0xf, 0xf0,
  0x7, 0xe0, 0x3f, 0xf0, 0xf, 0xc0,
  0x7, 0xf8, 0x7f, 0xfc, 0x3f, 0xc0,
  0xf, 0xff, 0xfc, 0x7f, 0xff, 0xe0,
  0x1f, 0xff, 0xf0, 0x1f, 0xfb, 0xf0,
  0x7e, 0x1f, 0xc0, 0x7, 0xf0, 0xf8,
  0x78, 0x7, 0x80, 0x3, 0xc0, 0x7c,
  0x30, 0x7, 0x3, 0x83, 0xc0, 0x18,
  0x0, 0x7, 0x7, 0xc1, 0xc0, 0x0,
  0x0, 0x7, 0xf, 0xe1, 0xc0, 0x0,
  0x0, 0x7, 0xf, 0xe1, 0xc0, 0x0,
  0x0, 0x7, 0xf, 0xe1, 0xc0, 0x0,
  0x0, 0x7, 0x7, 0xc1, 0xc0, 0x0,
  0x30, 0x7, 0x3, 0x81, 0xc0, 0x18,
  0x78, 0x7, 0x80, 0x3, 0xc0, 0x7c,
  0x7e, 0x1f, 0xc0, 0x7, 0xe0, 0xf8,
  0x1f, 0xff, 0xf0, 0x1f, 0xfb, 0xf0,
  0xf, 0xff, 0xfc, 0x7f, 0xff, 0xe0,
  0x7, 0xf8, 0x7f, 0xfc, 0x3f, 0xc0,
  0x7, 0xe0, 0x3f, 0xf8, 0xf, 0xc0,
  0x1f, 0xe0, 0xf, 0xe0, 0xf, 0xf0,
  0x7f, 0xe0, 0x3, 0x80, 0xf, 0xfc,
  0xfc, 0xe0, 0x3, 0x80, 0xe, 0x7e,
  0xf0, 0xe0, 0x3, 0x80, 0xe, 0x1e,
  0x40, 0xe0, 0x3, 0x80, 0xe, 0xc,
  0x0, 0xe0, 0x3, 0x80, 0xe, 0x0,
  0x0, 0xe0, 0x7, 0xc0, 0xe, 0x0,
  0x0, 0xc0, 0x1f, 0xf0, 0xc, 0x0,
  0x0, 0x0, 0x7f, 0xfc, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x1, 0xf3, 0x9f, 0x0, 0x0,
  0x0, 0x0, 0xc3, 0x86, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x0, 0x0, 0x0
};
static const unsigned char PROGMEM Sleet[] =
{
  0x0, 0x0, 0x0, 0x3, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x3f, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7f, 0xfe, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xff, 0xff, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xf0, 0x1f, 0x80, 0x0,
  0x0, 0x0, 0x7, 0xc0, 0x7, 0xc0, 0x0,
  0x0, 0x0, 0x7, 0x80, 0x3, 0xe0, 0x0,
  0x0, 0x1, 0xff, 0x0, 0x1, 0xe0, 0x0,
  0x0, 0x7, 0xfe, 0x0, 0x0, 0xf0, 0x0,
  0x0, 0xf, 0xfe, 0x0, 0x0, 0xf0, 0x0,
  0x0, 0x1f, 0x80, 0x0, 0x0, 0x70, 0x0,
  0x0, 0x3e, 0x0, 0x0, 0x0, 0x7c, 0x0,
  0x0, 0x3c, 0x0, 0x0, 0x0, 0x7f, 0x0,
  0x0, 0x78, 0x0, 0x0, 0x0, 0x7f, 0x80,
  0x0, 0xf0, 0x0, 0x0, 0x0, 0xf, 0xc0,
  0x7, 0xf0, 0x0, 0x0, 0x0, 0x3, 0xe0,
  0xf, 0xf0, 0x0, 0x0, 0x0, 0x1, 0xe0,
  0x1f, 0xf0, 0x0, 0x0, 0x0, 0x0, 0xf0,
  0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70,
  0x7c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70,
  0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
  0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
  0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70,
  0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
  0x78, 0x0, 0x0, 0x0, 0x0, 0x1, 0xe0,
  0x7c, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe0,
  0x3e, 0x0, 0x0, 0x0, 0x0, 0xf, 0xc0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0,
  0x0, 0x30, 0x0, 0x0, 0x0, 0x7c, 0x0,
  0x0, 0xf0, 0x0, 0x0, 0x0, 0xfc, 0x0,
  0x1, 0xf0, 0x0, 0x40, 0x1, 0xfc, 0x0,
  0x7, 0xf0, 0x0, 0x40, 0x1, 0xfc, 0x0,
  0x7, 0xf0, 0x4, 0x44, 0x1, 0xfc, 0x0,
  0xf, 0xf0, 0x6, 0x4c, 0x1, 0xfc, 0x0,
  0xf, 0xf0, 0x3, 0xf8, 0x0, 0xf8, 0x0,
  0x7, 0xe0, 0x1, 0xf0, 0x0, 0x20, 0x0,
  0x3, 0xc0, 0x1f, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xf0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xf0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x6, 0x4c, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x4, 0x44, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0
};
static const unsigned char PROGMEM Windy[] =
{
  0x0, 0x0, 0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x1f, 0xf8, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x3f, 0xfe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7f, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xfe, 0x7f, 0x80, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xf8, 0x1f, 0x80, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xf8, 0xf, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xf8, 0xf, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xf8, 0x7, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xf0, 0xf, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe0, 0xf, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0xf, 0xc0, 0x1, 0xfe, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x7, 0xff, 0x0,
  0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x7, 0xff, 0xc0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0x0, 0xf, 0xff, 0xc0,
  0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x1f, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x1f, 0x87, 0xe0,
  0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x1f, 0x3, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x1f, 0x3, 0xf0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x83, 0xf0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x83, 0xf0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x83, 0xf0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x87, 0xe0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x1f, 0xe0,
  0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x1, 0x81, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x3, 0xc0, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x7, 0xc0, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x7, 0xc0, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x7, 0xc1, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x7, 0xe3, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0
};
static const unsigned char PROGMEM Foggy[] =
{
  0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x3f, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0,
  0x7f, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x7f, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0x7f, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x3f, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xfe, 0x0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x0, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x0, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x0, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x0, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xfc, 0x0, 0x0
};
static const unsigned char PROGMEM Cloudy[] =
{
  0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x3f, 0x1, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7c, 0x0, 0x78, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf0, 0x0, 0x1e, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xc0, 0x0, 0xf, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x80, 0x0, 0x7, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x0, 0x0, 0x3, 0x80, 0x0,
  0x0, 0x1, 0xe7, 0x0, 0x0, 0x1, 0xc0, 0x0,
  0x0, 0x7, 0xfe, 0x0, 0x0, 0x0, 0xc0, 0x0,
  0x0, 0x1f, 0xfe, 0x0, 0x0, 0x0, 0xe0, 0x0,
  0x0, 0x38, 0xc, 0x0, 0x0, 0x0, 0x60, 0x0,
  0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0,
  0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0,
  0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0,
  0x0, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0,
  0x3, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0,
  0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0,
  0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xc0,
  0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe0,
  0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38,
  0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
  0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
  0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
  0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c,
  0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38,
  0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
  0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
  0x7, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xe0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0
};

static const unsigned char PROGMEM PartlyCloudyDay[] =
{
  0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x3, 0x80, 0x4, 0x0, 0x38, 0x0, 0x0,
  0x3, 0xc0, 0x0, 0x0, 0x78, 0x0, 0x0,
  0x3, 0xe0, 0x0, 0x0, 0xf8, 0x0, 0x0,
  0x1, 0xe0, 0x0, 0x0, 0xf0, 0x0, 0x0,
  0x0, 0xe0, 0x3f, 0x80, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0xff, 0xe0, 0x40, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x7, 0xe0, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0xf, 0x80, 0x3e, 0x0, 0x0, 0x0,
  0x0, 0xf, 0x0, 0x1e, 0x0, 0x0, 0x0,
  0x0, 0x1e, 0x0, 0xf, 0x0, 0x0, 0x0,
  0x0, 0x1c, 0x0, 0x7, 0x0, 0x0, 0x0,
  0x0, 0x3c, 0x0, 0x7, 0x80, 0x0, 0x0,
  0x0, 0x38, 0x0, 0x3, 0x80, 0x0, 0x0,
  0xfc, 0x38, 0x0, 0x3, 0x87, 0xe0, 0x0,
  0xfe, 0x38, 0x0, 0x3, 0x8f, 0xe0, 0x0,
  0xfc, 0x38, 0x0, 0x3, 0x87, 0xe0, 0x0,
  0x0, 0x38, 0x0, 0x3, 0xfc, 0x0, 0x0,
  0x0, 0x3c, 0x0, 0x7, 0xff, 0x0, 0x0,
  0x0, 0x1c, 0x0, 0xf, 0xff, 0xc0, 0x0,
  0x0, 0x1e, 0x0, 0x1f, 0xff, 0xe0, 0x0,
  0x0, 0xf, 0x0, 0x3e, 0x1, 0xf0, 0x0,
  0x0, 0xf, 0x80, 0x78, 0x0, 0xf8, 0x0,
  0x0, 0x7, 0xe0, 0xf0, 0x0, 0x78, 0x0,
  0x0, 0x3, 0xff, 0xf0, 0x0, 0x3c, 0x0,
  0x0, 0x0, 0xff, 0xe0, 0x0, 0x3c, 0x0,
  0x0, 0xe0, 0x7f, 0xe0, 0x0, 0x1c, 0x0,
  0x1, 0xf0, 0x7c, 0x0, 0x0, 0x1c, 0x0,
  0x3, 0xe0, 0x78, 0x0, 0x0, 0x1f, 0x0,
  0x3, 0xc0, 0x70, 0x0, 0x0, 0x1f, 0x80,
  0x3, 0x80, 0x70, 0x0, 0x0, 0x7, 0xc0,
  0x0, 0x0, 0x70, 0x0, 0x0, 0x1, 0xe0,
  0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, 0xf0,
  0x0, 0x1, 0xf0, 0x0, 0x0, 0x0, 0x70,
  0x0, 0x3, 0xe0, 0x0, 0x0, 0x0, 0x78,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x38,
  0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x38,
  0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x38,
  0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x38,
  0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x78,
  0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x70,
  0x0, 0x3, 0x80, 0x0, 0x0, 0x0, 0xf0,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x1, 0xe0,
  0x0, 0x1, 0xf0, 0x0, 0x0, 0x7, 0xe0,
  0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0x0,
  0x0, 0x0, 0x1f, 0xff, 0xff, 0xfc, 0x0
};
static const unsigned char PROGMEM PartlyCloudyNight[] =
{
  0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xe0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1f, 0xf0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xbe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xdf, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xcf, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xc7, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xc7, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xc3, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xc3, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xc1, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xc1, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x81, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x81, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x81, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0x81, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0x1, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0x1, 0xfc, 0x0, 0x0,
  0x0, 0x0, 0x1e, 0x1, 0xff, 0xc0, 0x0,
  0x0, 0x0, 0x3e, 0x3, 0xff, 0xf0, 0x0,
  0x0, 0x0, 0x7c, 0x7, 0xff, 0xf8, 0x0,
  0x0, 0x0, 0xf8, 0xf, 0x80, 0xfc, 0x0,
  0x0, 0x1, 0xf0, 0x1f, 0x0, 0x3e, 0x0,
  0x0, 0x3, 0xe0, 0x3e, 0x0, 0x1e, 0x0,
  0x40, 0xf, 0xc1, 0xfc, 0x0, 0xf, 0x0,
  0xf8, 0x3f, 0x87, 0xf8, 0x0, 0xf, 0x0,
  0xff, 0xff, 0xf, 0xf8, 0x0, 0x7, 0x80,
  0x7f, 0xfc, 0x1f, 0xf0, 0x0, 0x7, 0x80,
  0x7f, 0xf0, 0x3e, 0x0, 0x0, 0x7, 0x80,
  0x3f, 0x80, 0x3c, 0x0, 0x0, 0x3, 0xe0,
  0x1f, 0xc0, 0x38, 0x0, 0x0, 0x3, 0xf0,
  0x7, 0xff, 0xf8, 0x0, 0x0, 0x1, 0xf8,
  0x3, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x7c,
  0x0, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x3e,
  0x0, 0x1f, 0xf8, 0x0, 0x0, 0x0, 0x1e,
  0x0, 0x1, 0xf0, 0x0, 0x0, 0x0, 0xf,
  0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0xf,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0xf,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0xf,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0xf,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0xf,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0xf,
  0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x1e,
  0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x3e,
  0x0, 0x1, 0xf0, 0x0, 0x0, 0x0, 0x7c,
  0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xf0,
  0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xe0,
  0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0x80
};
static const unsigned char PROGMEM Hail[] =
{
  0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xe0, 0x0, 0x0, 0x0,
  0x0, 0x7, 0xc0, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0xe, 0x0, 0x1c, 0x0, 0x0, 0x0,
  0x0, 0x1c, 0x0, 0xe, 0x0, 0x0, 0x0,
  0x0, 0x38, 0x0, 0x7, 0x7e, 0x0, 0x0,
  0x0, 0x70, 0x0, 0x3, 0xff, 0x80, 0x0,
  0x0, 0x60, 0x0, 0x1, 0x81, 0xe0, 0x0,
  0x0, 0xe0, 0x0, 0x0, 0x0, 0x70, 0x0,
  0x0, 0xc0, 0x0, 0x0, 0x0, 0x38, 0x0,
  0x0, 0xc0, 0x0, 0x0, 0x0, 0x18, 0x0,
  0x0, 0xc0, 0x0, 0x0, 0x0, 0x1c, 0x0,
  0x0, 0xc0, 0x0, 0x0, 0x0, 0xc, 0x0,
  0x1, 0xc0, 0x0, 0x0, 0x0, 0xc, 0x0,
  0x3, 0xc0, 0x0, 0x0, 0x0, 0xc, 0x0,
  0xf, 0x80, 0x0, 0x0, 0x0, 0xc, 0x0,
  0x1c, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
  0x38, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0,
  0x30, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0,
  0x60, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80,
  0x60, 0x0, 0x0, 0x0, 0x0, 0x1, 0xc0,
  0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30,
  0xc0, 0x0, 0x7, 0xfe, 0x0, 0x0, 0x30,
  0x60, 0x0, 0x7, 0xfe, 0x0, 0x0, 0x30,
  0x60, 0x0, 0x6, 0x3, 0x0, 0x0, 0x30,
  0x70, 0x0, 0xe, 0x3, 0x0, 0x0, 0x60,
  0x30, 0x0, 0xc, 0x3, 0x0, 0x0, 0x60,
  0x18, 0x0, 0xc, 0x1, 0x80, 0x0, 0xc0,
  0xe, 0x0, 0x1c, 0x1, 0x80, 0x3, 0xc0,
  0x7, 0xc0, 0x1c, 0x1, 0x80, 0xf, 0x0,
  0x1, 0xfc, 0xe, 0x7, 0x83, 0xfe, 0x0,
  0x0, 0x7c, 0x7, 0xe, 0x3, 0xf0, 0x0,
  0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x7f, 0xe0, 0x0, 0x7f, 0xe0, 0x0,
  0x0, 0x7f, 0x60, 0x0, 0x7f, 0xe0, 0x0,
  0x0, 0x60, 0x70, 0x0, 0xc0, 0x60, 0x0,
  0x0, 0xc0, 0x30, 0x0, 0xc0, 0x30, 0x0,
  0x0, 0xc0, 0x30, 0x0, 0xc0, 0x30, 0x0,
  0x0, 0xc0, 0x18, 0x1, 0x80, 0x30, 0x0,
  0x1, 0x80, 0x18, 0x1, 0x80, 0x18, 0x0,
  0x1, 0xc0, 0x18, 0x1, 0xc0, 0x38, 0x0,
  0x0, 0xe0, 0x70, 0x1, 0xe0, 0x70, 0x0,
  0x0, 0x78, 0xe0, 0x0, 0x71, 0xe0, 0x0,
  0x0, 0x1f, 0xc0, 0x0, 0x3f, 0x80, 0x0,
  0x0, 0xf, 0x0, 0x0, 0xf, 0x0, 0x0,
  0x0, 0x6, 0x0, 0x0, 0x6, 0x0, 0x0
};
static const unsigned char PROGMEM Thunderstorm[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x3, 0xf0, 0xff, 0x80, 0x0, 0x0,
  0x0, 0xf, 0xfc, 0xff, 0xd0, 0x0, 0x0,
  0x0, 0x1f, 0xfe, 0x7f, 0xfe, 0x0, 0x0,
  0x0, 0x3f, 0xff, 0x1, 0xff, 0x0, 0x0,
  0x0, 0x3f, 0xff, 0xb8, 0x7f, 0xe0, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0x3f, 0xfc, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0x9f, 0xfe, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0xc1, 0xfe, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0xe0, 0x3f, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x0,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xe0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xc0, 0x20, 0x0, 0x0,
  0x0, 0x10, 0xf, 0x80, 0x20, 0x0, 0x0,
  0x0, 0x18, 0xf, 0x0, 0x20, 0x0, 0x0,
  0x0, 0x38, 0x1e, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x38, 0x3f, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x18, 0x7f, 0x80, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x4, 0xc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x8, 0x1c, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x10, 0x38, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x20, 0x70, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};
static const unsigned char PROGMEM Tornado[] =
{
  0x0, 0x0, 0x1f, 0xf8, 0x0, 0x0,
  0x0, 0x3f, 0xff, 0xff, 0xfc, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0x3b, 0xff, 0xff, 0xff, 0xff, 0xde,
  0x6f, 0xc7, 0xf8, 0x7f, 0xc6, 0xe7,
  0xee, 0xbc, 0x0, 0x0, 0x73, 0x77,
  0x6f, 0xff, 0xff, 0xff, 0xff, 0xe6,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0x9c,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x4, 0x3f, 0xff, 0xff, 0xff, 0xc8,
  0x1, 0xf0, 0x3, 0xc1, 0xff, 0x30,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0x90,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0x90,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0x90,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0x80,
  0x0, 0x3f, 0xff, 0xff, 0xfc, 0xc0,
  0x0, 0x1f, 0xff, 0xff, 0xff, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xfc, 0xc0,
  0x0, 0xb, 0xff, 0xff, 0xff, 0x80,
  0x0, 0x7, 0xff, 0xff, 0xfe, 0x40,
  0x0, 0x3, 0xff, 0xff, 0xff, 0x80,
  0x0, 0x0, 0xff, 0xff, 0xff, 0x20,
  0x0, 0x0, 0x27, 0xff, 0xe3, 0x80,
  0x0, 0x0, 0x7, 0xff, 0xff, 0x20,
  0x0, 0x0, 0x0, 0x7f, 0xf1, 0xc0,
  0x0, 0x0, 0x0, 0x7f, 0xff, 0xf0,
  0x0, 0x0, 0x0, 0x1, 0xff, 0xf0,
  0x0, 0x0, 0x0, 0xf, 0xff, 0xf0,
  0x0, 0x0, 0x0, 0xf, 0xff, 0xf0,
  0x0, 0x0, 0x0, 0x7, 0xff, 0xf0,
  0x0, 0x0, 0x0, 0x7, 0xff, 0xe0,
  0x0, 0x0, 0x0, 0x1, 0xfc, 0xf0,
  0x0, 0x0, 0x0, 0x1, 0xff, 0xa0,
  0x0, 0x0, 0x0, 0x1, 0xff, 0xe0,
  0x0, 0x0, 0x0, 0x0, 0x3f, 0x80,
  0x0, 0x0, 0x0, 0x0, 0x1, 0x80,
  0x0, 0x0, 0x0, 0x1, 0xbe, 0x0,
  0x0, 0x0, 0x0, 0x7, 0xfe, 0x0,
  0x0, 0x0, 0x0, 0x11, 0xf8, 0x0,
  0x0, 0x0, 0x0, 0x8e, 0x0, 0x0,
  0x0, 0x0, 0x8, 0x68, 0xc0, 0x0,
  0x0, 0x0, 0xf, 0xb0, 0x0, 0x0,
  0x0, 0x0, 0xe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x4, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x2, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};

static const unsigned char PROGMEM ttshirt[] =
{
  0x0, 0x0, 0xe, 0x0, 0x7, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xff, 0x0, 0xf, 0xf0, 0x0, 0x0,
  0x0, 0x3, 0xff, 0x0, 0xf, 0xfc, 0x0, 0x0,
  0x0, 0xf, 0xc3, 0x80, 0x1c, 0x3f, 0x0, 0x0,
  0x0, 0x1f, 0x1, 0xc0, 0x38, 0xf, 0x80, 0x0,
  0x0, 0x7c, 0x1, 0xe0, 0x78, 0x3, 0xe0, 0x0,
  0x0, 0xf0, 0x0, 0xff, 0xf0, 0x0, 0xf0, 0x0,
  0x1, 0xe0, 0x0, 0x3f, 0xc0, 0x0, 0x78, 0x0,
  0x3, 0x80, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0,
  0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0,
  0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0,
  0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80,
  0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xc0,
  0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xc0,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0,
  0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70,
  0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
  0x78, 0x1, 0x0, 0x0, 0x0, 0x8, 0x1, 0xe0,
  0x3e, 0x3, 0x0, 0x0, 0x0, 0xc, 0x7, 0xc0,
  0xf, 0x7, 0x0, 0x0, 0x0, 0xe, 0xf, 0x0,
  0x7, 0xcf, 0x0, 0x0, 0x0, 0xf, 0x3e, 0x0,
  0x1, 0xff, 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0,
  0x0, 0xff, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0,
  0x0, 0x3b, 0x0, 0x0, 0x0, 0xd, 0xc0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0
};
static const unsigned char PROGMEM ljacket[] =
{
  0x0, 0x0, 0x1f, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x3c, 0x3, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x7c, 0x3, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x6e, 0x7, 0x30, 0x0, 0x0,
  0x0, 0x0, 0xe6, 0x6, 0x38, 0x0, 0x0,
  0x0, 0x0, 0xc7, 0xe, 0x18, 0x0, 0x0,
  0x0, 0x3, 0xe3, 0x1c, 0x3e, 0x0, 0x0,
  0x0, 0x7, 0xe3, 0x98, 0x3f, 0x0, 0x0,
  0x0, 0xe, 0x79, 0xf9, 0xf3, 0x80, 0x0,
  0x0, 0x1c, 0x3f, 0xff, 0xe1, 0xc0, 0x0,
  0x0, 0x38, 0xf, 0xff, 0x80, 0xe0, 0x0,
  0x0, 0xf0, 0x1, 0xf0, 0x0, 0x78, 0x0,
  0x1, 0xe0, 0x0, 0xe0, 0x0, 0x3c, 0x0,
  0x1, 0x80, 0x0, 0xc0, 0x0, 0xc, 0x0,
  0x1, 0x80, 0x0, 0xc0, 0x0, 0xc, 0x0,
  0x3, 0x80, 0x0, 0xc0, 0x0, 0xc, 0x0,
  0x3, 0x0, 0x0, 0xc0, 0x0, 0x6, 0x0,
  0x3, 0x0, 0x0, 0xc0, 0x0, 0x6, 0x0,
  0x3, 0x0, 0x0, 0xc0, 0x0, 0x6, 0x0,
  0x3, 0x0, 0x0, 0xc7, 0xe0, 0x6, 0x0,
  0x3, 0x6, 0x0, 0xc7, 0xe3, 0x6, 0x0,
  0x7, 0x7, 0x0, 0xc0, 0x7, 0x7, 0x0,
  0x6, 0x6, 0x0, 0xc0, 0x7, 0x3, 0x0,
  0x6, 0x6, 0x0, 0xc0, 0x7, 0x3, 0x0,
  0x6, 0xe, 0x0, 0xc0, 0x7, 0x83, 0x0,
  0x6, 0xe, 0x0, 0xc0, 0x7, 0x83, 0x0,
  0xe, 0xe, 0x0, 0xc0, 0x7, 0x83, 0x0,
  0xe, 0xe, 0x0, 0xc0, 0x7, 0x83, 0x80,
  0xc, 0xe, 0x0, 0xc0, 0x7, 0x83, 0x80,
  0xc, 0x1e, 0x0, 0xc0, 0x7, 0x81, 0x80,
  0xc, 0x1e, 0x0, 0xc0, 0x7, 0xc1, 0x80,
  0xc, 0x1e, 0x0, 0xc0, 0x7, 0xc1, 0x80,
  0x1c, 0x1e, 0x0, 0xc0, 0x7, 0xc1, 0xc0,
  0x1c, 0x1e, 0x0, 0xc0, 0x7, 0xc1, 0xc0,
  0x18, 0x3e, 0x0, 0xc0, 0x7, 0xe0, 0xc0,
  0x18, 0x36, 0x0, 0xc0, 0x7, 0x60, 0xc0,
  0x18, 0x36, 0x6, 0xc3, 0x7, 0x60, 0xc0,
  0x18, 0x36, 0xe, 0xc3, 0x87, 0x60, 0xc0,
  0x38, 0x36, 0x1c, 0xc1, 0xc7, 0x60, 0xe0,
  0x30, 0x76, 0x38, 0xc0, 0xe7, 0x70, 0xe0,
  0x30, 0x66, 0x70, 0xc0, 0x77, 0x30, 0x60,
  0x30, 0x66, 0x60, 0xc0, 0x37, 0x30, 0x60,
  0x30, 0x66, 0x0, 0xc0, 0x7, 0x30, 0x60,
  0x30, 0xe6, 0x0, 0xc0, 0x7, 0x38, 0x60,
  0x70, 0xe6, 0x0, 0xc0, 0x7, 0x38, 0x60,
  0x7f, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xf0,
  0x7f, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xf0,
  0x3f, 0x83, 0xff, 0xff, 0xfe, 0xf, 0xe0,
  0x31, 0x80, 0xc0, 0x0, 0x18, 0xc, 0x60,
  0x3b, 0x81, 0xc0, 0x0, 0x18, 0xe, 0xe0,
  0x3f, 0x81, 0xff, 0xff, 0xf8, 0xf, 0xe0,
  0x3f, 0x0, 0xff, 0xff, 0xf8, 0xf, 0xc0
};

static const unsigned char PROGMEM wjacket[] =
{
  0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1f, 0x7, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x3c, 0x1, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x70, 0x0, 0x70, 0x0, 0x0,
  0x0, 0x0, 0x60, 0x0, 0x30, 0x0, 0x0,
  0x0, 0x0, 0xc0, 0x0, 0x18, 0x0, 0x0,
  0x0, 0x0, 0xc0, 0xf8, 0x18, 0x0, 0x0,
  0x0, 0x1, 0x83, 0xfe, 0xc, 0x0, 0x0,
  0x0, 0x1, 0x87, 0x8f, 0xc, 0x0, 0x0,
  0x0, 0x1, 0x86, 0x3, 0xc, 0x0, 0x0,
  0x0, 0x3, 0x8c, 0x1, 0x8e, 0x0, 0x0,
  0x0, 0x3, 0x8c, 0x1, 0x8e, 0x0, 0x0,
  0x0, 0x3, 0x8c, 0x1, 0x8e, 0x0, 0x0,
  0x0, 0x3, 0x8c, 0x1, 0x8e, 0x0, 0x0,
  0x0, 0x1, 0x8c, 0x1, 0x8c, 0x0, 0x0,
  0x0, 0x1, 0x8c, 0x1, 0x8c, 0x0, 0x0,
  0x0, 0x1, 0x8e, 0x3, 0xc, 0x0, 0x0,
  0x0, 0x0, 0xc7, 0x7, 0x18, 0x0, 0x0,
  0x0, 0x0, 0xe3, 0xfe, 0x38, 0x0, 0x0,
  0x0, 0x0, 0x61, 0xfc, 0x30, 0x0, 0x0,
  0x0, 0x0, 0x78, 0x70, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0x7c, 0x21, 0xf8, 0x0, 0x0,
  0x0, 0x7, 0xef, 0xff, 0xbf, 0x0, 0x0,
  0x0, 0xf, 0xc7, 0xff, 0x1f, 0x80, 0x0,
  0x0, 0x1e, 0x0, 0xf8, 0x3, 0xc0, 0x0,
  0x0, 0x38, 0x0, 0x70, 0x0, 0xe0, 0x0,
  0x0, 0x70, 0x0, 0x70, 0x0, 0x70, 0x0,
  0x0, 0xe0, 0x0, 0x70, 0x0, 0x38, 0x0,
  0x1, 0xe0, 0x0, 0x70, 0x0, 0x3c, 0x0,
  0x3, 0xc0, 0x0, 0x70, 0x0, 0x1e, 0x0,
  0x7, 0x0, 0x0, 0x70, 0x0, 0x7, 0x0,
  0xe, 0x0, 0x0, 0x70, 0x0, 0x3, 0x80,
  0x1e, 0x1, 0xc0, 0x70, 0x1c, 0x3, 0xc0,
  0x3c, 0x3, 0xc0, 0x70, 0x1e, 0x1, 0xe0,
  0x78, 0x7, 0x80, 0x70, 0xf, 0x0, 0xf0,
  0xe0, 0xf, 0x80, 0x70, 0xf, 0x80, 0x38,
  0xe0, 0x1f, 0x87, 0xfe, 0xf, 0xc0, 0x38,
  0x60, 0x3b, 0x87, 0xff, 0xe, 0xe0, 0x30,
  0x30, 0xf3, 0x86, 0x7, 0xe, 0x78, 0x60,
  0x39, 0xe3, 0xff, 0x7, 0xfe, 0x3c, 0xe0,
  0x1f, 0x83, 0xff, 0x7, 0xfe, 0xf, 0xc0,
  0xf, 0x3, 0x86, 0x7, 0xe, 0x7, 0x80,
  0x6, 0x3, 0x87, 0xff, 0xe, 0x3, 0x0,
  0x0, 0x3, 0x87, 0xfe, 0xe, 0x0, 0x0,
  0x0, 0x3, 0x80, 0x70, 0xe, 0x0, 0x0,
  0x0, 0x3, 0x80, 0x70, 0xe, 0x0, 0x0,
  0x0, 0x3, 0x80, 0x70, 0xe, 0x0, 0x0,
  0x0, 0x3, 0x80, 0x70, 0xe, 0x0, 0x0,
  0x0, 0x3, 0x80, 0x70, 0xe, 0x0, 0x0,
  0x0, 0x3, 0x80, 0x70, 0xe, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xff, 0xfc, 0x0, 0x0
};

static const unsigned char PROGMEM glasses[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x7f, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x3f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x1f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x1f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x1f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xfe, 0x0,
  0x1f, 0x8f, 0xff, 0xff, 0xff, 0xc0, 0xfc, 0x7f, 0xff, 0xff, 0xfe, 0x0,
  0x1f, 0x87, 0xff, 0xff, 0xff, 0xc0, 0xfc, 0x7f, 0xff, 0xff, 0xfe, 0x0,
  0xf, 0xc7, 0xff, 0xff, 0xff, 0xc0, 0xfe, 0x7f, 0xff, 0xff, 0xfc, 0x0,
  0xf, 0xc7, 0xff, 0xff, 0xff, 0x80, 0x7e, 0x3f, 0xff, 0xff, 0xfc, 0x0,
  0xf, 0xc7, 0xff, 0xff, 0xff, 0x80, 0x7e, 0x3f, 0xff, 0xff, 0xfc, 0x0,
  0xf, 0xe3, 0xff, 0xff, 0xff, 0x80, 0x7e, 0x3f, 0xff, 0xff, 0xfc, 0x0,
  0xf, 0xe3, 0xff, 0xff, 0xff, 0x80, 0x7f, 0x1f, 0xff, 0xff, 0xfc, 0x0,
  0x7, 0xf1, 0xff, 0xff, 0xff, 0x0, 0x3f, 0x1f, 0xff, 0xff, 0xf8, 0x0,
  0x7, 0xf0, 0xff, 0xff, 0xff, 0x0, 0x3f, 0x8f, 0xff, 0xff, 0xf8, 0x0,
  0x7, 0xf8, 0xff, 0xff, 0xff, 0x0, 0x3f, 0x87, 0xff, 0xff, 0xf8, 0x0,
  0x3, 0xfc, 0x7f, 0xff, 0xff, 0x0, 0x3f, 0xc3, 0xff, 0xff, 0xf0, 0x0,
  0x3, 0xfc, 0x1f, 0xff, 0xfe, 0x0, 0x1f, 0xe1, 0xff, 0xff, 0xf0, 0x0,
  0x3, 0xfe, 0x1f, 0xff, 0xfe, 0x0, 0x1f, 0xf0, 0xff, 0xff, 0xf0, 0x0,
  0x1, 0xff, 0x1f, 0xff, 0xfc, 0x0, 0xf, 0xf8, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xfc, 0x0, 0xf, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x7, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0xe0, 0x0, 0x1, 0xff, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x1f, 0xff, 0xff, 0xc0, 0x0, 0x0, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x7, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xf8, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};

static const unsigned char PROGMEM reduce[] =
{
  0xff, 0xf0, 0x1, 0x0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0x3, 0x80, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0x7, 0xc0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0xf, 0xe0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0xf, 0xf0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0x7, 0xf8, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0x3, 0xfc, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0x1, 0xfe, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0xff, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x7f, 0x80, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x3f, 0xc0, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x1f, 0xe0, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0xf, 0xf0, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x7, 0xf8, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x3, 0xfc, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x1, 0xfe, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x0, 0xff, 0x0, 0x0,
  0xff, 0xf0, 0x0, 0x0, 0x7f, 0x80, 0x0,
  0xff, 0xf0, 0xff, 0xf0, 0x3f, 0xc0, 0x0,
  0xff, 0xf0, 0xff, 0xf0, 0x1f, 0xe0, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0xf, 0xf1, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x7, 0xfb, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x3, 0xff, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x1, 0xff, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0xff, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0x7f, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0x7f, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0xff, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x1, 0xff, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x3, 0xff, 0x80,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xe0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0,
  0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0x0
};

static const unsigned char PROGMEM minimize[] =
{
  0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x0, 0x7, 0xff, 0xff, 0xff, 0x0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0xff, 0xfc, 0x0, 0x0, 0x1, 0xff, 0xf8,
  0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf8,
  0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf8,
  0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf8,
  0xff, 0xf8, 0x0, 0x0, 0x0, 0xff, 0xf8,
  0xff, 0xfc, 0x0, 0x0, 0x1, 0xff, 0xf8,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0x0,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x7, 0xff, 0xff, 0xff, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0
};

static const unsigned char PROGMEM avoid[] =
{
  0x0, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xff, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xff, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xff, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xff, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xff, 0xfe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xff, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xff, 0xff, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x1f, 0xf9, 0xff, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xe0, 0x7f, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xe0, 0x7f, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x7f, 0xe0, 0x7f, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x7f, 0xe0, 0x7f, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0xff, 0xe0, 0x7f, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0xff, 0xe0, 0x7f, 0xf8, 0x0, 0x0,
  0x0, 0x1, 0xff, 0xe0, 0x7f, 0xf8, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xf0, 0x7f, 0xfc, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xf0, 0xff, 0xfc, 0x0, 0x0,
  0x0, 0x7, 0xff, 0xf0, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x7, 0xff, 0xf0, 0xff, 0xff, 0x0, 0x0,
  0x0, 0xf, 0xff, 0xf8, 0xff, 0xff, 0x0, 0x0,
  0x0, 0xf, 0xff, 0xf9, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x1f, 0xff, 0xf9, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x3f, 0xff, 0xf9, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0x3f, 0xff, 0xf9, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0x7f, 0xff, 0xfd, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0x7f, 0xff, 0xfd, 0xff, 0xff, 0xf0, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x3, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xfc, 0x0,
  0x3, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfe, 0x0,
  0x7, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfe, 0x0,
  0xf, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0x0,
  0xf, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0x0,
  0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x80,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0
};

static const unsigned char PROGMEM sunblock[] =
{
  0xff, 0xff, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xe0,
  0xff, 0xff, 0xff, 0xe0,
  0x7f, 0xff, 0xff, 0xc0,
  0x7f, 0xca, 0x7f, 0xc0,
  0x7f, 0x0, 0x1f, 0xc0,
  0x7f, 0x1f, 0x1f, 0xc0,
  0x7e, 0x60, 0xcf, 0xc0,
  0x7e, 0x80, 0x2f, 0xc0,
  0x78, 0x80, 0x23, 0xc0,
  0x7c, 0x0, 0x7, 0xc0,
  0x78, 0x0, 0x3, 0x80,
  0x38, 0x0, 0x3, 0x80,
  0x3c, 0x0, 0x7, 0x80,
  0x38, 0x80, 0x23, 0x80,
  0x3e, 0x80, 0x2f, 0x80,
  0x3e, 0x60, 0xcf, 0x80,
  0x3f, 0x1f, 0x1f, 0x80,
  0x3f, 0x0, 0x1f, 0x80,
  0x3f, 0xca, 0x7f, 0x80,
  0x3f, 0xff, 0xff, 0x80,
  0x1f, 0xff, 0xff, 0x0,
  0x1f, 0xff, 0xff, 0x0,
  0x1f, 0x31, 0x9f, 0x0,
  0x1f, 0x75, 0x3f, 0x0,
  0x1f, 0x35, 0x1f, 0x0,
  0x1f, 0x93, 0x3f, 0x0,
  0x1f, 0x97, 0x3f, 0x0,
  0x1f, 0xff, 0xff, 0x0,
  0x1f, 0xff, 0xff, 0x0,
  0x1c, 0x79, 0xff, 0x0,
  0xd, 0xb6, 0xfe, 0x0,
  0xf, 0xbe, 0xe6, 0x0,
  0xe, 0x6f, 0xe6, 0x0,
  0xf, 0x2f, 0x80, 0x0,
  0xf, 0xae, 0xe6, 0x0,
  0xb, 0xb6, 0xe6, 0x0,
  0xc, 0x79, 0xfe, 0x0,
  0xf, 0xff, 0xfe, 0x0,
  0xf, 0xff, 0xfe, 0x0,
  0xc, 0x0, 0x6, 0x0,
  0xc, 0x0, 0x6, 0x0,
  0xc, 0x0, 0x6, 0x0,
  0xf, 0xff, 0xfe, 0x0,
  0xf, 0xff, 0xfe, 0x0,
  0xe, 0x0, 0xe, 0x0,
  0xc, 0x0, 0x6, 0x0,
  0xc, 0x3f, 0x86, 0x0,
  0x7, 0xff, 0xfe, 0x0,
  0x7, 0xff, 0xfc, 0x0
};

static const unsigned char PROGMEM umbrella[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xff, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xff, 0x80, 0x0, 0x0,
  0x0, 0x0, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0xc0, 0x3f, 0xc0, 0x7f, 0xc0, 0x7f, 0x80, 0xe0,
  0x0, 0xf, 0x0, 0x1f, 0x0, 0x1e, 0x0, 0x0,
  0x0, 0x6, 0x0, 0xe, 0x0, 0xc, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xc0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x1, 0xe0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xe0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xe0, 0xe, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xf0, 0x1e, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x70, 0x3c, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7f, 0xf8, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xf8, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1f, 0xe0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};

static const unsigned char PROGMEM hat[] =
{
  0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0,
  0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0,
  0x0, 0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0x1, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0x0, 0x0,
  0x0, 0x7, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x0, 0x0,
  0x0, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xe0, 0x0,
  0x0, 0x7e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xf0, 0x0,
  0x1, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x0,
  0x3, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xfe, 0x0,
  0xf, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0x80,
  0x1f, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xc0,
  0x1f, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xc0,
  0x3f, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe0,
  0x7f, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0,
  0x7f, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xf0,
  0xff, 0xfe, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3, 0xff, 0xf8,
  0xff, 0xff, 0x0, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7, 0xff, 0xf8,
  0xff, 0xff, 0xe0, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xf8,
  0xff, 0xff, 0xf8, 0x1, 0xff, 0xff, 0xff, 0x0, 0xff, 0xff, 0xf8,
  0xff, 0xff, 0xff, 0x80, 0x7, 0xff, 0xc0, 0x3, 0xff, 0xff, 0xf8,
  0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0xf8,
  0x7f, 0xff, 0xff, 0xff, 0x80, 0x0, 0x3, 0xff, 0xff, 0xff, 0xf0,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x0,
  0x0, 0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0
};

static const unsigned char PROGMEM what[] =
{
  0x0, 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x6, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x2, 0x2, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x6, 0x3, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x6, 0x3, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x6, 0x3, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x6, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0x8e, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x3, 0xfe, 0x0, 0x0, 0x0,
  0x0, 0x0, 0x1f, 0xff, 0xc0, 0x0, 0x0,
  0x0, 0x0, 0x7f, 0xff, 0xf0, 0x0, 0x0,
  0x0, 0x0, 0xff, 0xff, 0xfc, 0x0, 0x0,
  0x0, 0x3, 0xff, 0xff, 0xfe, 0x0, 0x0,
  0x0, 0x7, 0xff, 0xff, 0xff, 0x0, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xff, 0x80, 0x0,
  0x0, 0x0, 0x3f, 0xff, 0xff, 0xc0, 0x0,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0x3f, 0xff, 0xff, 0xff, 0xe0, 0x0,
  0x0, 0x0, 0xff, 0xff, 0xff, 0xf0, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x0, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x1, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
  0x3, 0xfe, 0x7f, 0x8f, 0xf3, 0xfe, 0x0,
  0x7, 0xfc, 0x3f, 0x7, 0xe1, 0xff, 0x0,
  0x7, 0xf9, 0x9e, 0x23, 0xcc, 0xff, 0x0,
  0x7, 0xf3, 0xcc, 0x71, 0x9e, 0x7f, 0x0,
  0x7, 0xe7, 0xe0, 0xf8, 0x3f, 0x3f, 0x0,
  0xf, 0xcf, 0xf1, 0xfc, 0x7f, 0x9f, 0x80,
  0xf, 0xc7, 0xe1, 0xfc, 0x3f, 0x1f, 0x80,
  0xf, 0xe3, 0xc4, 0xf9, 0x1e, 0x3f, 0x80,
  0xf, 0xf1, 0x8e, 0x73, 0x8c, 0x7f, 0x80,
  0xf, 0xf8, 0x1f, 0x27, 0xc0, 0xff, 0x80,
  0xf, 0xfc, 0x3f, 0x8f, 0xe1, 0xff, 0x80,
  0xf, 0xfe, 0x7f, 0xdf, 0xf3, 0xff, 0x80,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0xf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
  0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18,
  0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38,
  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
  0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0
};

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial1.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC);
  lcd.begin(16, 2);

  pinMode(bri, OUTPUT);
  pinMode(scroll, INPUT);


  //display setup
  analogWrite(bri, 255);
  lcd.setCursor(2, 0);
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.dim(true);
  display.display();

  //setup message
  Serial.println("=====What You Need Setup=====");
  Serial.println("Enter \'y\' to start [y]");
  analogWrite(bri, 255);
  lcd.print("Please open a");
  lcd.setCursor(3, 1);
  lcd.print("Serial port");
  display.drawBitmap(0, 2, usbIcon, 128, 62, 1);
  display.display();
  inin = 255;
  unsigned int fade = 5;
  while (true) {
    analogWrite(bri, inin);
    inin -= fade;

    if (inin == 5 || inin == 255) {
      fade *= -1;
    }
    if (Serial.available() > 0)
      break;

    delay(20);
  }

  lcd.clear();
  display.clearDisplay();
  display.display();
  analogWrite(bri, 0);

  //Setup setting
  while (true) {
    for (int l = 0; l < 500; l++)
      Serial.println("");
    Serial.println("\nType in the option\'s number and press <Enter>");
    Serial.println("NOTE: always press <enter> to submit what you entered");
    Serial.println("\n1) Use default preset");
    Serial.println("  >> 70+ : T-shirt");
    Serial.println("  >> 40 - 70 : Light jacket");
    Serial.println("  >> 40- : \"Winter\" coat");
    Serial.println("2) Set personal prefrences");

    while (Serial.available() == 0);
    inin = Serial.read();

    if (inin == 49) {
      Serial.println("Using presets");
      delay(1000);
      break;
    }
    else if (inin == 50) {
      Serial.println("Starting personal setup process...");
      delay(750);
      for (int l = 0; l < 500; l++)
        Serial.println("");

      while (true) {
        Serial.println("\nWhat\'s the lowest temperature that you\'ll still wear a T-shirt?");
        while (Serial.available() == 0);
        stin = Serial.readString();
        Serial.println("Lowest temp: " + stin + "? [y,n]");
        while (Serial.available() == 0);
        inin = Serial.read();
        if (inin == 121) {
          Serial.println("Temp Set");
          tshirt = stin.toInt();
          delay(750);
          break;
        }
        else
          for (int l = 0; l < 500; l++)
            Serial.println("");
      }
      for (int l = 0; l < 500; l++)
        Serial.println("");;

      while (true) {
        Serial.println("\nWhat\'s the highest temperature that you\'ll still wear a \"winter\" coat?");
        while (Serial.available() == 0);
        stin = Serial.readString();
        Serial.println("Highest temp: " + stin + "? [y,n]");
        while (Serial.available() == 0);
        inin = Serial.read();
        if (inin == 121) {
          Serial.println("Temp Set");
          jacket = stin.toInt();
          delay(750);
          break;
        }
        else
          for (int l = 0; l < 500; l++)
            Serial.println("");
      }

      Serial.println("\nYour temperature setting has been set to:");
      Serial.println("  >> " + String(tshirt) + "+ : T-shirt");
      Serial.println("  >> " + String(jacket) + " - " + String(tshirt) + " : light jacket");
      Serial.println("  >> " + String(jacket) + "- : heavy jacket");
      break;
    }
    else {
      Serial.println(String(inin - 48) + " wasn't an option, please choose again");
      delay(1500);
    }
  }
  for (int l = 0; l < 500; l++)
    Serial.println("");


  Serial.println("=====Time setup=====");
  unsigned int ssec, mmin, hhrs; //sec, min, hrs
  while (true) {
    Serial.println("Enter the current Hour (24hr)");
    while (Serial.available() == 0);
    stin = Serial.readString();
    Serial.println("Set hour to " + stin + "? [y/n]");
    while (Serial.available() == 0);
    inin = Serial.read();
    if (inin == 121) {
      hhrs = stin.toInt();
      break;
    }
  }
  while (true) {
    Serial.println("Enter the current minute");
    while (Serial.available() == 0);
    stin = Serial.readString();
    Serial.println("Set minute to " + stin + "? [y/n]");
    while (Serial.available() == 0);
    inin = Serial.read();
    if (inin == 121) {
      mmin = stin.toInt();
      break;
    }
  }
  Serial.println("Enter the current seconds (don\'t worry too much about accuracy)");
  while (Serial.available() == 0);
  stin = Serial.readString();
  ssec = stin.toInt();

  setTime(hhrs, mmin, ssec, 1, 1, 2017);

  for (int l = 0; l < 500; l++)
    Serial.println("");

  Serial.println("END OF SETUP.\n ALL TEXT SHOWN AFTER THIS MESSAGE ARE DEBUGGING OR FOR THE OMEGA2\nENJOY!");


  //Legal Message
  analogWrite(bri, 255);
  lcd.setCursor(3, 0);
  lcd.print("Powered By");
  lcd.setCursor(4, 1);
  lcd.print("Dark Sky");
  display.clearDisplay();
  display.setCursor(0, 0);
  display.drawBitmap((128 - darkskyWidth) / 2, 0, darkskyIcon, darkskyWidth, 64, 1);
  display.display();
  delay(2000);
  analogWrite(bri, 100);
  display.clearDisplay();
  display.display();
  lcd.clear();

  while (true) {
    Serial1.print("ReadyToStart");
    if (Serial1.available() > 0) {
      inin = Serial1.read();
      if (inin == 121)
        break;
    }
    delay(25);
  }
}

void loop() {
  // Display time
  if (pmin != minute()) {
    lcd.setCursor(0, 0);
    pmin = minute();
    boolean pm = true;

    int thour = hour();
    if (thour > 12)
      thour -= 12;
    else if (thour < 12)
      pm = false;
    if (thour < 10)
      lcd.print("0" + String(thour));
    else
      lcd.print(thour);
    lcd.print(":");

    if (minute() < 10)
      lcd.print("0" + String(minute()));
    else
      lcd.print(minute());

    if (pm)
      lcd.print("PM");
    else
      lcd.print("AM");
  }

  if (Serial1.available() > 0) {
    inin = Serial1.read();
    if (inin == 117) {
      wupdt();
      pages = 1, prevPage = 1;
      first = true;
      wyn();
    }
  }


  if (prevPage != curPage || first) {
    if (curPage > prevPage)
      rightClear();
    else if (curPage < prevPage)
      leftClear();

    display.setCursor(0, 0);
    display.setTextSize(1);
    display.print(String(curPage) + "/" + String(pages));
    if (curPage == 1)
      rightArrow();
    else if (curPage == pages)
      leftArrow();
    else {
      rightArrow();
      leftArrow();
    }

    switch (curPage) {
      case 1:
        sumPage();
        break;
      case 2:
        wearPage();
        break;
      case 3:
        if (wn[3])
          glassPage();
        else if (wn[4] || wn[5] || wn[6])
          exposPage();
        else if (wn[7])
          sunblockPage();
        else if (wn[8])
          umbPage();
        else
          hatPage();
        break;
      case 4:
        if (wn[4] || wn[5] || wn[6])
          exposPage();
        else if (wn[7])
          sunblockPage();
        else if (wn[8])
          umbPage();
        else
          hatPage();
        break;
      case 5:
        if (wn[7])
          sunblockPage();
        else if (wn[8])
          umbPage();
        else
          hatPage();
        break;
      case 6:
        if (wn[8])
          umbPage();
        else
          hatPage();
        break;
      case 7:
        hatPage();
        break;
    }

    prevPage = curPage;
    if (first)
      first = false;
    display.display();
  }

  curPage = map(analogRead(scroll), 0, 1023, 1, pages);
  delay(20);
}

void wupdt() {
  lcd.setCursor(8, 0);
  lcd.print("Updating");
  lcd.setCursor(0, 1);
  lcd.print("                ");
  lcd.setCursor(0, 1);

  Serial1.print("sUpdate");
  lcd.print("*");
  while (Serial.available() == 0);
  inin = Serial.read();
  lcd.print("*");

  Serial1.print("uTemp");
  lcd.print("*");
  while (Serial1.available() == 0);
  stin = Serial1.readString();
  lcd.print("*");
  data[0] = int(round(stin.toFloat()));

  Serial1.print("uHum");
  lcd.print("*");
  while (Serial1.available() == 0);
  stin = Serial1.readString();
  lcd.print("*");
  data[1] = int(stin.toFloat() * 100);

  Serial1.print("uCloud");
  lcd.print("*");
  while (Serial1.available() == 0);
  stin = Serial1.readString();
  lcd.print("*");
  data[2] = int(stin.toFloat() * 100);

  Serial1.print("uUV");
  lcd.print("*");
  while (Serial1.available() == 0);
  stin = Serial1.readString();
  lcd.print("*");
  data[3] = stin.toInt();

  Serial1.print("uSum");
  lcd.print("**");
  while (Serial1.available() == 0);
  stin = Serial1.readString();
  lcd.print("**");
  data[4] = stin.toInt();

  lcd.setCursor(8, 0);
  if (data[0] > 99 || data[0] < 0)
    lcd.print("  ");
  else
    lcd.print("   ");
  lcd.print(String(data[0]));
  lcd.print((char)223);
  lcd.print("F ");

  lcd.setCursor(0, 1);
  lcd.print(" UVi:" + String(data[3]) + " ");

  if (data[2] < 100)
    lcd.print(" ");
  lcd.print("Cld:" + String(data[2]) + "%");
  lcd.setCursor(0, 1);
}
void wyn() {
  if (data[0] >= tshirt)
    wn[0] = true;
  else if (data[0] < tshirt && data[0] >= jacket)
    wn[1] = true;
  else
    wn[2] = true;

  if (data[3] < 6 && data[2] <= 30)
    wn[3] = true;
  else if (data[3] > 5)
    wn[3] = true;

  if ((data[3] == 6 || data[3] == 7) && (hour() >= 10 && hour() <= 16))
    wn[4] = true;
  else if ((data[3] >= 8 && data[3] <= 10) && (hour() >= 10 && hour() <= 16))
    wn[5] = true;
  else if ((data[3] >= 11) && (hour() >= 10 && hour() <= 14))
    wn[6] = true;

  if (data[3] > 2)
    wn[7] = true;

  if (data[4] == 3 || (data[2] >= 80 && data[1] >= 75))
    wn[8] = true;

  if (data[3] >= 3 && data[3] <= 5 && data[2] <= 30 && data[0] >= jacket)
    wn[9] = true;
  else if (data[3] >= 6 && data[0] >= jacket)
    wn[9] = true;
  else if (data[0] <= 40)
    wn[10] = true;

  for (int l = 0; l < 11; l++)
    if (wn[l])
      pages++;

  rightArrow();
}

void hatPage() {
  String hhat = "";
  boolean hatSpace = true;

  if (wn[10]) {
    hhat = "winter ";
    hatSpace = false;
    display.drawBitmap(37, 0, what, 53, 53, 1);
  } else {
    display.drawBitmap(21, 0, hat, 85, 53, 1);
  }

  display.setCursor(0, 56);
  display.setTextSize(1);
  if (hatSpace)
    display.print("     ");
  else
    display.print("  ");
  display.print("Wear a " + hhat + "hat");
  display.display();
}
void umbPage() {
  display.drawBitmap(34, 0, umbrella, 59, 53, 1);

  display.setCursor(0, 56);
  display.setTextSize(1);
  display.print("  Bring an Umbrella");
  display.display();
}
void sunblockPage() {
  display.drawBitmap(50, 0, sunblock, 27, 53, 1);

  display.setCursor(0, 56);
  display.setTextSize(1);
  display.print("Wear SPF 30+ sunblock");
  display.display();
}
void exposPage() {
  String expos;
  boolean exposSpace = true;

  if (wn[4]) {
    expos = "Reduce";
    display.drawBitmap(39, 0, reduce, 49, 53, 1);
  }
  else if (wn[5]) {
    expos = "Minimize";
    exposSpace = false;
    display.drawBitmap(37, 0, minimize, 53, 53, 1);
  } else if (wn[6]) {
    expos = "Avoid";
    display.drawBitmap(34, 0, avoid, 60, 52, 1);
  }

  display.setCursor(0, 56);
  display.setTextSize(1);
  if (exposSpace)
    display.print(" ");
  display.print(expos + " sun exposure");
  display.display();
}
void glassPage() {
  display.drawBitmap(19, 15, glasses, 90, 32, 1);

  display.setCursor(0, 56);
  display.setTextSize(1);
  display.print("   Wear sunglasses");
  display.display();
}
void wearPage() {
  String wear;
  boolean wearSpace = false;

  if (wn[0]) {
    wear = "T-shirt";
    wearSpace = true;
    display.drawBitmap(34, 0, ttshirt, 60, 53, 1);
  } else if (wn[1]) {
    wear = "Light jacket";
    display.drawBitmap(37, 0, ljacket, 53, 53, 1);
  }
  else {
    wear = "Winter coat";
    display.drawBitmap(37, 0, wjacket, 53, 53, 1);
  }

  display.setCursor(0, 56);
  display.setTextSize(1);
  if (wearSpace)
    display.print("   ");
  display.print("Wear a " + wear);
  display.display();
}
void sumPage() {
  String summ;
  int summSpace;
  switch (int(data[4])) { //display icon
    case 1:
      summ = "Clear Day";
      summSpace = 6;
      display.drawBitmap(37, 0, ClearDay, 54, 53, 1);
      break;
    case 2:
      summ = "Clear Night";
      summSpace = 5;
      display.drawBitmap(38, 0, ClearNight, 51, 53, 1);
      break;
    case 3:
      summ = "Rain";
      summSpace = 8;
      display.drawBitmap(36, 0, Rain, 56, 53, 1);
      break;
    case 4:
      summ = "Snow";
      summSpace = 8;
      display.drawBitmap(40, 0, Snow, 47, 53, 1);
      break;
    case 5:
      summ = "Sleet";
      summSpace = 8;
      display.drawBitmap(37, 0, Sleet, 53, 53, 1);
      break;
    case 6:
      summ = "Wind";
      summSpace = 8;
      display.drawBitmap(30, 0, Windy, 68, 53, 1);
      break;
    case 7:
      summ = "Fog";
      summSpace = 9;
      display.drawBitmap(19, 0, Foggy, 89, 53, 1);
      break;
    case 8:
      summ = "Cloudy";
      summSpace = 7;
      display.drawBitmap(32, 6, Cloudy, 63, 40, 1);
      break;
    case 9:
      summ = "Partly Cloudy Day";
      summSpace = 2;
      display.drawBitmap(37, 0, PartlyCloudyDay, 53, 53, 1);
      break;
    case 10:
      summ = "Partly Cloudy Night";
      summSpace = 1;
      display.drawBitmap(37, 0, PartlyCloudyNight, 53, 53, 1);
      break;
    case 11:
      summ = "Hail";
      summSpace = 8;
      display.drawBitmap(38, 0, Hail, 52, 53, 1);
      break;
    case 12:
      summ = "Thunderstorm";
      summSpace = 4;
      display.drawBitmap(39, 0, Thunderstorm, 49, 53, 1);
      break;
    case 13:
      summ = "Tornado";
      summSpace = 7;
      display.drawBitmap(40, 0, Tornado, 48, 53, 1);
      break;
  }
  display.setCursor(0, 56);
  display.setTextSize(1);
  for (int l = 0; l < summSpace; l++)
    display.print(" ");
  display.print(summ);
  display.display();
}
void leftArrow() {
  display.drawLine(1, 13, 13, 27, WHITE);
  display.drawLine(1, 43, 13, 27, WHITE);
}

void rightArrow() {
  display.drawLine(127, 13, 115, 27, WHITE);
  display.drawLine(127, 43, 115, 27, WHITE);
}

void leftClear() {
  for (int l = 0; l < 4; l++) {
    display.fillRect(l * 32, 0, 32, 64, WHITE);
    display.display();
    delay(1);
  }
  display.clearDisplay();
  display.fillScreen(WHITE);
  for (int l = 0; l < 4; l++) {
    display.fillRect(l * 32, 0, 32, 64, BLACK);
    display.display();
    delay(1);
  }
  display.clearDisplay();
}
void rightClear() {
  for (int l = 3; l > -1; l--) {
    display.fillRect(l * 32, 0, 32, 64, WHITE);
    display.display();
    delay(1);
  }
  display.clearDisplay();
  display.fillScreen(WHITE);
  for (int l = 3; l > -1; l--) {
    display.fillRect(l * 32, 0, 32, 64, BLACK);
    display.display();
    delay(1);
  }
  display.clearDisplay();
}
Omega Code Python
To connect to Losant and send data to the Arduino
import time
import serial
from losantmqtt import Device

device = Device("xxxxx","xxxxx-xxxxx-xxxxx-xxxxx","xxxxx")
ser = serial.Serial(port='/dev/ttyS1', baudrate=9600, timeout=None)


def on_command(device, command):
	payload = ""
	spayload = ""
	print "Update recieved:"
	print command["name"]
	if command["name"] == "update":
		payload = str(command["payload"])
		print payload
	else:
		spayload = str(command["payload"])
		print spayload

	if spayload != "":
		intData = {"humi":"", "uvin":"","temp":"", "clco":""}
		summ = 0

		com=0
		for l in payload:
			if l != ",":
				com+=1
			else:
				break
		intData["humi"] = payload[10:com]

		payload = payload[com+11 : len(payload)]
		com=0
		for l in payload:
			if l != ",":
				com+=1
			else:
				break
		intData["uvin"] = payload[0 : com]

		payload = payload[com+11 : len(payload)]
		com=0
		for l in payload:
			if l != ",":
				com+=1
			else:
				break
		intData["temp"] = payload[0 : com]

		intData["clco"] = payload[com+11 : len(payload)-1]

		summ = spayload[9 : len(spayload)-1]
		print ""
		print summ
		print intData
		
		ser.write("u")
		while True:
			inn= ser.read(ser.inWaiting())
			if inn == "sUpdate":
				ser.write("y")
				break
			ser.reset_input_buffer()

		while True:
			inn= ser.read(ser.inWaiting())
			if inn == "uTemp":
				break
			ser.reset_input_buffer()
		ser.write(intData["temp"])

		while True:
			inn= ser.read(ser.inWaiting())
			if inn == "uHum":
				break
			ser.reset_input_buffer()
		ser.write(intData["humi"])

		while True:
			inn= ser.read(ser.inWaiting())
			if inn == "uCloud":
				break
			ser.reset_input_buffer()
		ser.write(intData["clco"])

		while True:
			inn= ser.read(ser.inWaiting())
			if inn == "uUV":
				break
			ser.reset_input_buffer()
		ser.write(intData["uvin"])

		while True:
			inn= ser.read(ser.inWaiting())
			if inn == "uSum":
				break
			ser.reset_input_buffer()
		ser.write(str(summ))

device.add_event_observer("command", on_command)

device.connect(blocking = False)

print "Connected"

while True:
	inn= ser.read(ser.inWaiting())
	if inn == "ReadyToStart":
		ser.write("y")
		break
	ser.reset_input_buffer()

print "heard"
while True:	
	device.loop()
	time.sleep(0.03)

Comments

Similar projects you might like

IR Home Automation on DFRobot's Relay Shield

Project tutorial by Techduino

  • 526 views
  • 0 comments
  • 5 respects

Sesame

Project showcase by gibatronic

  • 5,230 views
  • 7 comments
  • 13 respects

Laundry IFTTT Alert

Project tutorial by danvanf

  • 1,496 views
  • 0 comments
  • 6 respects

Aurdino Radar With Processing

Project in progress by Akshay6766

  • 1,744 views
  • 1 comment
  • 10 respects

Workspace Environment Monitor - enVMon

Project showcase by Team comcrazy

  • 801 views
  • 2 comments
  • 9 respects

Butterfly Alarm Clock

Project tutorial by Patrick Prescott

  • 1,090 views
  • 0 comments
  • 5 respects
Add projectSign up / Login