[comp.sources.sun] v01i079: Sunclock - a world-view of the day

mcgrew@dartagnan.rutgers.edu (Charles Mcgrew) (10/20/89)

Submitted-by: kelvin@acad.uu.net (John Walker)
Posting-number: Volume 1, Issue 79
Archive-name: sunclock

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	README
#	Makefile
#	sunclock.c
#	sunclock.h
#	sunclock.1
# This archive created: Wed Aug 23 20:26:38 1989
export PATH; PATH=/bin:$PATH
echo shar: extracting "'README'" '(951 characters)'
if test -f 'README'
then
       echo shar: will not over-write existing file "'README'"
else
cat << \SHAR_EOF > 'README'

Sunclock is a SunView program  that  displays  a  map  of  the  Earth,
showing  the  portion  illuminated  by  the  Sun  at the current time,
properly corrected for the season.  The  program  initially  comes  up
iconic  (126x63)  and can be opened into a larger (640x320) pixel map.

A SunView menu allows animated displays that show the passage  of  day
and  night, the changes in the seasons, and even the precession of the
equinoxes as year follows year.

I saw a program like this running under NeWS, and couldn't sleep until
I had one for my SunView screen.  It seems to work on Sun  3,  4,  and
386i  architectures,  on any SunView later than 3.5.  It's been tested
most recently on a Sun 3/260 running SunOS 4.0.3.

Enjoy!

Author:

    John Walker
    Autodesk, Inc.
    2320 Marinship Way
    Sausalito, CA  94965
    USA
    {sun,well,uunet}!acad!kelvin
or: kelvin@acad.uu.net
    Fax:   (415) 389-9418
    Voice: (415) 332-2344 Ext. 2829
SHAR_EOF
fi # end of overwriting check
echo shar: extracting "'Makefile'" '(432 characters)'
if test -f 'Makefile'
then
       echo shar: will not over-write existing file "'Makefile'"
else
cat << \SHAR_EOF > 'Makefile'

#	Make instructions for the Sun clock program

RELFILES = README Makefile sunclock.c sunclock.h sunclock.1

LIBRARIES = -lsuntool -lsunwindow -lpixrect -lm

sunclock: sunclock.c sunclock.h
	cc -O sunclock.c -o sunclock $(LIBRARIES)
	strip sunclock

clean:
	rm -f sunclock
	rm -f *.bak
	rm -f core cscope.out

manpage:
	nroff -man sunclock.1 | more

lint:
	lint sunclock.c $(LIBRARIES)

shar:
	shar -b -v $(RELFILES) >sunclock.shar
SHAR_EOF
fi # end of overwriting check
echo shar: extracting "'sunclock.c'" '(19862 characters)'
if test -f 'sunclock.c'
then
       echo shar: will not over-write existing file "'sunclock.c'"
else
cat << \SHAR_EOF > 'sunclock.c'
/*

	Sun clock

	Designed and implemented by John Walker in November of 1988.

	Version for the Sun Workstation.

    The algorithm used to calculate the position of the Sun is given in
    Chapter 18 of:

    "Astronomical  Formulae for Calculators" by Jean Meeus, Third Edition,
    Richmond: Willmann-Bell, 1985.  This book can be obtained from:

       Willmann-Bell
       P.O. Box 35025
       Richmond, VA  23235
       USA
       Phone: (804) 320-7016

    This program was written by:

       John Walker
       Autodesk, Inc.
       2320 Marinship Way
       Sausalito, CA  94965
       USA
       Fax:   (415) 389-9418
       Voice: (415) 332-2344 Ext. 2829
       Usenet: {sun,well,uunet}!acad!kelvin
	   or: kelvin@acad.uu.net

    This  program is in the public domain: "Do what thou wilt shall be the
    whole of the law".  I'd appreciate  receiving  any  bug  fixes  and/or
    enhancements,  which  I'll  incorporate  in  future  versions  of  the
    program.  Please leave the original attribution information intact	so
    that credit and blame may be properly apportioned.

    Revision history:

	1.0  12/21/89  Initial version.
	      8/24/89  Finally got around to submitting.

*/

#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <assert.h>

#include <suntool/sunview.h>
#include <suntool/canvas.h>
#include <suntool/scrollbar.h>
#include <pixrect/pixrect_hs.h>

#define abs(x) ((x) < 0 ? (-(x)) : x)			  /* Absolute value */
#define sgn(x) (((x) < 0) ? -1 : ((x) > 0 ? 1 : 0))	  /* Extract sign */
#define dtr(x) ((x) * (PI / 180.0))			  /* Degree->Radian */
#define rtd(x) ((x) / (PI / 180.0))			  /* Radian->Degree */
#define fixangle(a) ((a) - 360.0 * (floor((a) / 360.0)))  /* Fix angle	  */

#define V      (void)

#define PI 3.14159265358979323846

#define TERMINC  100		   /* Circle segments for terminator */

#define PROJINT  (60 * 10)	   /* Frequency of seasonal recalculation
				      in seconds. */

#define CXDOTS	 126		   /* Closed window width */
#define CYDOTS	 63		   /* Closed window height */

#define IXDOTS	 128		   /* Total icon width */
#define IYDOTS	 74		   /* Total icon height */

#define OXDOTS	 640		   /* Open window width */
#define OYDOTS	 320		   /* Open window height */

/*  Globals imported  */

extern char *getenv(), *timezone(), *malloc(), *sprintf();
extern time_t time();
#ifdef lint
extern void pw_batch();
#endif

/*  Local variables  */

static int xdots, ydots;	   /* Screen size */
#include "sunclock.h"              /* Icon and open window bitmaps */
static char *wdname[] = {	   /* Week day names */
        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
static	Frame	bf;
static	Pixwin	*fpw, *cpw, *apw;
static	Pixfont *tinyfont;
static	Pixfont *regfont;

static int onoon = -1;
static short *wtab, *wtab1, *wtabs;
static struct timeb tbtp;

static struct itimerval notif_timer = {{1, 0}, {1, 0}};
static struct itimerval quick_timer = {{0, 500000}, {0, 500000}};
static Menu actmenu;

static int fdate = FALSE, idir = 1, animate = FALSE;
static long lincr = 60;
static long cctime;

/*  Forward procedures	*/

double jtime(), gmst();
void drawterm(), sunpos(), projillum(), moveterm(), outdiff(), usage();

/*  UPDIMAGE  --  Update current displayed image.  */

static void updimage(istimer)
int istimer;
{
	int i, xl, isclosed;
	struct tm *ct;
	char tbuf[80];
	double jt, sunra, sundec, sunrv, sunlong, gt;
	struct tm lt;
	static int lisec = 61;	   /* Last iconic seconds */
	static long lctime = 0;    /* Last full calculation time */

	isclosed = (int) window_get(bf, FRAME_CLOSED);

	if (!istimer) {
	   if (isclosed) {
	      xdots = CXDOTS;
	      ydots = CYDOTS;

	      V pw_writebackground(fpw, 0, 0, IXDOTS, IYDOTS, PIX_SRC);
	      V pw_vector(fpw, 0, 0, IXDOTS - 1, 0, PIX_SRC, 1);
	      V pw_vector(fpw, IXDOTS - 1, 0, IXDOTS - 1,
			       IYDOTS - 1, PIX_SRC, 1);
	      V pw_vector(fpw, IXDOTS - 1, IYDOTS - 1, 0,
			       IYDOTS - 1, PIX_SRC, 1);
	      V pw_vector(fpw, 0, IYDOTS - 1, 0, 0, PIX_SRC, 1);
	      V pw_rop(fpw, 1, 1, micon.pr_size.x, micon.pr_size.y,
		    PIX_NOT(PIX_SRC),
		    &micon, 0, 0);
	   } else {
	      xdots = OXDOTS;
	      ydots = OYDOTS;

	      V pw_rop(cpw, 0, 0, bimage.pr_size.x, bimage.pr_size.y,
		    PIX_NOT(PIX_SRC),
		    &bimage, 0, 0);
	   }
	}

	/* If this is a full repaint of the window, force complete
	   recalculation. */

	if (!istimer) {
	   lctime = 0;
	   onoon = -1;
	   lisec = 61;
	   for (i = 0; i < OYDOTS; i++) {
	      wtab1[i] = -1;
	   }
	}

	if (fdate) {
	   if (animate)
	      cctime += lincr;
	   if (cctime < 0)
	      cctime = 0;
	} else {
	   V time(&cctime);
	}
	lt = *localtime(&cctime);

        /* Special  case  to  reduce overhead  whilst iconic: if we're
	   only showing the icon, update the  display  only  once  per
	   minute,  detected  by  the  fact  that  the current seconds
	   reading is less than that of the  last  update.   The  icon
	   shows  only	hours  and  minutes, and is sufficiently small
	   that once-a-minute updates are plenty to keep  the  picture
	   in sync.  */

	if (isclosed && !fdate && (lt.tm_sec > lisec))
	   return;

	ct = gmtime(&cctime);

	jt = jtime(ct);
	sunpos(jt, FALSE, &sunra, &sundec, &sunrv, &sunlong);
	gt = gmst(jt);

	/* Projecting the illumination curve  for the current seasonal
           instant is costly.  If we're running in real time, only  do
	   it every PROJINT seconds.  */

	if (fdate || !istimer || ((cctime - lctime) > PROJINT)) {
	   projillum(wtab, xdots, ydots, sundec);
	   wtabs = wtab;
	   wtab = wtab1;
	   wtab1 = wtabs;
	   lctime = cctime;
	}

	sunlong = fixangle(180.0 + (sunra - (gt * 15)));
	xl = sunlong * (xdots / 360.0);

	/* If the subsolar point has moved at least one pixel, update
	   the illuminated area on the screen.	*/

	if (fdate || !istimer || (onoon != xl)) {
	   apw = isclosed ? fpw : cpw;
	   pw_batch_on(apw);
	   moveterm(wtab1, xl, wtab, onoon, xdots, ydots);
	   pw_batch_off(apw);
	   onoon = xl;
	}

	if (isclosed) {

	   /* Display time in closed window */

           V sprintf(tbuf, "%02d:%02d %s %s %02d/%02d",
	      lt.tm_hour, lt.tm_min,
	      timezone(tbtp.timezone, lt.tm_isdst),
	      wdname[lt.tm_wday],
	      lt.tm_mon + 1, lt.tm_mday);
	   V pw_text(fpw, 8, IYDOTS - 3, PIX_SRC, tinyfont, tbuf);
	   lisec = lt.tm_sec;

	} else {

	   /* Display time in open window */

	   V sprintf(tbuf,
  " %02d:%02d:%02d %s %s %02d/%02d/%02d    %02d:%02d:%02d UTC %02d/%02d/%02d ",
	      lt.tm_hour, lt.tm_min, lt.tm_sec,
	      timezone(tbtp.timezone, lt.tm_isdst),
	      wdname[lt.tm_wday],
	      lt.tm_mon + 1, lt.tm_mday, (lt.tm_year % 100),
	      ct->tm_hour, ct->tm_min, ct->tm_sec,
	      ct->tm_mon + 1, ct->tm_mday, (ct->tm_year % 100));
	   V pw_text(cpw, 85, ydots - 6, PIX_SRC, regfont, tbuf);
	}
}

/*  Frame event processor  */

static frame_event_proc(frame, event, arg, type)
Frame frame;
Event *event;
Notify_arg arg;
Notify_event_type type;
{
	switch (event_id(event)) {

	   case WIN_REPAINT:
	      if (window_get(bf, FRAME_CLOSED)) {
		 updimage(FALSE);
	      } else {
		 xdots = OXDOTS;
		 ydots = OYDOTS;

		 updimage(FALSE);
	      }
	      break;

	   default:
	      window_default_event_func(frame, event, arg, type);
	      break;
	}
}

/*  Timer notification procedure.  */

/*ARGSUSED*/
static Notify_value timer_proc(frame, which)
Notify_client frame;
int which;
{
	updimage(TRUE);
	return(NOTIFY_DONE);
}

/*  CEVENT  --	Canvas event handler  */

/*ARGSUSED*/
static void cevent(window, event, arg)
Window window;
Event *event;
caddr_t arg;
{
#define mdis(x,y) V menu_set(menu_get(actmenu,MENU_NTH_ITEM,x),\
			     MENU_INACTIVE,y,0)

	mdis(1, idir > 0);
	mdis(2, idir < 0);
	mdis(11, !fdate);

	switch (event_id(event)) {

	   case MS_RIGHT:
	      switch (menu_show(actmenu, window, event, 0)) {

		 case 1:	   /* Forward */
		    if (idir < 0)
		       lincr = -lincr;
		    idir = 1;
		    break;

		 case 2:	   /* Backward */
		    if (idir > 0)
		       lincr = -lincr;
		    idir = -1;
		    break;

		 case 4:	   /* Hour */
		    cctime += (lincr = 3600L * idir);
		    fdate = TRUE;
		    break;

		 case 5:	   /* Day */
		    cctime += (lincr = 86400L * idir);
		    fdate = TRUE;
		    break;

		 case 6:	   /* Week */
		    cctime += (lincr = 86400L * 7 * idir);
		    fdate = TRUE;
		    break;

		 case 7:	   /* Month */
		    cctime += (lincr = 86400L * 30 * idir);
		    fdate = TRUE;
		    break;

		 case 8:	   /* Year */
		    cctime += (lincr = 86400L * 365L * idir);
		    fdate = TRUE;
		    break;

		 case 10:	   /* Animate */
		    animate = fdate = TRUE;
		    V notify_set_itimer_func(bf, timer_proc, ITIMER_REAL,
			  &quick_timer, (struct itimerval *) NULL);
		    break;

		 case 11:	   /* Real time */
		    animate = fdate = FALSE;
		    V notify_set_itimer_func(bf, timer_proc, ITIMER_REAL,
			  &notif_timer, (struct itimerval *) NULL);
		    updimage(FALSE);
		    break;

		 case 13:	   /* Quit */
		    V window_done(window);
		    break;
	      }
	}
}

/*  MAIN  --  Main program  */

void main(argc, argv)
int argc;
char *argv[];
{
	int i;
	char *op, opt;
	Icon icon;
	Canvas canvas;

        if (getenv("WINDOW_PARENT") == NULL) {
           V fprintf(stderr, "%s must be run from within Suntools\n", argv[0]);
	   exit(1);
	}

	/*  Process command line options.  */

	for (i = 1; i < argc; i++) {
	   op = argv[i];
           if (*op == '-') {
	      opt = *(++op);
	      if (islower(opt))
		 opt = toupper(opt);
	      switch (opt) {
                 case 'U':
                 case '?':
		    usage();
		    exit(0);
	      }
	   }
	}

	icon = icon_create(ICON_WIDTH, IXDOTS,
                  ICON_HEIGHT, IYDOTS, ICON_LABEL, "", 0);
	bf = window_create((Window) NULL, FRAME,
			      FRAME_LABEL,
           "Sun Clock          by John Walker, Autodesk, Inc.       v1.0",
			      FRAME_NO_CONFIRM, TRUE,
			      FRAME_ARGC_PTR_ARGV, &argc, argv,
			      FRAME_ICON, icon,
			      FRAME_CLOSED, TRUE,
			      WIN_EVENT_PROC, frame_event_proc,
			   0);
	canvas = window_create(bf, CANVAS,
				   WIN_EVENT_PROC, cevent,
			       0);

	V window_set(bf,
	   WIN_CONSUME_PICK_EVENTS,
	      WIN_NO_EVENTS, WIN_MOUSE_BUTTONS, LOC_DRAG, 0,
	   WIN_CONSUME_KBD_EVENT, WIN_LEFT_KEYS,
	   0);

	V window_set(canvas,
	   CANVAS_AUTO_EXPAND, FALSE,
	   CANVAS_AUTO_SHRINK, FALSE,
	   CANVAS_HEIGHT, OYDOTS,
	   CANVAS_WIDTH, OXDOTS,
	   WIN_HEIGHT, OYDOTS,
	   WIN_WIDTH, OXDOTS,
	   0);

	window_fit(canvas);

	window_fit(bf);
	fpw = (Pixwin *) window_get(bf, WIN_PIXWIN);
	cpw = canvas_pixwin(canvas);

        tinyfont = pf_open("/usr/lib/fonts/fixedwidthfonts/screen.r.7");
        regfont = pf_open("/usr/lib/fonts/fixedwidthfonts/screen.b.14");

	actmenu = menu_create(MENU_STRINGS,
           "Forward",
           "Backward",
           "",
           "Hour",
           "Day",
           "Week",
           "Month",
           "Year",
           "",
           "Animate",
           "Real time",
           "",
           "Quit",
	   0, 0);

	mdis(3, TRUE);		   /* Disable blank slots in menu */
	mdis(9, TRUE);
	mdis(12, TRUE);

	xdots = OXDOTS;
	ydots = OYDOTS;

	wtab = (short *) malloc((unsigned int) ydots * sizeof(short));
	wtab1 = (short *) malloc((unsigned int) ydots * sizeof(short));


	ftime(&tbtp);

	V notify_set_itimer_func(bf, timer_proc, ITIMER_REAL,
	      &notif_timer, (struct itimerval *) NULL);
	window_main_loop(bf);

	exit(0);
}

/*  JDATE  --  Convert internal GMT date and time to Julian day
	       and fraction.  */

static long jdate(t)
struct tm *t;
{
	long c, m, y;

	y = t->tm_year + 1900;
	m = t->tm_mon + 1;
	if (m > 2)
	   m = m - 3;
	else {
	   m = m + 9;
	   y--;
	}
	c = y / 100L;		   /* Compute century */
	y -= 100L * c;
	return t->tm_mday + (c * 146097L) / 4 + (y * 1461L) / 4 +
	    (m * 153L + 2) / 5 + 1721119L;
}

/* JTIME --    Convert internal GMT  date  and	time  to  astronomical
	       Julian  time  (i.e.   Julian  date  plus  day fraction,
	       expressed as a double).	*/

static double jtime(t)
struct tm *t;
{
	return (jdate(t) - 0.5) + 
	   (((long) t->tm_sec) +
	     60L * (t->tm_min + 60L * t->tm_hour)) / 86400.0;
}

/*  KEPLER  --	Solve the equation of Kepler.  */

static double kepler(m, ecc)
double m, ecc;
{
	double e, delta;
#define EPSILON 1E-6

	e = m = dtr(m);
	do {
	   delta = e - ecc * sin(e) - m;
	   e -= delta / (1 - ecc * cos(e));
	} while (abs(delta) > EPSILON);
	return e;
}

/*  SUNPOS  --	Calculate position of the Sun.	JD is the Julian  date
		of  the  instant for which the position is desired and
		APPARENT should be nonzero if  the  apparent  position
		(corrected  for  nutation  and aberration) is desired.
                The Sun's co-ordinates are returned  in  RA  and  DEC,
		both  specified  in degrees (divide RA by 15 to obtain
		hours).  The radius vector to the Sun in  astronomical
                units  is returned in RV and the Sun's longitude (true
		or apparent, as desired) is  returned  as  degrees  in
		SLONG.	*/

static void sunpos(jd, apparent, ra, dec, rv, slong)
double jd;
int apparent;
double *ra, *dec, *rv, *slong;
{
	double t, t2, t3, l, m, e, ea, v, theta, omega,
	       eps;

	/* Time, in Julian centuries of 36525 ephemeris days,
	   measured from the epoch 1900 January 0.5 ET. */

	t = (jd - 2415020.0) / 36525.0;
	t2 = t * t;
	t3 = t2 * t;

	/* Geometric mean longitude of the Sun, referred to the
	   mean equinox of the date. */

	l = fixangle(279.69668 + 36000.76892 * t + 0.0003025 * t2);

        /* Sun's mean anomaly. */

	m = fixangle(358.47583 + 35999.04975*t - 0.000150*t2 - 0.0000033*t3);

        /* Eccentricity of the Earth's orbit. */

	e = 0.01675104 - 0.0000418 * t - 0.000000126 * t2;

	/* Eccentric anomaly. */

	ea = kepler(m, e);

	/* True anomaly */

	v = fixangle(2 * rtd(atan(sqrt((1 + e) / (1 - e))  * tan(ea / 2))));

        /* Sun's true longitude. */

	theta = l + v - m;

	/* Obliquity of the ecliptic. */

	eps = 23.452294 - 0.0130125 * t - 0.00000164 * t2 + 0.000000503 * t3;

        /* Corrections for Sun's apparent longitude, if desired. */

	if (apparent) {
	   omega = fixangle(259.18 - 1934.142 * t);
	   theta = theta - 0.00569 - 0.00479 * sin(dtr(omega));
	   eps += 0.00256 * cos(dtr(omega));
	}

        /* Return Sun's longitude and radius vector */

	*slong = theta;
	*rv = (1.0000002 * (1 - e * e)) / (1 + e * cos(dtr(v)));

	/* Determine solar co-ordinates. */

	*ra =
	fixangle(rtd(atan2(cos(dtr(eps)) * sin(dtr(theta)), cos(dtr(theta)))));
	*dec = rtd(asin(sin(dtr(eps)) * sin(dtr(theta))));
}

/*  GMST  --  Calculate Greenwich Mean Siderial Time for a given
	      instant expressed as a Julian date and fraction.	*/

static double gmst(jd)
double jd;
{
	double t, theta0;


	/* Time, in Julian centuries of 36525 ephemeris days,
	   measured from the epoch 1900 January 0.5 ET. */

	t = ((floor(jd + 0.5) - 0.5) - 2415020.0) / 36525.0;

	theta0 = 6.6460656 + 2400.051262 * t + 0.00002581 * t * t;

	t = (jd + 0.5) - (floor(jd + 0.5));

	theta0 += (t * 24.0) * 1.002737908;

	theta0 = (theta0 - 24.0 * (floor(theta0 / 24.0)));

	return theta0;
}

/*  PROJILLUM  --  Project illuminated area on the map.  */

static void projillum(wtab, xdots, ydots, dec)
short *wtab;
int xdots, ydots;
double dec;
{
	int i, ftf = TRUE, ilon, ilat, lilon, lilat, xt;
	double m, x, y, z, th, lon, lat, s, c;

	/* Clear unoccupied cells in width table */

	for (i = 0; i < ydots; i++)
	   wtab[i] = -1;

	/* Build transformation for declination */

	s = sin(-dtr(dec));
	c = cos(-dtr(dec));

	/* Increment over a semicircle of illumination */

	for (th = -(PI / 2); th <= PI / 2 + 0.001;
	     th += PI / TERMINC) {

	   /* Transform the point through the declination rotation. */

	   x = -s * sin(th);
	   y = cos(th);
	   z = c * sin(th);

	   /* Transform the resulting co-ordinate through the
	      map projection to obtain screen co-ordinates. */

	   lon = (y == 0 && x == 0) ? 0.0 : rtd(atan2(y, x));
	   lat = rtd(asin(z));

	   ilat = ydots - (lat + 90) * (ydots / 180.0);
	   ilon = lon * (xdots / 360.0);

	   if (ftf) {

	      /* First time.  Just save start co-ordinate. */

	      lilon = ilon;
	      lilat = ilat;
	      ftf = FALSE;
	   } else {

	      /* Trace out the line and set the width table. */

	      if (lilat == ilat) {
		 wtab[(ydots - 1) - ilat] = ilon == 0 ? 1 : ilon;
	      } else {
		 m = ((double) (ilon - lilon)) / (ilat - lilat);
		 for (i = lilat; i != ilat; i += sgn(ilat - lilat)) {
		    xt = lilon + floor((m * (i - lilat)) + 0.5);
		    wtab[(ydots - 1) - i] = xt == 0 ? 1 : xt;
		 }
	      }
	      lilon = ilon;
	      lilat = ilat;
	   }
	}

	/* Now tweak the widths to generate full illumination for
	   the correct pole. */

	if (dec < 0.0) {
	   ilat = ydots - 1;
	   lilat = -1;
	} else {
	   ilat = 0;
	   lilat = 1;
	}

	for (i = ilat; i != ydots / 2; i += lilat) {
	   if (wtab[i] != -1) {
	      while (TRUE) {
		 wtab[i] = xdots / 2;
		 if (i == ilat)
		    break;
		 i -= lilat;
	      }
	      break;
	   }
	}
}

/*  XSPAN  --  Complement a span of pixels.  Called with line in which
	       pixels are contained, leftmost pixel in the  line,  and
	       the   number   of   pixels   to	 complement.   Handles
	       wrap-around at the right edge of the screen.  */

static void xspan(pline, leftp, npix)
int pline, leftp, npix;
{
	int xo, yo;

	if (window_get(bf, FRAME_CLOSED)) {
	   xo = 1;
	   yo = 1;
	} else {
	   xo = yo = 0;
	}

	leftp = leftp % xdots;
	pline += yo;

	if ((leftp + npix) > xdots) {
	   V pw_vector(apw, leftp + xo, pline, xo + (xdots - 1), pline,
		 PIX_SRC ^ PIX_DST, 1);
	   V pw_vector(apw, xo, pline, xo + ((leftp + npix) - (xdots + 1)),
		 pline, PIX_SRC ^ PIX_DST, 1);
	} else {
	   V pw_vector(apw, xo + leftp, pline, xo + leftp + (npix - 1), pline,
		 PIX_SRC ^ PIX_DST, 1);
	}
}

/*  MOVETERM  --  Update illuminated portion of the globe.  */

static void moveterm(wtab, noon, otab, onoon, xdots, ydots)
short *wtab, *otab;
int noon, onoon, xdots, ydots;
{
	int i, ol, oh, nl, nh;

	for (i = 0; i < ydots; i++) {

	   /* If line is off in new width table but is set in
	      the old table, clear it. */

	   if (wtab[i] < 0) {
	      if (otab[i] >= 0) {
		 xspan(i, ((onoon - otab[i]) + xdots) % xdots,
		    otab[i] * 2);
	      }
	   } else {

	      /* Line is on in new width table.  If it was off in
		 the old width table, just draw it. */

	      if (otab[i] < 0) {
		 xspan(i, ((noon - wtab[i]) + xdots) % xdots,
		    wtab[i] * 2);
	      } else {

		 /* If both the old and new spans were the entire
                    screen, they're equivalent. */

		 if ((otab[i] == wtab[i]) && (wtab[i] == (xdots / 2)))
		    continue;

		 /* The line was on in both the old and new width
		    tables.  We must adjust the difference in the
		    span.  */

		 ol =  ((onoon - otab[i]) + xdots) % xdots;
		 oh = (ol + otab[i] * 2) - 1;
		 nl =  ((noon - wtab[i]) + xdots) % xdots;
		 nh = (nl + wtab[i] * 2) - 1;

		 /* If spans are disjoint, erase old span and set
		    new span. */

		 if (oh < nl || nh < ol) {
		    xspan(i, ol, (oh - ol) + 1);
		    xspan(i, nl, (nh - nl) + 1);
		 } else {
		    /* Clear portion(s) of old span that extend
		       beyond end of new span. */
		    if (ol < nl) {
		       xspan(i, ol, nl - ol);
		       ol = nl;
		    }
		    if (oh > nh) {
		       xspan(i, nh + 1, oh - nh);
		       oh = nh;
		    }
		    /* Extend existing (possibly trimmed) span to
		       correct new length. */
		    if (nl < ol) {
		       xspan(i, nl, ol - nl);
		    }
		    if (nh > oh) {
		       xspan(i, oh + 1, nh - oh);
		    }
		 }
	      }
	   }
	   otab[i] = wtab[i];
	}
}

/*  USAGE  --  Print how-to-call information.  */

static void usage()
{
	V fprintf(stderr,
           "sunclock  --  The Sun clock.  By John Walker, Autodesk, Inc.\n");
}
SHAR_EOF
fi # end of overwriting check
echo shar: extracting "'sunclock.h'" '(41456 characters)'
if test -f 'sunclock.h'
then
       echo shar: will not over-write existing file "'sunclock.h'"
else
cat << \SHAR_EOF > 'sunclock.h'

/* Small icon definition. */

short micn[] = {
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0xFFFF,
	0xFFE0,0,0x400,0,0,0,0x7F,0xFFC0,0x7E0,0x3F87,
	0xFE01,0xF800,0,0,0x1FFF,0xFFE0,0x180,0x3F00,0x1F01,
	0xFE03,0xC000,0,0x1FFF,0xF830,0x780,0,0x7FDF,0x6FFB,
	0xF000,0x83F8,0x7FFF,0xFF1C,0xF18,0x7E0,0x7BF8,0x2FF,
	0xFF34,0xCE0F,0xFFFF,0xFFDC,0x1E00,0x1EFF,0xFFE0,
	0x3000,0x33FC,0xFE00,0x1DDF,0xFFCC,0xF3E0,0x3FFF,0x1F8,
	0,12,0x3E60,0xFCF,0xFF8F,0x83C0,0xF7FC,0,0,0x39C,
	0xFFF,0x87E6,0x1787,14,0xFFF8,0,0,0xFFF0,0x3C3,
	0xC1B3,0xBDC0,14,0x7FE8,0,0x3003,0x8780,0x1F00,0xE018,
	0xF470,0x1F,0xFE01,0x8060,0x3C03,0xC700,0xF800,0xF01D,
	0xB1F0,0x1F,0x8003,0x20,0x1800,0xC600,0,0x3871,0xFBF8,
	7,10,0xC00,1,0xCC00,0,0x1013,0xF7D8,2,0x7879,0xD8F8,
	3,0xF800,0,0x1010,0xFF80,0x1F,0xFCBD,0xD860,14,
	0xE000,0,0x1000,0xEE00,0x813,0xFFDE,0xE000,0xF9,
	0x8000,0,0x1800,0x800,0xE1F,0xFBF6,0xC000,0xFB,0x8000,
	0,0xE00,0x3800,0x1E,0x7190,0,0xDF,0x8000,0,0x301,
	0xE000,0xD0,0x1FF1,0x8000,0xCC,0,0,0x38F,0x6000,0x70,
	0x31,0xE000,0x40,0,0,0x3C8,0x3000,0x60,0x38,0xFE00,
	0xC0,0,0x100,0xE8,0xF000,0xC0,0x78,0x7387,0xFC0,0,
	0x180,0x2F,0xFF00,0xC0,0x1C,0x318D,0x8C40,0,0,0x3F,
	0xDF80,0x40,12,0x6098,0xCCC0,0,0,7,0xC000,0xC0,
	0x180F,0xC0D1,0xECE0,0,0,0x80,0xCFC0,0x60,0x1803,
	0x8071,0x7CE0,0x120,0,0x80,0xFFE0,0x22,0,0x8071,
	0x78F0,0x120,0,0,0x3038,0x3F,0xE011,0x8031,0xFBB0,0,
	0,0,0x100C,0,0x6073,0,0xFFB8,0,0,3,0x300F,0,
	0x6476,0,0xF5FD,8,0,2,0x300D,0xC000,0x246C,0,0x7FFF,
	0xD808,0,0,0x2000,0x6000,0x3048,0,0x3FC3,0x7C00,2,0,
	0x3000,0x2060,0x10C8,0,0xFF1,0xF700,2,0,0x1800,
	0x6000,0x104E,0x8000,0xEE,0xF000,0,0,0xA00,0x4000,
	0x1067,0x8000,0x3A,0xC040,4,0,0xE00,0x400C,0x19FF,
	0x8000,0x63,0xE060,4,0,0x200,0xC000,0x1913,0xA000,
	0x1C0,0x30E0,0,0,0x203,0x8000,0x1813,0x2000,0x300,
	0x1840,0,0,0x206,0,0x833,0,0x300,0x800,0,0,0x606,
	0,0xC60,0,0x3C3,0x8800,0,0,0x40C,0,0x4C0,0,0x1BF,
	0x8800,0,0,0x438,0,0x780,0,0x1E3,0x1818,0,0,0x430,
	0,0,0,3,0xF01C,0,0,0x4E0,0,0,0,0,0x601C,0,0,
	0xC80,0,0,0,0,0x6078,0,0,0xD80,0,0,0,0,0x70,0,
	0,0xD00,0,0,0,0,0x40,0,0,0xF60,0,0,0,0,0,0,0,
	0xF80,0x6000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0x60,0,0,0,0,0,0,0,0x1C0,0,0,
	0x7C1F,0xFFFF,0xC000,0,0,0x1FC0,0,0x87F,0xC3F0,0,
	0x7F00,0,0x1F,0xDF40,0x1F,0xFFC0,0,0,0x1E0,7,0xFFFC,
	0xFEC0,0x3F0,0,0,0,0x1E0,0x1FC,0x6000,0x1F8,0x3E00,
	0,0,0,0x1C0,0x6F0,0,7,0xC000,0,0,0,0x3C0,0x180,0,
	0,0,0,0,0,0x3FC,0xE060,0,0,0,0,0,0,0xE0,0,0,0,
	0,0,0,0,0
};

mpr_static(micon, 126, 63, 1, micn);

/* Big image definition. */

short bimg[] = {
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x1E,0x3FFF,0xFFFF,
	0xF000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0xFFFF,0xFFFF,
	0,0xFFF,0xFF80,0x3F,0xDFF0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x3FC,0,3,0xF0FF,0xFFFC,0,0x7F,0xFFF0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,15,0xFF80,0,0x21F,0xFFB0,0xFC00,0,
	0x1FFF,0xFFEF,0xFFC0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x7F,
	0xC000,0,0x3FFF,0xF600,0x6000,0,0,0x1FF8,0x7E0,0,0,
	0,0,0,0,0x7C00,0x7FFE,0xFC00,0,0,0x1FC,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x1CF,0xFFFF,
	0xFF00,0x7FFB,0x8000,0,0,0,0xFE01,0xFE00,0,0,0,
	0x7FFF,0,0x1F,0xFFF8,0xFFFF,0x6000,0,0,0x30C,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0x8380,0x7BFE,
	0x3D,0xF0F8,0,0,0,1,0xC03F,0xE000,0,0,0x7AF,0xFD81,
	0xE000,0,0xFC0,0x380,0,0,0,0x1FF,0xE000,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x1FF7,0x80E0,0x1F87,
	0xFFF,0x8008,0,0,0,0,0x1F,0,0,0,0xFFE,0xFFFF,0,0,
	0,0,0,0,0,0xE1,0xEF00,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0x1FDE,0x3078,0x6FFE,0x1FF8,0x3FF0,0,0,
	0,0,0x7F,0,0,0,0x1E3F,0xF00,0,0,0,0,0,0,0,0x1F,
	0x99F0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x7FC,
	0x3FF,0x6C71,0xFF80,0xF3,0xE000,0,0,0,0,0xCE,0,0,
	0,0x1FFE,0x7FC0,0,0,0,0,0,0,0,0,0x3FFF,0x8000,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x7FEC,0xE66,0x7F9F,
	0xFFD8,0x1FC3,0xFFE0,0,0,0,0,0xFD,0x8000,0,0,0x4FC,
	0xCFF8,0,0,0,0,0,0,0,0,0x7807,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0x3F,0xEFF8,0xF00,0x3F86,0x3FF8,
	0x3C01,0xFFF0,0,0,0,0,0xFF,0,0,0,0x79,0x85C0,0,0,
	0,0,0,0,0,0,0x7FC,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x1DF,0xDC1E,0xFBF,0xDFFF,0xEA70,0xC00,0x3F00,0,
	0,0,0,0x7F,0,0,0,0x1F,0,0,0,0,0,0xFF0,0,0,0,
	0x1C0C,0x300,0,0,0,0x60,0x1A0,0,0,0,0,0,0,0,0,
	0x1FFF,0xFF9F,0xF7FF,0x47FF,0xFFFF,0xF800,0xFFF,0xFE00,
	0,0,0,0xFF,0,0,0,0,0,0,0,0,0x1F,0xF8E0,0,0,
	0x7F8,0xF81F,0xFDE0,0,0,0x798,0,0x20,0,0,0,0,0,0,
	0,0,0xDFF,0xE4FC,0x9FF8,0xFFDB,0xFFFF,0xFC00,0,0x3E0,
	0,0,0,0x1FF,0,0,0,0,0,0,0,0,0x1F0,0xFF80,0,1,
	0xFF0F,0xF000,0x60,0,0,0x6CFF,0xFE00,0,0,0,0,0,0,
	0,0,0,1,0xFFFF,0xF70F,0xEC58,0,0xF000,0,0x30,0,0,
	0,0x7F,0x8000,0,0,0,0,0,0,0,0x1F1F,0x8000,0,0xFF,
	0,0x7000,0x1C0,0,0,0xCCF,0xBFE0,0,0,0,0,0,0,0,0,
	0,0xFFE,0xFF0,0,0x37CF,0xFFFF,0xE000,0,0x78,0,0,0,
	0xFF,0,0,0,0,0,0,0,0,0x38F0,0,0,0x180,0,0x3000,
	0x3FC0,0,0,0x7C0,0x380,0,0,0,0,0,0,0,0,0,0x383F,
	0xC000,15,0xF3FF,0xFFF,0xFF00,0,0x38,0,0,0,0x1FF8,
	0,0,0,0,0,0,0,1,0xF780,0,0,0x380,0,0xFC07,
	0xFF80,0x1E,0,0xC0FE,0,0,0,0,0,0,0,0,0,0,0x1801,
	0xFE00,0x6C,0x7E06,0x70FD,0x8180,0,0x3E,0,0,3,
	0xFFF0,0,0,0,0,0,0,0,1,0xFF00,7,0x101,0xFE00,0,
	3,0xE0FF,0xF83F,0xF000,0x7E,0,0,0,0,0,0,0,0,0,0,
	0x380F,0xCAFF,0xF07E,0x7EFC,0xC0F1,0xFFC0,0,7,0,0,1,
	0xFF80,0,0,0,0,0,0,0,7,0x1800,0x3F,0xCF01,0,0,
	15,0x70,0xFF8,0x1E00,0x3F,0xC000,0,0,0,0,0,0,0,0,
	0,0xE01E,0x3C3,0x983E,0xFE0,0x81F3,0xFC38,0,15,
	0xC000,0,0,0x7F80,0,0,0,0,0,0,0,14,0x1000,0x20,
	0xCFFF,0xE000,0,0,0,0,0xFE00,0x60,0xFFE0,0,0,0,0,
	0,0x60,0,0,0,0xF8BF,0xF000,0xE03,0x7FE0,0xC0F2,
	0x200F,0xC000,15,0xF000,0,7,0xFBC0,0,0x6000,0,0,0,
	0,0,14,0x1000,0x61,0xBFC1,0xFC00,0,0,0,0,0xEE0F,
	0xFFE0,0x7870,0,0,0,0xF0C0,0,0xFFC,0,0,0,0xFE3,
	0xE200,0x601,0xCF38,0x3E70,0,0xF000,7,0x7E00,0,7,
	0xF9C0,1,0xE000,0,0,0x1FF,0xF000,0,3,0x8E00,0x181,
	0xB000,0x3C00,0,0,0,0,0x3D3,0xF80,0x1E,0x3FE4,0,7,
	0,0,0x7807,0xFF00,0,0x1E,1,0xFFE0,0x3EC,0x180E,
	0xE08,0x3C01,0xBF00,1,0xFE00,0,0x1F,0xFF80,0,0,0,0,
	0x7FF,0xFF00,0,0,0xFEC0,0x100,0xD800,0x7800,0,0,0,
	0,0xE0,0,3,0xE81E,0,0,0,1,0xC000,0x1FF,0xF000,
	0x1FF,0x9F01,0xFFC0,0xF8,0x7E1F,0x3FF,0xFF80,0xF80,3,
	0xFE00,0,0x17,0xCF00,0,0,0,3,0xFFD8,0x3FE0,0,0,
	0xFF,0x8300,0xF000,0xC00,0,0,0,0,0,0,0,8,0x3C,
	0xFFC0,0,6,0,0,0x1FE0,0xFE18,0xFCFC,0xFE00,0x71FE,
	0xDDCF,0x60FF,0x19D0,0x7C0,3,0xFC00,0,0,0x3800,0,0,
	0,0x3F,0xF000,0x60FF,0xC000,0x380,0x18,0xFB80,0xB7E0,
	0,0,0,0,0,0,0,0xD80,15,0xFFFC,0xC0FE,0xC000,0xFC,
	0,0,0x3F,0xE800,7,0xFB7F,0xFFF7,0xE7E1,0xF8E3,0xF8,
	0x3C0,0,0x7800,0,7,0xE000,0,0,0,0x7F,1,0xE078,
	0x7806,0x383,0x81F8,0x3FE0,0xDFA0,0,0,0,0,0,0,0,0,
	3,0x1C,0xC003,0x7800,0x1C0,0,0,3,0,0,0x3DEF,0xFF80,
	0xFFE1,0xB78E,0x1BFC,0x3F0,0,0xFE00,0,0x1FE,0,0,0,
	0,0x3E,0,0,0xF03,0xE07F,0xFE70,0xE0,0x6FF0,0,0,
	0x300,0,0,0,0,0x10,1,3,0xC000,0x180,0x78,0,0,0,
	0,0x400,0x3FFF,0x80FF,0x9E00,0x1F03,0x27E,0x3E,1,
	0xFE00,0,0xF00,0,0,0,0,0x38,0,0x70,0x1C2,0xE3CF,
	0xC000,0x40,0x6CB0,0,0,0,0,0,0,0,0x10,0,0,0,
	0xFF,15,0x8000,0,0,0,0xEFC,15,0,0xF00,0xEE3,0x3C6,
	15,0xE001,0xFC00,0,0x3800,0,0x1000,0,0,0x1F0,0,
	0xF0,0x43,0xE60E,0,1,0x98BF,0,0,0,0,0,0,0,0,0,
	0,0,0x6061,0xC03B,0xE000,0,0,0,0x1F3F,3,0xC007,
	0x8600,0x7FC,15,0xC0C9,0xE000,0xFC00,12,0xE000,0x7DF,
	0xFC00,0,0,0x183,0,0x13F,0x81DB,0x3C00,0,0x3F,
	0xF38F,0,0,0,0,0,0,0,0,0,0,0,0x7060,0xE3EF,
	0xE000,0,0,0,0x1FDF,0,0xC03F,0xE017,0x83F0,0x18,
	0xF3FD,0xF000,0xF000,0x1F,0x8000,0x1FFD,0x8700,0,0,
	0x303,0x81F8,0x33E,0x7FE6,0,0,15,0xE37E,0,0,0,0,0,
	0,0,0,0,0,0,0x7F87,0xC780,0,0,0,0,0x6F8,0,0,
	0x3F,0xFFF8,0x7BC,0xC3CF,0x8000,0xF000,0xFC,0,0xFE0,
	0x100,0,0,0x601,0x8704,6,0x300,0,0,0,0xE1EF,0xE000,
	0,0,0,0,0,0,0,0,0,0,0xC0F6,0x181,0xE000,0,0,0,
	0x7E0,0x78,15,0xF000,0x90E,0x6E1,0xF073,0,0x3F00,
	0x380,0,0xFC0,0xF00,0,0,0x1C00,0x61C,0x7C4,0xFD80,0,
	0,0,0x60,0xF000,0,0,0,0,0,0,0,0,0,0x7F,0x1E,
	0xFF,0xE000,0x6000,0,0,0,0x7F,0xE00F,0x8FC1,0xF91F,
	0x87FE,0xE018,0,0x1F80,0x380,0,0x3E0,0xFC00,0,0,
	0x3800,0x671,0xC007,0xF3E0,0,0,0,0x40,0x3800,0,0,0,
	0,0,0,0,0,0,0x3E,3,0xE003,0x6000,0x6000,0,0,0,
	0x61,0xE018,0x1FF,0xB613,0xCF83,0x860C,0,0xF80,0x300,
	0,0x13F,0x8000,0,1,0xF800,0x7DC1,0x980E,0xF060,0,0,
	0,0,0x60,0,0,0,0,0,0,0,0,0,4,3,0xF01F,0xC000,
	0,0,0,0x7C,0x6039,0x8038,0x303B,0x7E7,0x8F80,0xC7FC,
	0,0x780,0xF00,0,0,0,0,15,0x7001,0xC704,0xFE1F,0,0,
	0,0,0,0x60,0,0,0,0,0,0,0,0,0,0xE07,0,0x203C,0,
	0,0,0,0x7C,0x7DFE,0x38,0x701F,0x1F,0xEFFC,0x7CFC,0,
	0x380,0x1C00,0,0,0,0,0x5F,3,0x60E,0xFE07,0x4000,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x1B,0,0x70,0,0,0,
	0,0,0xFF8,0,0x78,0x1C,0xEC07,0x7F8,0,0x3C0,0x1800,
	0,0,0,0x1800,0x78,2,0x636,0x7807,0x4000,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0xF000,0x3FE,0,0xC0,0,0x1800,
	0,0,0,0xFFC0,0,0x60,0,0x4401,0xC078,0,0x1E6,0x1800,
	0,0,0,0x1800,0x7C,2,0x2EC,0xFF87,0x8C00,0,0,0,0,
	0,0,0,0,0,0,0,0,0x7C,0xA000,0x1E00,0,0x78,1,
	0x7FF8,0,0,1,0xFC00,0,0xC0,0,0xC00,0x7B0C,0,0x7F,
	0x3000,0,0,0,6,0x7C,3,0x2CE,0xF663,0x8400,0,0,0,
	0,0,0,0,0,0,0,0,0,0x1CF,0x6000,0xF000,14,0x1DB,
	7,0xF1FF,0,0xD800,0,0,0,0x80,0,0x60F,0xBF0C,0,1,
	0xF000,0,0,0,3,0x78,1,0xC3DF,0xFEE0,0x3C00,0,0,0,
	0,0,0,0,0,0,0,0,0,0x70E,0xC37F,0x8000,6,0x3DF,
	0x8001,0x3FF3,0xFF80,0xEE00,0,0,0,0x80,0,0x60F,
	0xB83E,0,1,0xE000,0,0,0,0,0x70,5,0xC07A,0x7F80,
	0x3600,0,0,0,0,0,0,0,0,0,0,0,0xF0,0x1C03,0x1FC3,
	0,0,4,0xC047,0x7C00,0x1C1,0x2600,0,0x1F,0xFC00,0x80,
	0,0x1C00,0x1C27,0,0,0,0,0,0,0x30,0x70,0xFB8F,
	0x81BF,0xC000,0x600,0,0,0,0,0,0,0,0,0,0,15,
	0xFFDE,0xFC0E,0x7C00,0,0,0,0xFFC7,0xE000,0x7F,0,0,
	0xF8,0x180,0xF0,0,0x1800,0xFE3,0,0,0,0,0,0,0x1BF0,
	0x31,0x8FE3,0x1E0,0xC000,0x1800,0,0,0,0,0,0,0,0,
	0,0,0x18,0x1F,0xE038,0x5800,0,0,0,0x58D,0xC000,
	0x1F,0xE000,0,0x40,0x1E0,0x10,0,0xC00,0x183,0x8000,
	0,0,0,0,0,0x1FE0,0x1E,0xE66,0x41F0,0xE180,0x1C00,0,
	0,0,0,0,0,0,0,0,0,0x30,0,0x60,0xF000,0,0,0,
	0x1BF,0xC000,7,0xE000,0,0,0x71,0x8010,0,0x63C,0,
	0xE000,0,0,0,0,0,0x1CFC,1,0xF604,0xC390,0x6000,0,
	0,0,0,0,0,0,0,0,0,0,0xE0,0,0x1C0,0xE000,0,0,
	0xC000,0x3E7,0x8000,3,0xF000,0,0,0x61,0x801F,0xE000,
	0x82F0,0,0xF000,0,0,0,0,0,0xE08,1,0xE20E,0xC670,0,
	0,0,0,0,0,0,0,0,0,0,0,0x300,0,0x700,0xC000,0,
	0,0x6000,0x1F00,0,1,0xFC00,0,0,0xC0,0,0x3801,
	0xF260,0,0x7000,0,0,0,0,0,0xF78,3,0xB21E,0x400,0,
	0,0,0,0,0,0,0,0,0,0,0,0x600,0,0x400,0xE000,0,
	0,0,0xFE00,0,0,0xFF80,0,0,0x80,0,0xE01,0xE660,0,
	0x7000,0,0,0,0,0,0x77C,2,0x7F30,0x400,0,0,0,0,0,
	0,0,0,0xE00,0x2000,0,0,0x1C00,0,0x400,0xE000,0,0,
	7,0xF800,0,0,0x3FC0,0,0,0,0,0x3E0,0xAC36,0,0x1C00,
	0,0,0,0,0,0xFF04,3,0x7FE0,0x400,0,0,0x300,0,0,0,
	0,0,0x1F00,0x6000,0,0,0x7C00,0,0x800,0x8100,0,0,
	0x1F,0x3000,0,0,0x3DC0,0,0,0,0x6000,0x1C,0x380C,0,
	0xF80,0,0,0,0,0,0xC7E7,1,0xFF83,0x9C00,0,0,0x300,
	0,0,0xE0,0,0,0x300,0xE000,0,0,0xFC00,0,0x80C,
	0x81A0,0,0,0x18,0,0,0,0x1C0,0,0,0,0xE000,4,
	0x3000,6,0x3C0,0,0,0,0,7,0x8471,1,0xB79E,0xF000,0,
	0,0x200,0,0,0x1E0,0,0,0x301,0xE000,0,0,0x7FC6,0,
	0xC0F,0x8020,0,0,0x3C0,0,0,0,0x1DF8,0,0,3,0xE000,
	4,0x1000,6,0x1FF0,0,0,0,0,6,0x5E0,0x8031,0xDDE0,0,
	0,0,0x300,0,0,0,0,0,0x303,0xC000,0,0,0x1F7E,0,
	0x408,0,0,0,0xF00,0,0,0,0x1EFC,0,0,15,0xA000,7,
	0x1800,0,0x1C78,0,0,0,0,3,0x5C1,0xE07F,0,0,0,0,
	0x300,0,0,4,0,0,0x10E,0xC000,0,0,0x23B,0,0x438,0,
	0,1,0xF800,0,0,0,0xE3E,0,0,14,0xF000,7,0x800,0,
	0x18,0,0,0,0,2,0xD80,0xB1C0,0,0,0,0,0,0,0,4,0,
	0,0x11F,0x8000,0,0,0x3B,0,0x660,0,0x3800,0xEF9,
	0x8000,0,0,0,0x70E,0,0,3,0x7800,3,0x8800,0,0x18,
	0,0,0,0,2,0xFB90,0x6100,0,0,0,0,0x1800,0,0,0,0,
	0,0x3E,0,0,0,0x3A,0,0x760,0,0xCD0,0x1E80,0,0,0,
	0,12,0,0,3,0xD800,0,0xF806,0,0x1F8,0,0,0,0,3,
	0x81F0,0xE300,0,0,0,0,0x7800,0,0,0,0,0,0x1F8,0,
	0,0,0x2B,0,0x3C0,0,0x1E,0,0,0,0,0,0x1F,0x8000,0,
	0,0xD800,0,0xB00E,0,0x378,0,0,0,0,0,0x1F7,0xFC00,
	0,0,0,0,0x6000,0,0,0,0,0,0x70,0,0,0,0x3029,0,
	0x700,0,6,0,0,0,0,0,0x1F,0xE000,0,0,0x5800,
	0x2000,12,0xFF,0xFC70,0,0,0,0,0,0x7FC,0x7000,0,0,
	0,0,0xE000,0,0,0,0,0x1C00,0,0,0,0,0x3029,0,
	0x1E00,0,0,0,0,0,0,0,15,0xF800,0,0,0,0x6000,
	0x700,0x8F,0xF8,0,0,0,0,0,0x20C,0xE000,0,0,0,0,
	0x8000,0,0,0,0,0,0,0,0,0,0x6048,0x8000,0x7800,0,
	0,0,0,0,0,0,1,0xFA00,0,0,0,0x6000,0,0x77F,
	0xC1AF,0,0,0,0,0,15,0x8000,0,0,0,1,0x8000,0,0,
	0,0,0,0,0,0,0,0x604B,0xC000,0x2000,0,0,0,0,0,0,
	0,0,0xFE00,0,0,0,0x3E00,0x7000,0xF88,0x301,0xC000,
	0,0,0,0,0x1FC,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x4E,0xC000,0,0,0,0,0,0,0,0,0,0x3E00,0,0xF8E0,
	1,0xE380,0,0x1EFC,0x309,0x8000,0,0,0,0,0x1D0,0,0,
	0,0,0,0,1,0xC000,0,0x1C00,0,0,0,0,0,0xCC,0,0,
	0,0,0,0,0,0,0,0,0x1600,0,0xF878,3,0x30C0,0,
	0x3078,0x3FF,0xE000,0,0,0,0,0x70,0,0,0,0,0x1C00,
	0,1,0x8000,0,0xC00,0,0,0,0,0,0x18E,0,0,0,0,0,
	0,0,0,0,0,0x1A00,0,0,14,0xF060,0,0x7014,0x180D,
	0xE000,0,0,0,0,0x18,0,0,0,0x3C3,0xFC00,0x7E,0x16,
	0,0xE00,0,0,0,0,0,0,0x30F,6,0,0,0,0,0,0,0,0,
	0,0x800,0,4,15,0x3FE0,0x6000,0x1F,0xB800,0x8000,0,
	0,0,0,14,0,0,0,0x7FF,0x3000,0x3C2,0x7E,0,0x3FF9,
	0xC000,0,0,0,0,0,0x60F,0x30,0,0,0,0,0,0,0,0,0,
	0x1800,0,4,0,0x7FF,0xE000,7,0xFC00,0,0,0,0,0,2,
	0,0x780,0,0xC7E,0xB000,0x1E02,0xEC,0,0x3800,0xC000,
	0,0,0,0,0,0xC09,0x70,0,0,0,0,0,0,0,0,0,0x1000,
	0,4,0,0x8F7,0xC000,0x1FE,0xF000,0,0,0,0,0,3,0,
	0x4E0,0,0x1873,0xE000,0x101E,0x18C,0,0x3800,0x2000,0,
	0,0,0,0x30,0x1818,0x780,0,0,0,0,0,0,0,0,0,
	0x1000,0,0x1C,0,0x1991,0xE004,0x7BF,0xC000,0,0,0,0,
	0,7,0,0x4E0,0,0x301E,0x3800,0x1014,0x104,0,0x1800,
	0x3000,0,0,0,0,0x30,0x601E,0x1600,0,0,0,0,0,0,0,
	0,0,0x1000,0,0x1C,0,0x1A13,0xF3C4,0xC6C,0,0,0,0,
	0,0,4,7,0xE630,0,0x2018,0x600,0x1070,0x108,0,0,0,
	0,0,0,0,0x20,0xC013,0xF800,0,0,0,0,0,0,0,0,0,
	0x1000,0,0,0,0x163A,0x3F80,0x3878,0,0,0,0,0,1,
	0xFFFC,0x7FC,0x219E,0,0x6000,0x380,0x820,0x1D8,0,0,
	0,0,0,0,0,3,0x8010,0xF000,0,0,0,0,0,0,0,0,0,
	0x3000,0,0,0,0x161C,0x7F80,0x6000,0,0,0,0,0,1,0,
	0x431,0xB083,0,0xC000,0xC0,0x830,0x30,0,0,0,0,0,0,
	0,0xFE,0x71,0xE000,0,0,0,0,0,0,0,0,0,0x3000,0,
	0,0,0x120B,0xF000,0x6000,0,0,0,0,0,1,0x8000,0x403,
	0x9CE1,0xC000,0xC000,0x60,0xC1C,0,0,0x1F0,0,0,0,0,
	0,0x180,0x5F,0,0,0,0,0,0,0,0,0,0,0x1000,0,0,0,
	0x1E1C,0xF000,0x3000,0,0,0,0,0,1,0x8000,0xC03,
	0x8638,0x6000,0x40FF,0x60,0x607,0,0,0xC0,0,0,0,0,
	0,0x300,0x56,0,0,0,0,0,0,0,0,0,0,0x1000,0x380,
	0,0,0xC1B,0x8007,0xF000,0,0,0,0,0,0,0x8000,0x7001,
	0x838E,0x2018,0x7F81,0xFDC0,0x307,0x8000,0,0,0,0,0,
	0,0x180,0x200,0xF0,0,0,0,0,0,0,0,0,0,0,0x1000,
	0x1C0,0,0,14,0x1C,0,0,0,0,0,0,0,0x8000,0xC003,
	0xC0C3,0x20BF,0xF000,0x3F00,0x106,0x8000,0,0,0,0,0,
	0,0x3C0,0xE00,0xF0,0,0,0,0,0,0,0,0,0,0,0x1000,
	0x180,0,0,0,0x18,0,0,0,0,0,0,1,0x8001,0x8F02,
	0xC037,0xB0FB,0x8000,0,0x187,0x8000,0,0,0,0,0,0,
	0xCC8,0x1800,0x98,0,0,0,0,0,0,0,0,0,0,0x1800,0,
	0,0,0,0xD0,0,0,0,0,0,0,1,1,0xD02,0x801F,0xB88B,
	0,0,0x107,0,0,0,0,0,0,0,0x18FF,0x3000,0x88,0,0,
	0,0,0,0,0,0,0,0,0x800,0,0,0,0,0x1F0,0,0,0,0,
	3,0,1,0x8001,0xE003,0x800E,0x1C81,0,0,0x303,0,0,0,
	0,0,0,0,0x71C3,0x3800,0x88,0,0,0,0,0,0,0,0,0,
	0,0xC00,0,0,0,0,0x1E0,0,0,0,0,0x1F,0,0,0x8003,
	0x8000,0x7FC,0x7C3,0x8000,0x3C,0x301,0,0,0,0,0,0,
	0,0x4003,0x800,0xB8,0,0,0,0,0,0,0,0,0,0,0x700,
	0,0,0,0,0x1C0,0,0,0,0,0,0x6000,0,0x8006,0,0x7B8,
	0x7E1,0x8000,0x19,0xC201,0x8000,0,0,0,0,0,0,0x7703,
	0xCC00,0x130,0,0,0,0,0,0,0,0,0,0,0x300,0,0,0,
	0,0x100,0,0,0,0,0,0,1,0xB80C,0,0xC1A0,0x2E1,
	0xC000,1,0xC301,0x8000,0,0,0,0,0,0,0x3DE0,0x4400,
	0x1B20,0,0,0,0,0,0,0,0,0,0,0x300,0,0,0,0,
	0x180,0,0,0,0,0,0,1,0xE9F8,0x7FFF,0x30E0,0x3C0,
	0xE387,0x8000,0x81C1,0x8000,0,0,0,0,0,0,0x3C0,
	0xC400,0x1E20,0,0,0,0,0,0,0,0,0,0,0x180,0,0,0,
	0,0xC0,0,0,0,0,0,0,0,0xF01,0xC000,0x3000,0x80,
	0x5EFD,0,0x7F,0,0,0,0,0,0,0,0x600,0xC60C,0x3820,
	0,0,0,0,0,0,0,0,0,0,0x80,0,0,0,0,0x1C0,0,0,
	0,0,0,0,0,0x707,0,0x3000,0x60,0x4001,0,0,0,0,0,
	0,0,0,0,0xC00,0x461F,0xE020,0,0,0,0,0,0,0,0,0,
	0,0xC0,0,0,0,0,0x3C0,0,0,0,0,0,0,0,0xDFC,0x180,
	0x1000,0x7E,0x71,0,0,0,0,0,0,0,0,0,0x1800,0xFC10,
	0x33E0,0,0,0,0,0,0,0,0,0,0,0x78,0,0,0,0,0x300,
	0,0,0,0,0,0,0,0x1800,0,0x3000,0,0x71,0,0,0,0,
	0,0,0,0,0,0x1C00,0xF869,0xBF00,0,0,0,0,0,0,0,0,
	0,0,0x3C,0,0,0,0,0xE00,0,0,0,0,0,0,0,0x3000,
	0x3F,0xE000,0,3,0,0,0,0,0,0,0,0,0,0x400,0x1FF,
	0xEC00,0,0,0,0,0,0,0,0,0,0,0x23,0,0,0,0,
	0x3800,0,0,0,0,0,0,0x3000,0xE00C,0x37,0xF000,0,2,
	0,0,0,0,0,0,0,0,0,0x3E00,0xC3FF,0xC000,0,0,0,0,
	0,0,0,0,0,0,7,0,0,0,0,0xE000,0,0,0,0,0,0,
	0x7001,0x8000,0,0x1F80,0xF80,2,0,0,0,0,0,0,0,0,
	0,0x7B00,0x338,0,0,0,0,0,0,0,0,0,0,0,1,0x8000,
	0,0,1,0x8000,8,0,0,0,0,0,0x6001,0,0,0x60,0x18E0,
	4,0,0,0,0,0,0,0,0,0,0x1180,0x320,0,0,0,0,0,0,
	0,0,0,0,0,0,0x9E00,0,0,3,0,0x18,0,0,0,0,0,3,
	0,0,0x10,0x101C,12,0,0,0,0,0,0,0,0,0,0x80,
	0x1E0,0,0,0,0,0,0,0,0,0,0,0,0,0x5600,0,0,2,0,
	0,0,0,0,0,0,2,0,0,0x1E,0x1007,0xEFF8,0,0,0,0,
	0,0,0,0,0,0x80,0x3C0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x7B00,0,0,0x7602,0,0,0,0,0,0,0,2,0,0,1,
	0xF000,0x3800,0,0x3C0,0,0,0,0,0,0,0,0x80,0x100,0,
	0,0,0,0,0,0,0,0,0,0,0,0x3900,0,0x60,0xFFF2,0,
	0,0,0,0,0,0,6,0,0,0,0,0x20,0,0x6C0,0,0,0,0,
	0,0,0,0x80,0x100,0,0,0,0,0,0,0,0,0,0,0,0,
	0x3880,0,0x3FF,0xC011,0,0,0,0,0,0,0,0x184,0,0,0,
	0,0x76,0,0x467,0,0,0,0,0,0,0,0x180,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0x1EC0,0,0x380,0x19,0,0,0,0,0,
	0,0,0x8398,0,0,0,0,0x76,0,0x421,0,0,0,0,0,0,0,
	0x180,0x200,0,0,0,0,0,0x1980,0,0,0,0,0,0,0xB60,
	0,0x1E00,9,0x8000,0,0,0,0,0,0,0xBB70,0,0,0,0,
	0x3F,0,0x630,0,0,0,0,0,0,0,0x300,0x600,0,0,0,0,
	0,0,0,0,0,0,0,0,0x19B0,0,0x3800,8,0x8000,0,0,0,
	0,0,1,0x99C0,0,0,0,0,0x1D,0,0x31C,0,0,0,0,0,0,
	0,0x600,0x400,0,0,0,0,0,0,0,0,0,0,0,0,0x898,0,
	0x2000,8,0xC000,0,0,0,0,0,0,0x100,0,0,0,0,0x19,
	0x8000,0x87,0x3C00,0,0,0,0,0,0,0xC00,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0x7CC,0,0x3000,7,0x5E00,0,0,0,
	0,0,0,0x300,0,0,0,0,8,0xC000,0xF1,0xFC00,0,0,0,
	0,0,0,0x800,0x1800,0,0,0,0,0,8,0,0,0,0,0,0,
	0x1E4,0,0x3000,3,0x4200,0,0,0,0,0,0,0x600,0,0,0,
	0,4,0x4000,0x70,0x1F00,0,0,0,0,0,0,0x1800,0,0,0,
	0,0,0,8,0,0,0,0,0,0,0xA7,0,0x3000,3,0xF300,0,
	0,0,0,0,0,0x400,0,0,0,0,4,0x6000,0x70,0x3BFF,
	0xFE00,0,0,0,0,0,0x1080,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0xE1,0x8000,0x2000,1,0x8D80,0,0,0,0,0,0,
	0xC00,0,0,0,0,6,0x2000,0x10,0x4808,0x200,0,0,0,0,
	0,0x3380,0,0,0,0,0,0,0,0,0,0,0,0,0,0x70,
	0xC000,0x6000,0,0xC00,0,0,0,0,0,0,0x1800,0,0,0,
	0,2,0x3000,0x1F,0x8C00,0x300,0,0,0,0,0,0x6280,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x38,0x6000,0x6000,0,
	0x400,0,0,0,0,0,0,0x1000,0,0,0,0,0x61,0x800,0,
	0x780,0x1E0,0,0,0,0,1,0xCE80,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0x1C,0x2000,0x2000,0,0,0,0,0,0,0,0,
	0x1000,0,0,0,0,0x61,0xC00,0,0xC0,0x67,0,0,0,0,3,
	0x1D00,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0x1800,
	0x2000,0x1F,0xE0C8,0,0,0,0,0,0,0x2000,0,0,0,0,
	0xE1,0x8400,0,0x60,0x1C,0,0,0xE000,0,0x7E,0xD00,0,
	0,0,0,0,0,0,0,0x1800,0,0,0,0,0,0x800,0x2000,
	0x3F,0xB0C8,0,0,0,0,0,0,0x4000,0,0,0,0,0x180,
	0xC400,0,0x60,0x38,0xC000,9,0xB000,0,0xF0,0x600,0,
	0,0,0,0,0,0,0,0x1B00,0,0,0,0,0,0xC00,0x2000,
	0x1C7C,0xFE00,0,0,0,0,0,0,0x4000,0,0,0,0,0x300,
	0x4400,0,0xC0,0x19,0xC000,0x3F,0x9000,1,0xFF80,0x200,
	0,0,0,0,0,0,0,0,0x3E0,0,0,0,0,0,0x800,0x3001,
	0xFC1C,0x3B80,0,0,0,0,0,0,0x6000,0,0,0,0,0,
	0x6600,0,0x80,15,0x4000,0x20,0x1800,2,0x1800,0,0,0,
	0,0,0,0,0,0,0xF0,0,0,0,0,0,0x800,0x1001,0xC00,
	0xEF0,0,0,0,0,0,0,0x6000,0,0,0,0,0,0x4300,0,
	0x380,6,0x4000,0x20,0xC00,4,0x1800,0,0,0,0,0,0,0,
	0,0,0x38,0,0,0,0,0,0x800,0x1803,0x800,0x7F6,
	0xC000,0,0,0,0,0,0x2000,0,0,0,0,0,0x4180,0,
	0x280,0,0x4000,0x1C0,0x600,12,0x3C00,0,0,0,0,0,0,
	0,0,0,0x38,0,0,0,0,0x30,0xE00,0xC02,0x1800,0x207,
	0xBC00,0,0,0,0,0,0x2000,0,0,0,0,0,0x20C0,0,
	0x200,0,0x4000,0x180,0x700,0x18,0x6C00,0,0,0,0,0,
	0,0,0,0,0x30,0,0,0,0,0x30,0x380,0x71E,0x1803,6,
	0x600,0,0,0,0,0,0x2000,0,0,0,0,0,0x2040,0,0xE00,
	0,0x4000,0x600,0x300,0x18,0x5800,0x300,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0xE0,0x5FE,0x3000,0xF9E,0x7EFC,
	0,0,0,0,0,0x1000,0,0,0,0,0,0x1860,0,0x1800,0,
	0x4000,0xC00,0x100,12,0x7000,0x7C0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0x30,0xC0,0x1000,0x79F,0xC0FC,
	0x2000,0,0,0,0x2000,0x1000,0,0,0,0,0,0x830,0,
	0x2000,0,0x6000,0x1800,0x180,4,0,0x480,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x1C,0,0x3000,0,0,0x6000,0,
	0,0,0x3000,0x1000,0,0,0,0,0,0xC10,3,0xE000,0,
	0x2000,0x2000,0x98,6,0,0x480,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,3,0x8380,0x3000,0,0,0x6000,0,0,0,
	0x3000,0x2000,0,0,0,0,0,0x410,6,0,0,0x2000,0xC000,
	0x9C,3,0,0x480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0xFEC0,0x61C0,0,0,0x6000,0,0,0,0x300,0x2000,0,0,
	0,0,0,0x410,12,0,0,0x2001,0x8000,0x1E4,1,0x8000,
	0x580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x1860,
	0x3F70,0,0,0x2000,0,0,0,0x400,0x2000,0,0,0,0,0,
	0x610,0x38,0,0,0x3003,0,0x44,0,0xC000,0x500,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x38,0x30,0,0,0x3000,
	0,0,0,0x400,0xC000,0,0,0,0,0,0x318,0x1C0,0,0,
	0x1002,0,4,0,0x6000,0x580,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,14,0x10,0,0,0x3000,0,0,0,0,0xE000,0,
	0,0,0,0,0x88,0xF00,0,0,0x1802,0,6,0,0x2000,0x640,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0x10,0,0,
	0x3000,0,0,0,0,0x2000,0,0,0x80,0,0,0x6C,0x3800,0,
	0,0x802,0,0xC02,0x3000,0x2000,0x3F0,0,0,0xC000,0,0,
	0,0,0,0,0,0,0,0,0,0,1,0xF810,0,0,0x3600,0,0,
	0,0,0x2000,0,0,0x1E0,0,0,0x35,0xC000,0,0,0x802,0,
	0xC03,0x7000,0x2000,0x7F8,0,0,0xC000,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0x1C31,0,0x3000,0,0,0,0,0,0x2000,
	0,0,0xE0,0,0,0x1F,0,0,1,0xC02,0,0xC01,0x7C00,
	0x2000,0x33E,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x523,1,0xF000,0x6000,0,0,0,0,0x3000,0,0,0xC0,0,
	0,8,0x40,0,1,0x406,0,0x801,0x6700,0x2000,0x1BE,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x7F0,7,0xF800,
	0x6000,0,0,0,0,0x1800,0,0,0,0,0,8,0x3F0,0,0,
	0x4604,0,0x801,0x4110,0x6000,0x18EF,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x3F0,0x3D,0xF706,0x2000,0,0,
	0,0,0xC00,0,0,0,0,0,12,0x5E20,0,0,0xC204,0,
	0x801,0xC199,0x8000,0x18FE,0,0,0,0,0,0,0,0,0,0,
	0,0,0,4,0,0,0x130,0x60,0xC1EF,0xF000,0,0,0,0,
	0x600,0,0,0,0,0,7,0xE020,0,0,0xC104,0,0x801,
	0x80FF,0,0x38FE,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
	0,0,0x1D8,0x41,0x4038,0xF000,0,0,0,0,0x100,0,0,0,
	0,0,0,0x20,0,0,0x18C,0,1,0x803C,0,0x306F,0,0,0,
	0,14,0,0,0,0,0,0,0,0,0,0,0,0x66,0x78C1,0xC000,
	0x3000,0,0,0,0,0x180,4,0,0,0,0,0,0x60,0,0,
	0x19F,0,1,0xC038,0,0xE067,0x8000,0,0,0,2,0,0,0,
	0,0,0,0,0,0,0,0,0x37,0xFF80,0xC000,0x3C00,0,0,0,
	0,0x80,7,0,0,0,0,0,0x40,0,0,0xF4,0x8000,3,
	0x6030,0,0xC03F,0x8000,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0x1E,0x6B00,0,0x400,0,0,0,0,0xC0,3,0,0,0,
	0,0,0xC0,0,0,0x64,0xC000,3,0x2000,0,0x60,0x8000,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0xC900,0,0x300,
	0,0,0,0,0xE0,1,0,0,0,0,0,0x80,0,0,4,0x4000,1,
	0xB000,0,0xF9,0x8000,0,0,0,6,0,0,0,0,0,0,0,0,
	0,0,0,0,0xC400,0,0x180,0,0,0,0,0x70,7,0,0,0,0,
	0,0x180,0,0,4,0x4000,0,0xDC00,1,0x80EB,0x8000,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x600,0,0xC0,0,
	0,0,0,0x1C,1,0x3F80,0,0,0,0,0x100,0,0,6,0xC000,
	0,0x6600,2,0x400B,0x8000,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0x200,0,0x7F,0,0,0,0,6,1,0xE060,0,0,
	0,0,0x300,0,0,3,0x8000,0x70,0x2300,6,0x600F,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x200,0,1,
	0xC000,0,0,0,3,0x7FE,0x60,0,0,0,0,0x600,0,0,0,
	0,0x7C,0x2180,4,0x3000,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0x200,0,0,0x3000,0,0,0,1,0xFC08,
	0x3F,0,0,1,0,0x400,0,0,0,0,0x26,0x2080,0x3C,
	0x6000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x200,0,0,0x1800,0,0,0,0,0x6000,1,0xC000,0,1,0,
	0x800,0,0,0,0,0x33,0x2081,0x8060,0xE000,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x200,0,0,0x800,0,
	0,0,0,0,1,0x4000,0,1,0x8000,0x1000,0,0,0,0,0x19,
	0x9080,0x8040,0xC000,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0x200,0,0,0xC00,0,0,0,0,0,1,0x4000,0,
	1,0x8000,0x3000,0,0,0,0,0x24,0xD880,0x380,0x8000,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xC00,0,0,
	0x400,0,0,0,0,0,0,0x4000,0,0x101,0xC000,0x6000,0,
	0,0,0,0x36,0x6CC0,0x700,0x4000,0x1000,0,0,0,0,0,
	0,0,0x180,0,0,0,0,0,0,0,0,0x800,0,0,0x600,0,0,
	0,0,0,0,0xC000,0,0x340,1,0x8000,0,0,0,0,0x33,
	0x3E40,0x3C00,0x6000,0x3000,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0x1800,0,0,0x300,0,0,0,0,0,0,
	0x8000,0,0x760,3,0,0,0,0,0,13,0x8FC0,0x2400,
	0x220E,0x3800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x3000,0,0,0x300,0,0,0,0,0,0,0x8000,0,0x20,6,
	0,0,0,0,0,12,0x8780,0x4000,0x77FE,0x3800,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0xC000,0,0,0xE00,0,0,
	0,0,0,0x18,0x8000,0,0xCF0,12,0,0,0,0,0,0,0xC380,
	0x6000,0xCFF8,0x3000,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,14,0,0xC000,0,0,0x1FC0,0,0,0,0,0,0,0x8000,0,
	0xC9C,0x10,0,0,0,0,0,3,0x4080,0x2000,0x8C00,0x31D8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0x8000,0,0,
	0x1C7C,0,0,0,0,0,1,0xC000,0,0x88,0x20,0,0,0,0,
	0,3,0x20C0,0x2000,0x8CF0,0x31F6,0x6000,0,0,0,0x600,
	0,0,0,0,0,0,0,0,0,14,0,0x8000,0,0,0x3CC7,0,0,
	0,0,0,0,0x8001,0x8000,0x98,0x60,0,0,0,0,0,1,
	0x3040,0x3001,0x9FF0,0x30E2,0xFC00,0,0,0,0x300,0,0,
	0,0,0,0,0,0,0,0,0,0x8000,0,0,0xFC0,0x8000,0,0,
	0,0,0,0x8001,0x8000,0x10B0,0xC0,0,0,0,0,0,1,
	0x9840,0x1003,0x986,0x3332,0x7F80,0xE00,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0xC000,0,0,0x80,0xF800,0,0,
	0,0,0,0x4001,0x8000,0x10F0,0x180,0,0,0,0,0,0,
	0x871,0x802,0x1380,0x1F,0x30E0,8,0,0,0x40,0,0,0,0,
	0,0,0,0,0,0,0,0xC000,0,0,0,0x4FC0,0,0,0,0,0,
	0x6000,0,0xE0,0x300,0,0,0,0,0,0,0x2819,0x9E41,
	0x13C0,0x1F99,0xE01C,14,0,0,0x40,0,0,0,0,0,0,0,
	0,0,0,0,0xC000,0,0,0,0x70,0,0,0,0,0,0x3000,0,
	0x1800,0x200,0,0,0,0,0,0,0x2C08,0x3F3,0x1740,
	0xDF0E,0xC007,0xC007,0,0,0,0,0,0,0,0,0,0,0,0,0,
	1,0x8000,0,0,0,0x18,0,0,0,0,0,0x3800,0,0x1800,
	0x600,0,0,0,0,0,0,0x608,0x1E,0xDC0,0xC00D,0x8000,
	0x6003,0x8000,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
	0,0,14,0x8000,0,0,0,0,0x800,0,0x1800,0x400,0,0,
	0,0,0,0,0x308,0,0xCC0,0,0x7000,0x3037,0x8000,0,0,
	0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,3,0xC000,0,0,
	0,0,0x400,0,0x1800,0x400,0,0,0,0,0,0,0x7C8,0,
	0xC80,0,0x1C00,0x103E,0,0,0,0,0,0,0,0,0,0,0,0,
	0,1,0,0,0,0,0,0x4000,0,0,0,0,0x400,0,0x1800,
	0x600,0,0,0,0,0,0,0x670,0,0xE00,0,0x600,0x1EFE,
	0x1800,0,0,0,0,0,0,0,0,0,0,0,0,1,0x8000,0,0,
	0,0,0x6000,0,0,0,0,0x700,0,0x1C00,0x200,0,0,0,0,
	0,0,0x7F,0x8600,0,0,0x300,0x730,0x1C00,0,0x60,0,0,
	0,0,0,0,0,0,0,0,0,0xC000,0,0,0,0,0x2000,0,0,
	0,0,0x600,0,0xC00,0x200,0,0,0,0x8000,0,0,0x18,
	0x7F80,0,0,0x300,0x400,0xB00,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0x6000,0,0,0,0,0x2000,0,0,0,0,0x200,0,
	0xE00,0x400,0,0,1,0x8000,0,0,14,0x80,0,0,0x301,
	0xF600,0x360,0,0,0,0,0,0,0x600,0,0,0,0,0,0,
	0x3000,0,0,0,0,0x2000,0,0x200,0,0,0x300,0,0x600,
	0x400,0,0,0,0,0,0,1,0xFEF0,0x3027,0xC000,0x7C3,
	0x1B00,0x1F8,0,0,0,0,0,0,0,0,0,0,0,0,0,0x1000,
	0,0,0,0,0x4000,0,0x200,0,0,0x100,0,0x3300,0x400,
	0,0,0,0,0,0,0,0x3F7,0xFFE7,0xE000,0x62,0x9C0,
	0x19E,0,0,0,0,0x300,0,0,0,0,0,0,0,0,0x1800,0,
	0,0,0,0x4000,0,0,0,0,0x300,0,0x3100,0x200,0,0,0,
	0,0,0,0,7,0xD987,0x8000,0x1E,0xCD8,0x1E,0,0,0,0,
	0,0,0x80,0,0,0,0,0,0,0x800,0,0,0,0,0x8000,0,0,
	0,0,0x300,0,0x2000,0x200,0,0,0,0,0,0,0,0,0x1E0E,
	0,0,0x738,14,0,0,0,0,0,0,0xC0,0,0,0,0,0,0,
	0xC00,0,0,0,1,0,0,0,0,0,0x100,0,0xC00,0x380,0,
	0,0,0,0,0,0,0,0xE18,0,0,0x1F0,3,0x8100,0,0,0,
	0,0,0,0,0,0,0,0,0,0x400,0,0,0,3,0,0,0,0,0,
	0x180,0,0xC00,0x80,0,0,0,0,0,0,0,0,0x70,0x30,6,
	0,1,0x8100,0,0,0,0,0,0,0,0,0,0,0,0,0x600,0,0,
	0,6,0,0,0,0,0,0x80,0,0xC00,0x18C,0,0,0,0,0,0,
	0,0,0,0x1FC,0x600A,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x200,0,0,0,4,0,0,0,0,0,0x180,0,0x200,
	0x18C,0x100,0,0,0,0,0,0,0,0,0x1DF,0xF00A,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x300,0,0,0,0x1C,0,
	0,0,0,0,0x300,0,0x200,0x100,0x8380,0,0,0,0,0,0,
	0,0,0xE0,0x700B,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x180,0,0,0,0x38,0,0,0,0,0,0x200,0,0x100,
	0x180,0x82C0,0,0,0,0,0,0,0,0,0x100,0x6009,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x80,0,0,0,0x20,0,0,
	0,0,0,0x200,0,0x100,0x80,0xC40,0,0,0,0,0,0,0,0,
	0x6300,0x4019,0xC00,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x80,0,0,0,0x20,0,0,0,0,0,0x400,0,0x80,0x80,
	0xC40,0,0,0,0,0,0,0,1,0xFA00,0x4019,0xCC00,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0xC0,0,0,0,0x20,0,0,
	0,0,0,0x400,0,0x80,0x80,0x1840,0,0,0,0,0,0,0,3,
	0x1E00,0xC010,0x6000,0,0x180,0,0,0,0,0xC0,0,0,0,
	0,0,0,0,0x70,0x1C00,0,0,0x20,0,0,0,0,0,0x400,0,
	0x7C0,0x180,0x30C0,0,0,0,0,0,0,0,6,0x1A00,0x6010,
	0x2000,0,0xF0,0,0,0,0,0,0x2000,0,0,0,0,0,0,
	0x18,0x1C00,0,0,0x20,0,0,0,0x600,0,0xC00,0,0x380,
	0x101,0xE0C0,0,0,0,0,0,0,0,0x3C,0,0x3C90,0x2000,
	0,0x70,3,0,0,0,1,0xA000,0,0,0,0,0,0,15,0xC00,
	0,0,0x20,0,0,0,0,0,0x800,0,0x6000,0x603,0x80,0,
	0,0,0,0,0,0,0x78,0,0x7B0,0x3000,0,0x60,7,0,0,0,
	0x606,0xC000,0,0,0,0,0,0,1,0x8000,0,0,0x20,0,0,
	0,0,0,0x800,0,0x4000,0x1C02,0x100,0,0,0,0,0,0,0,
	0x58,0,0x120,0x1000,0,0,0x1C,0,0,0,0x600,0xC00,0,
	0,0,0,0,0,0,0xC000,0,0,0x20,0,0,0,0,0,0x800,
	0x30,0,0x3004,0x100,0,0,0,0,0,0,0,0x40,0,0xE0,
	0x1000,0,0,0x14,0,0,0,0,0xC00,0,0,0,0,0,0,0,
	0x6000,0,0,0x60,0,0,0,0,0,0x80E,0x70,0,0x4006,
	0x100,0,0,0,0,0,0,0,0xC0,0,0,0x1000,0,8,0x1C,0,
	0,0,0,0xC00,0,0,0,0,0,0,0,0x2180,0,0,0x40,0,0,
	0,0,0,0x41E,0x40,1,0x8002,0x100,0,0,0,0,0,0,0,
	0x180,0,0,0x1800,0,8,0,0,0,0x600,0,0,0,0,0,0,
	0,0,0,0x3080,0,0,0x40,0,0,0,0,0,0x608,0,3,2,
	0x300,0,0,0,0,0,0,0,0x300,0,0,0xE00,0,0,0,0,0,
	0x200,0,0,0,0,0,0,0,0,0,0x1000,0,0,0xC0,0,0,0,
	0,0,0x300,0,6,2,0x200,0,0,0,0,0,0,0,0x7E00,0,
	0,0x380,0,0x1C80,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x1000,0,0,0x80,0,0,0,0,0,0x100,0,4,2,0x200,
	0x2000,0,0,0,0,0,7,0xC000,0,0,0x80,0,0x1EC0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0x1000,0,0,0x180,0,0,0,
	0,0,0x180,0,2,4,0x200,0x7000,0,0,0,0,0,6,0,0,
	0,0xC0,0,0xFC0,0,0,0,0x300,0,0,0,0,0,0,0,0,0,
	0x1000,0,0,0x100,0,0,0,0,0,0x80,0,2,4,0x600,
	0x3000,0,0,0,0,0,0x1C,0,0,0,0x40,0,0x780,0,0,0,
	0x300,0,0,0,0,0,0,0,0,0,0x3000,0,0,0x300,0,0,
	0,0,0,0xC0,0,3,8,0x400,0,0,0,0,0,0,0x38,0,0,
	0,0x30,0,0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x3000,0,0,0x1E00,0,0,0,0,0,0x40,0,1,8,0x400,0,
	0,0,0,0,0,0x20,0,0,0,0x18,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0x2000,0,1,0xFC00,0,0,0,0,0,0x40,
	0,2,8,0x800,0,0,0,0,0,0,0x20,0x30,0,0,8,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x2000,0,7,0,0,0,
	0,0,0,0x40,0,3,12,0x800,0,0,0,0,0,0,0x20,0x30,
	0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2000,
	0,0x1C,0,0,0,0,0,0,0x40,0,2,4,0x1800,0,0,0,0,
	0,0,0x20,0,0x1C0,0,2,0x8000,0,0,0,0,0,0,0,
	0x100,0,0,0,0,0,0,0x2000,0,0x10,0,0,0,0,0,0,
	0x60,0,0x1E,6,0x3000,0,0,0,0,0,0,0x20,0,0x1C0,0,
	3,0x8000,0,0,0,0,0,0,0,0x100,0,0,0,0,0,0,
	0x2000,0,0x60,0,0,0,0,0,0,0x20,0,0x30,3,0xE000,
	0,0,0,0,0,0,0xF0,0x700,0,0,1,0x8000,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x2000,0,0x40,0,0,0,0,0,0,
	0x20,0,0x20,0,0,0,0,0,0,0,0,0x70,0x700,0,0,0,
	0x8000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2000,0,
	0x40,0,0,0,0,0,0,0x30,0,0x20,0,0,0,0,0,0,0,0,
	0x60,0,0,0,0,0x8000,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x6000,0,0x40,0,0,0,0,0,0,0x10,0,0x60,0,0,
	0,0,0,0,0,0,0x30,0x8000,0,0,1,0xC000,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0x4000,0,0x40,0,0,0,0,0,
	0,0x10,0,0x40,0,0,0,0,0,0,0,0,0x10,0xC000,0,
	0x1800,0,0xC000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0xC000,0,0xC0,0,0,0,0,0,0,8,0,0x40,0,0,0,0,0,
	0,0,0,0x18,0x4D00,0,0x1C00,0,0xC000,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0x8000,0,0x180,0,0,0,0,0,0,6,
	0,0x1C0,0,0,0,0,0,0,0,0,8,0x1F80,0,0x1D80,0,
	0xC000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xC000,0,
	0x300,0,0,0,0,0,0,2,0,0x100,0,0,0,0,0,0,0,0,
	8,0xDF80,0,0x18C0,0,0x8000,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0x8000,0,0xE00,0,0,0,0,0,0,2,0,0x300,
	0,0,0,0,0,0,0,0,8,0xCF00,0,0x40,0,0x8000,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x8000,0,0xE00,0,0,0,
	0,0,0,1,0,0x200,0,0,0,0,0,0,0,0,8,0x8000,0,
	0x8C0,0,0x8000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x8000,0,0x1C00,0,0,0,0,0,0,1,0,0x400,0,0,0,0,
	0,0,0,0,4,0,0x41,0xCCC0,1,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0x8000,0,0x1C00,0,0,0,0,0,0,0,
	0x8000,0xC00,0,0,0,0,0,0,0,0,6,0x80,0x1FF9,
	0xEC00,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x8000,0,0x7000,0,0,0,0,0,0,0,0x8000,0x3000,0,0,
	0,0,0,0,0,0,2,0x83,0xE00E,0x6C00,2,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0x8000,0,0xF000,0,0,0,0,
	0,0,1,0x8000,0x6000,0,0,0,0,0,0,0,0,6,12,3,
	0xC00,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x8000,
	0x180,0xE000,0,0,0,0,0,0,0,0x8000,0xC000,0,0,0,
	0,0,0,0,0,12,0x7F8,1,0x9C00,12,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,1,0x8000,0x180,0xC000,0,0,0,0,0,
	0,0,0xC1FF,0,0,0,0,0,0,0,0,0,6,0x1CF0,0,0xAE00,
	8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0x1F1,
	0x8000,0,0,0,0,0,0,0,0x7F50,0,0,0,0,0,0,0,0,
	0,3,0xF800,0,0xFE00,0x18,0,0,0x1C00,0,0,0,0,0,0,
	0,0,0,0,0,1,0,0xFE,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x1F00,0x30,0,0,0x1E00,0,0,
	0,0,0,0,0,0,0,0,0,3,0,0x20,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x3E80,0x30,0,0,
	0xE00,0,0,0,0,0,0,0,0,0,0,0,6,0,0x70,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,
	0x30,0,0,0x780,0,0,0,0,0,0,0,0,0,0,0,4,0,
	0x10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0xC0,0x20,0,0,0x380,0,0,0,0,0,0,0,0,0,0,
	0,4,0,0x30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0x40,0x2E0,0,0,0x2CC,0,0,0,0,0,0,0,
	0,0,0,0,4,0,0x60,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0x78,0xE7C0,0,0,0x274,0,0,0,0,
	0,0,0,0,0,0,0,4,0,0x1C0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,7,0xFC00,0,0,0x20C,0,
	0,0,0,0,0,0,0,0,0,0,4,0,0x7F00,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x1800,0,0,
	0x618,0,0,0,0,0,0,0,0,0,0,0,4,0,0x4000,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
	0x8300,0,0,0x730,0,0,0,0,0,0,0,0,0,0,0,4,0,
	0x4000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,1,0x8300,0,0,0x120,0,0,0,0,0,0,0,0,0,0,
	0,12,12,0xC000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0x7300,0,0,0x3F40,0,0,0,0,0,
	0,0,0,0,0,0,12,15,0x8000,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x5D00,0,0,0x7DC0,
	0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x2100,0,0,
	0xC400,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x3100,0,0,0x8C00,0,0,0,0,0,0,0,0,0,0,0,0x1E,
	14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0x1F00,0,1,0x9800,0x180,0,0,0,0,0,0,0,
	0,0,0,0x1A,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0xC00,0,14,0x3000,0x100,0,0,0,
	0,0,0,0,0,0,0,2,0x18,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x38,0xD000,0,0,
	0,0,0,0,0,0,0,0,0,0x1F,0x10,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x60,
	0x8000,0,0,0,0,0,0,0,0,0,0,0,0x1E,0x70,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x41,0x8000,0,0,0,0,0,0,0,0,0,0,0,0x34,0x180,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0xC1,0x8000,0,0,0,0,0,0,0,0,0,0,0,
	0x7F,0x8100,0,0,0,0,0,0,0,0,0,0,0,0x3000,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0xFE,0,0,0,0,0,0,0,0,
	0,0,0,0,0x7A,0xE0,0,0,0,0,0,0,0,0,0,0,0,
	0x3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0x60,0,0,0,
	0,0,0,0,0,0,0,0,0,0x3C,0x30,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x7C,0x60,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x78,0x80,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0x30,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0x78,0x180,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0x3C,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x78,0x300,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0x38,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x78,0x600,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x100,0,0,0,0,0,0,0,0,0,0,0,0,0x3C,0xC00,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0x100,0,0,0,0,0,0,0,0,0,0,0,0,0x3E,
	0x400,0xFC0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x3E,0x600,0x1FC0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x3F,0xFE00,0x200,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0x1F,0xF300,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0x3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,15,0xF380,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,3,0xFEE0,0,0,15,0,0,0,0,0x100,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0xFFFE,0,0,3,0,0,0,0,
	0x100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x3F80,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0x100,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,13,0x8000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	14,7,0xC000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x700,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x7E0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x7B00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
	0xFE00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	14,0xF800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x3F0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x19,0x8000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x1FFC,0x7FF,0x8C0F,0,0x3FF,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x33,0,0,0,0,0,0,0,0,0,0,
	0,0,1,0xFFC0,0,0,0xFF,0xF006,0xFC00,0xF000,0xFC03,
	0xFC00,0xFC00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0xEE,0,0,0,0,0,0,0,0,0,0,0,0,7,0x7F,0xE000,
	0,0x1F00,1,0x8000,0x4000,0x7FC,0,0x3FF,0x8000,0,0,
	6,0,0,0,0,0,0,0,0,0,0,0,0,0x86,0,0,0,0,0,0,
	0,0,0,0,0,0,4,0,0x1FF8,1,0xF000,0,0,0,0,0,0,
	0x7000,0,0,6,0,0,0,0,0,0,0,0,0,6,0,0,0x186,0,
	0,0,0,0,0,0,0,0,0,0,6,0x7FC,0,12,15,0,0,0,0,
	0,0,0,0x1C00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x410F,0x8000,0,0,0,0,0,0,0,0,0,0,0x7D,0xF800,0,
	3,0x38,0,0,0,0,0,0,0,0x1FFF,0xE000,0,0,0,0,0,
	0,0,0,0,0,0,0,0,1,0xF60D,0xA000,0,0,0,0,0,0,
	0,0,0,0x7E,0x180,0,0,1,0x87E0,0,0,0,0,0,0,0,
	0xC00,0x6F80,0,0,0,0,0,0,0,0,0,0,0,0,0,0x1E1,
	0x9401,0xF800,0,0,0,0,0,0,0,0x18,0,0xFE3,0xFE00,
	0,0,0,0xDC00,0,0,0,0,0,0,0,0,0x7C70,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0x3F0,0x8E00,0xF000,0,0,0,0,
	0,0x1E,0,0x1FF,0x8023,0xF800,0xC00,0,0,0,0x6000,0,
	0,0,0,0,0,0,0,0x340F,0xE000,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0x4700,0x2000,0,0,0,0,0,0x33,15,
	0xFF00,0xFFFE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,
	0x1FC0,0,0,0,0,0,0,0,0,0,1,0,0,0xFF,0x8580,
	0x3000,0,0,0,0,0,0x1FF3,0x1F0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,2,0x7E,0,0,0,0,0,0,0,0,0,3,
	0xFF00,0,0xC0,0x580,0x3000,0,0,0,0,7,0xA001,0xFE00,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
	0,0,0,0,0,0,0,0x61FF,0,0x3F,0x9980,0x1800,0,0,0,
	0,4,0xE000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,6,0,0,0,0,0,0,0,0x780,0,0x1F,0xB000,0xFFFE,
	0x3FE0,0x7E00,0x1800,0,0,0,0,0x1FC,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,
	0,0x1CFF,0xC1F0,0x19,0xF000,3,0xFFFF,0xF000,0xC00,0,
	0,0,15,0xFE00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0xF8,0,0,0,0,0,0,0,0x7001,0xC1A0,0x3C,
	0x2000,0,0,0,0xC00,0,0,0,0x70,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x700,0,0,0,0,0,0,
	0x3801,0xC001,0x8199,0xE3FC,0,0,0,12,0x800,0,0,0,
	0x1E0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x3C00,0,0,0,0,0,0x1DF,0xC701,0,0xFE06,0x3C04,
	0,0,0,15,0xF800,0,0,0,0xE00,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x4000,0,0,0,0,0,
	0xFE20,0xF6,0,0,0,0,0,0,6,0x800,0,0,0,0x7800,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0xC000,0,0,0,0,0x3F,0,12,0,0,0,0,0,0,14,0,0,
	0,1,0xC000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,1,0x8000,0,0,0,0x3FF,0xFFFC,0,0,0,0,0,0,
	0,0,0x78,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,1,0x8000,0,0,0,0x3F8,0,0,0,0,
	0,0,0,0,0,7,0xFFF0,0,0,0x3F0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,1,0x8000,0,0,0,0x7E0,
	0,0,0,0,0,0,0,0,0,0,15,0x8000,0,0x3E00,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x7C00,
	0,0,3,0x87F8,0,0,0,0,0,0,0,0,0,0,0,0x7E00,7,
	0xC000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,7,0xFFE0,0,0,3,0xC01F,0,0,0,0,0,0,0,0,0,
	0,0,0x1FF,0xFFF8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0xF8,0,0,0,3,0xE001,0xC000,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0xC0,0,0,0,0,0x1F,0x7FF8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0xE0,0,0,0,0,0x7F,
	0xFF80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x20,0,0,0,0,
	0x78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x60,0,0,0,0,
	0xC0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFF,0xC000,0,
	0,0,0x180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0x3C00,0,0,0,0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0x3C0,0,0,0,0x80,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0x3FF,0xF800,0xF000,0,0x7C,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0xF60,0x7FF,0xFFE,0,3,0xFE00,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0x3870,0,0,0,0,0xF800,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0x408,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};

mpr_static(bimage, 640, 320, 1, bimg);
SHAR_EOF
fi # end of overwriting check
echo shar: extracting "'sunclock.1'" '(2108 characters)'
if test -f 'sunclock.1'
then
       echo shar: will not over-write existing file "'sunclock.1'"
else
cat << \SHAR_EOF > 'sunclock.1'
.TH SUNCLOCK 1 "21 DEC 1988"
.UC 4
.SH NAME
sunclock \- Show illuminated portion of Earth
.SH SYNOPSIS
.B sunclock
.SH DESCRIPTION
.I sunclock
is a SunView application that displays a map of the Earth and
indicates the illuminated portion of the globe by drawing
sunlit areas dark on light, night areas as light on dark.
.PP
The program initially appears iconic, showing a small map in a
126 by 63 pixel double-sized icon with the local date and time
at the bottom.  If opened, a 640 by 320 pixel map is displayed
which shows both the local and Universal (GMT) time to the second.
While the window is open, pressing the right mouse button displays
a menu which lets you step the clock from the present time forward
or backward in increments of one hour, day, week, month, or year.
If you select ``Animate'' from this menu, the program steps continuously
every half second.  Try selecting ``Week'' then ``Animate'' to watch
the seasons pass.  Select ``Year'' and ``Animate'' and you can see the
(ever so subtle) precession of the equinoxes.  Selecting ``Real time''
restores the current time display.
.SH HOW IT WORKS
.I sunclock
calculates the position of the Sun using the algorithm in chapter 18 of:
.PP
.I Astronomical Formulae for Calculators
by Jean Meeus, Third Edition, Richmond: Willmann-Bell, 1985.
.PP
and Mercator projects the illuminated area onto map image.  The
Sun's position is calculated to better than one arc-second
in accuracy.
.SH BUGS
The map isn't rescaled if you resize the open window.  (I don't want
to have to store a vector database for the map.)
.PP
The illuminated area shown is the area which would be sunlit
if the Earth had no atmosphere.  The actual illuminated area is
larger because of atmospheric refraction and twilight.
.PP
Only works for dates between 1970 and 2034 due to limited range of Unix
time representation.
.SH AUTHOR
    John Walker
.br
    Autodesk, Inc.
.br
    2320 Marinship Way
.br
    Sausalito, CA  94965
.br
    USA
.br
    {sun,well,uunet}!acad!kelvin
.br
or: kelvin@acad.uu.net
.br
    Fax:   (415) 389-9418
.br
    Voice: (415) 332-2344 Ext. 2829
SHAR_EOF
fi # end of overwriting check
#	End of shell archive
exit 0