From:	SMTP%"erkamp@TITAN.arc.ab.ca" 18-JAN-1994 11:44:10.63
To:	EVERHART
CC:	
Subj:	Reminder Program

Message-Id: <9401181641.AA14661@eureka.arc.ab.ca>
Date: 18 Jan 94  9:25 -0600
From: Bob Erkamp 450-5181 <erkamp@TITAN.arc.ab.ca>
To: everhart@arisia.gce.com
Subject: Reminder Program

<------------------------------AAAREADME.TXT------------------------------>
Here is my reminder program that is of course totally unsupported but has worked 
unchanged through many, many versions of VMS. All files should reside in one 
directory. I have set it up currently to run from SYS$LOGIN but you may put it 
anywhere so that users can share it. It needs no special privileges with the 
exception of being able to create a subprocess. It will create 2 files in your 
SYS$LOGIN directory:

MESSAGES.DAT which contains the actual reminders
MESSAGES.NEX which is used to determine when subprocesses wake up

When you add a reminder you have the option of having a reminder at one specific
time or automatic reminders (the default). Automatic reminder keep halfing the 
time between when the message was entered and when the event occurs. So if it's 
in 30 days it will remind you after 15 then in 7 more etc until the actual date 
at which time it halves the minutes between signing on and the actual event upto
1 minute before the event. If you have problems with the setup let me know. I 
have no plans to make changes to the actual program as I just don't have the 
time right now. You may pass this on or make changes as long as I get credit for
the original.

-------------------------------------------------------------------------------
 Bob Erkamp                                                      A L B E R T A
                           --> It Could Happen <--             R E S E A R C H
 erkamp@arc.ab.ca                                                C O U N C I L
-------------------------------------------------------------------------------
<------------------------------LOGIN.COM------------------------------>
$ !
$ ! These lines should be placed in your LOGIN.COM file
$ !
$ IF "''F$MODE()'" .NES. "INTERACTIVE" THEN GOTO NON-INTERACTIVE
$ !
$ ! This is the actual reminder process. The SET NOCONTROL=Y must be done
$ ! to prevent a CTRL-Y from killing the subprocess
$ !
$ SET NOCONTROL=Y
$ SPAWN/NOWAIT/NOLOG/NOLOGICALS/NOSYMBOLS RUN SYS$LOGIN:REMINDER
$ SET CONTROL=Y
$ !
$ ! This is the program to create reminders
$ !
$ REMIND*ERS:==@SYS$LOGIN:REMINDERS
$ !
$ NON-INTERACTIVE:
<------------------------------REMINDERS.COM------------------------------>
$ !
$ ! This is the data entry portion of the reminder program and should be in
$ ! your login directory
$ !
$ DEASSIGN SYS$INPUT
$ DEFINE SYS$INPUT SYS$COMMAND
$ SET NOCONTROL=Y
$ RUN SYS$LOGIN:MESSAGES
$ SET CONTROL=Y
<------------------------------REMINDER.FOR------------------------------>
	INCLUDE '($SYSSRVNAM)'
	INCLUDE '($DVIDEF)'
	INCLUDE '($SSDEF)'
	INCLUDE '($JPIDEF)'
	INCLUDE '($BRKDEF)'
	INCLUDE '($LNMDEF)'
	INTEGER*4 RANGE(2)/0,'7FFFFFFF'X/
	INTEGER D(100),MS(100),ND(100),NMS(100),CD,CMS
	INTEGER MMS,PID/0/,PID_ADDR,LENGTH
	INTEGER*2 JPI_LIST(8)/4,JPI$_PID,6*0/,HOUR,MIN,FLAGS,DEVICE
	INTEGER*2 LIST(6),LC
	CHARACTER*1780 BRKMESSAGE
	CHARACTER*90 MESSAGE(20)
	CHARACTER*60 MESSAGES(100)
	CHARACTER*23 ABSTIME
	CHARACTER*30 NEXTC
	CHARACTER*17 TIMES(100)
	CHARACTER*20 TERMINAL,VTERMINAL
	CHARACTER*4 BOLDON,BOLDOFF
	CHARACTER*2 HOURC,MINC
	CHARACTER*1 ESC/27/,BELL/7/,CR/13/,LF/10/
	EQUIVALENCE (JPI_LIST(3),PID_ADDR)
	EQUIVALENCE (BRKMESSAGE,MESSAGE)
!
! FIGURE OUT IF WE CAN WRITE BOLD MESSAGES
!
	CALL LIB$SCREEN_INFO(FLAGS,DEVICE)
!
! IT'S A VT52 OR HIGHER
!
	IF(DEVICE.GT.64)THEN
!
! TO HIGHLIGHT MESSAGES
!
	  LC=60
	  BOLDON=ESC//'[1m'
	  BOLDOFF=ESC//'[0m'
	ELSE
	  LC=54
	  BOLDON='>>> '
	  BOLDOFF=' <<<'
	END IF
!
! GET PHYSICAL TERMINAL IF ON A VIRTUAL TERMINAL
!
	LIST(1)=20
	LIST(2)=LNM$_STRING
	LIST(3)=%LOC(VTERMINAL)
	LIST(5)=%LOC(LENGTH)
	CALL SYS$TRNLNM(,'LNM$PROCESS_TABLE','TT',,LIST)
	I=LIB$INDEX(VTERMINAL,'$')+1
	IF(I.NE.0)VTERMINAL=VTERMINAL(I:)
	LIST(2)=DVI$_TT_PHYDEVNAM
	LIST(3)=%LOC(TERMINAL)
	CALL SYS$GETDVI(,,VTERMINAL(:LENGTH),LIST,,,,)
	TERMINAL=TERMINAL(:LENGTH)
!
! OPEN MESSAGES FILE
!
100	OPEN(UNIT=1,FILE='SYS$LOGIN:MESSAGES',STATUS='OLD',ERR=997,
	1 IOSTAT=IOSTAT)
!
! READ IN ALL THE MESSAGES
!
200	NMSGS=1
300	READ(1,1,END=400,ERR=999)D(NMSGS),MS(NMSGS),ND(NMSGS),NMS(NMSGS),
	1 TIMES(NMSGS),MESSAGES(NMSGS)
	NMSGS=NMSGS+1
	GOTO 300
!
! FIGURE OUT TOTAL NUMBER OF MESSAGES
!
400	CLOSE(1)
	NMSGS=NMSGS-1
	NEXTC=' '
	MMS=9999999
!
! GET CURRENT TIME IN INTERNAL FORMAT
!
	CALL SYS$GETTIM(CT)
!
! PUT IT IN CHARACTER FORM
!
	CALL SYS$ASCTIM(,ABSTIME,CT,)
!
! CONVERT TO A FORM I CAN WORK WITH
!
	CALL LIB$DAY(CD,CT,CMS)
	CMS=CMS+6000
!
! START PROCESSING AND UPDATE THE FILE
!
500	OPEN(UNIT=1,FILE='SYS$LOGIN:MESSAGES',STATUS='OLD',ERR=998,
	1 IOSTAT=IOSTAT)
	INDEX=0
	DO I=1,NMSGS
!
! IF THE NEXT REMINDER DATE IS PAST THEN BROADCAST
!
	  IF(CD.GT.ND(I).OR.CD.EQ.ND(I).AND.CMS.GE.NMS(I))THEN
	    INDEX=INDEX+1
	    MESSAGE(INDEX)=CR//BOLDON//TIMES(I)//' '//MESSAGES(I)(:LC)//
	1   BOLDOFF//BELL//LF
!
! UPDATE NEXT REMINDER TIME AND WRITE TO THE FILE IF APPROPRIATE
!
	    ND(I)=NINT((D(I)-CD)/2.0)+CD
	    IF(D(I).NE.CD)THEN
	      NMS(I)=0
	    ELSE
	      NMS(I)=(MS(I)-CMS)/2+CMS
	      IF(NMS(I)+30000.GT.MS(I))NMS(I)=MS(I)
	    END IF
	  END IF
!
! SAVE ANY MESSAGES THAT ARE STILL IN THE FUTURE
!
	  IF(D(I).GT.CD.OR.(D(I).EQ.CD.AND.MS(I).GT.CMS))THEN
	    WRITE(1,1)D(I),MS(I),ND(I),NMS(I),TIMES(I),MESSAGES(I)
	  ELSE
!
! OTHERWISE WRITE A DUMMY RECORD
!
	    WRITE(1,4)
	  END IF
!
! WHEN IS THE NEXT MESSAGE TODAY
!
	  IF(D(I).EQ.CD.AND.NMS(I).GT.CMS.AND.NMS(I).LT.MMS)THEN
	    NEXTC=ABSTIME(:12)
	    MMS=NMS(I)
	  END IF
	END DO
	CLOSE(1)
!
! GET PHYSICAL TERMINAL 
!
	LIST(1)=20
	LIST(2)=LNM$_STRING
	LIST(3)=%LOC(VTERMINAL)
	LIST(5)=%LOC(LENGTH)
	CALL SYS$TRNLNM(,'LNM$PROCESS_TABLE','TT',,LIST)
	I=LIB$INDEX(VTERMINAL,'$')+1
	IF(I.NE.0)VTERMINAL=VTERMINAL(I:)
	LIST(2)=DVI$_TT_PHYDEVNAM
	LIST(3)=%LOC(TERMINAL)
	CALL SYS$GETDVI(,,VTERMINAL(:LENGTH),LIST,,,,)
	TERMINAL=TERMINAL(:LENGTH)
!
! IF THERE IS A REMINDER DISPLAY IT
!
	IF(INDEX.NE.0)CALL SYS$BRKTHRUW(,BRKMESSAGE(:INDEX*90),TERMINAL,
	1 %VAL(BRK$C_DEVICE),,,,,,,)
	IF(NEXTC.EQ.' ')GOTO 999
!
! FIGURE TIME FOR NEXT WAKE-UP (maximum time ever 20 minutes - ARGUS)
!
!	IF(MMS-CMS.GT.120000)MMS=CMS+120000
	HOUR=MMS/360000
	MIN=(MMS-(HOUR*360000))/6000
	ENCODE(2,3,HOURC)HOUR
	ENCODE(2,3,MINC)MIN
	NEXTC=NEXTC(:12)//HOURC//':'//MINC//':00'
!
! FIGURE OUT MY PID AND SAVE IT IN A FILE SO THAT IT CAN BE STOPPED
!
	PID_ADDR=%LOC(PID)
	CALL SYS$GETJPI(,,,JPI_LIST,,,)
	OPEN(UNIT=1,FILE='SYS$LOGIN:MESSAGES.NEX',ERR=600,STATUS='UNKNOWN',
	1 CARRIAGECONTROL='LIST')
	WRITE(1,2)PID,CD,MMS,NEXTC
	CLOSE(1)
!
! CONVERT NEXT TIME TO INTERNAL FORMAT
!
600	CALL SYS$BINTIM(NEXTC,NEXT)	
!
! SCHEDULE WAKE-UP 
!
	CALL SYS$SCHDWK(,,NEXT,)
!
! SHRINK WORKING SET SO AS TO SAVE MEMORY
!
	CALL SYS$PURGWS(RANGE)
!
! PLEASANT DREAMS
!
	CALL SYS$HIBER
	GOTO 100
!
! FIND OUT WHY WE CAN'T OPEN MESSAGES.DAT
!
997	IF(IOSTAT.NE.30)GOTO 999	! FILE LOCKED BY ANOTHER USER?
	CALL LIB$WAIT(1.0)
	GOTO 100
998	IF(IOSTAT.NE.30)GOTO 999	! FILE LOCKED BY ANOTHER USER?
	CALL LIB$WAIT(1.0)
	GOTO 500
1	FORMAT(2(I5.5,I7.7),A17,A)
2	FORMAT(I10.10,1X,I7.7,1X,I7.7,1X,A)
3	FORMAT(I2.2)
4	FORMAT('99999',7X,'99999')
999	END
<------------------------------REMINDER.UUE------------------------------>
begin 644 REMINDER.EXE
MJ``P`$0`6```````,#(P-0$!``#__________P`````H```!D1_O4```````
M2```:-_^?P)&````-@`````````````5``````````$```````````````A2
M14U)3D1%4@`````````````````````````````````````````",#$`````
M````````````(!^1'^_0D``%,#0M,#``````````````$``!``$```"`````
M`@```!``!``"````B@````,````,`!$`!@```(P````0``0`%P```(H````'
M````$``)`!L```"`````"P```!```0`D````"@0``!0````,`!0`[/\_`(P`
M`/T?`$```````"$```,`````9````0I&3U)25$Q?,#`Q'P"!```````A```#
M``````T```$*3$E"4E1,7S`P,1\`#@``````(0```P````!4"P`!"E-#4E-(
M4E\P,#$``/__________________________________________________
M____________________________________________________________
M____________________________________________________________
M______________________^`0```3$Y-)%!23T-%4U-?5$%"3$4`5%0`)`!3
M65,D3$]'24XZ34534T%'15,`4UE3)$Q/1TE..DU%4U-!1T53+DY%6``!@@$"
M&P4%&P<'`Q41*00;"@H3`1L'!Q,!&P<'$P$I!!L"`@0/!3DY.3DY$P</!3DY
M.3DY!%LQ;5LP;3HP,``X/0``````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````````````````````````````0`&0,`````````
M````````````____?P``````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````&P<-"@``````````````````````````````````````````````
M````````````````%P`.`8`O```>``X!ER\``!0`#@&U+P``%``.`<DO```"
M````[B\``/`O```1``X!!`(```(`#@$6`@``!0````````!(,```4#``````
M``!@$0```0`.`1D"```"````-#```'`P``````X!``````@`````````````
M`(0P``!@$0```````````````````````!(`#@$;`@``"`````$"`0`.!P``
ML#````\!`0`#````%@4```@P```8`0(````.`0`````!`````0(!``$````0
M,```!``````````<,```$#`````````#````]"\``!`P``#X+P``"`````$"
M`0`.!P``L#````\!`0`#````%@4```@P```8`0(`!0````````!(,```4#``
M``````!@$0```@```#0P``!P,```"```````````````W#```&`1````````
M````````````````"P````````#<,```+#````$`````````````````````
M````````````````````!P````````````````````@+````````````````
M```6``X!+@(```<````!`@$`#@<``-0Q```#````#P$$``<!`@`8`0(``@``
M`"0P```8,```!```````````````&#`````````!````&`L```$``````@``
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````"````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````````````````````````````#\3[B/0`#>[^CY
M__];^JM(_W\2``"QJ_R/0``5+[`\J_["`UXH`^]/S/__;I"K]7[0CJOIP@->
M*`/O/\S__VZ0J_5^T(ZK[1$7`0$!L#:K_M"//CX^(*OIT(\@/#P\J^VP%,ML
MX;`"RV[AGJO54/=0RW#AWJL04/=0RW3A^JMDGY#D_G_ZRX0`__<1``#64!,6
M"E`!%`$`4-=0PU`46"Q80*O5(!2KU;"/$@'+;N&>J\%0]U#+<.$*JQ`!%`$`
M4+!0RY``GJO5RY0`^LN8`)\0Y/Y_"JL0`10!`%`L4*O!(!2KP0'ZR\0`_U\1
M``#H4`,Q+0;0`5@!`9_/S`"?SS0&W^\_R___W0'[!/]5$0``"E@!CV0````!
M`%C?2,LHV_L!_S(1```*6`&/9`````$`6-](R[C<^P'_&Q$```I8`8]D````
M`0!8WTC+2-[[`?\$$0``"E@!CV0````!`%C?2,O8W_L!_^T0``#%$5A0L!'+
MD``*4!&/I`8```$`4)Y`R]?XRY0`G\N0`/L!_\H0``#%/%A0L#S+Z``*4#R/
M<!<```$`4)Y`RSSAR^P`G\OH`/L!_Z,0``#[`/^@$```UE@Q,_\!`0'ZR_``
M_W<0``##`5BK&"P`;B`>JZ/0CW^6F`"K"/K+^`"?>-_^?_K+``&?2-[^?_K+
M%`'_@!```,"/<!<``*L$^LLD`?\[$```Z%`#,?4$U%K0JQA7T`%8U5<4`S$&
M`P$*6`&/9`````$`6-%K2,M(WA0M"E@!CV0````!`%C1:TC+2-X3`S%H`0I8
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
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````$````!``````````)P```"H````!```````````
M````````````````````````````````````"@````$````H````0`(``!`"
M``#@`0``V`$``.@!```X`@``F`(``"`#``#@````!0````(```#X!```\`0`
M`#@(```@!```6`4```$````#````N``````````!`````$8```$`#0``````
M````````````````0```````````````````````````````````````````
M````````````````````````````````````````````````````!D9/4E)4
M3```````````````````````````````````````````````````````````
M``````````````````9,24)25$P`````````````````````````````````
M```````````````````````````````````````````&4T-24TA2````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````````````!2\``$````-4D5-24Y$15(D34%)
M3A2^```V```-4D5-24Y$15(D34%)3JJY`A4``WX.\P(#^`(#^/SM`@'H_/@"
M!/C[^_?W^/7H^??D`@/O`@3Q^P(!`<@`_@(#_?3[^0(#^`(#]P(#]_<"`_@"
M`?'^`@/QP/X"!`&*`-/M`@'LU[@"!`#``@0!PP`"!.K%^`(![OH"`_?[^_?W
M]_7H^??D`@/P`@'5`@3T].?=W0(#V/KW`@'TPP(#]P(#]P(#]P(#]_D"!OWX
M]PX#"3H/`/CW`@?]^@:_`#@'```!O0``````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
J````````````````````````````````````````````````````````
`
end
<------------------------------MESSAGES.FOR------------------------------>
	INCLUDE '($SYSSRVNAM)'
	INCLUDE '($LIBDEF)'
	INCLUDE '($CLIDEF)'
	INCLUDE '($SSDEF)'
	INTEGER*4 FLAGS
	INTEGER CT(2),IT(2),ND,NMS,CND,CNMS,PID/0/,AD,AMS
	INTEGER D(100),MS(100),OD(100),OMS(100)
	CHARACTER*60 MESSAGE,MESSAGES(100)
	CHARACTER*23 ABSTIME,CURRENT
	CHARACTER*17 NEXT,TIMES(100)
	CHARACTER*11 DATE,SAVEDATE,TIME
	CHARACTER*1 RESP
!
! SET UP FLAGS FOR SPAWN
!
	FLAGS=CLI$M_NOCLISYM.OR.CLI$M_NOWAIT.OR.CLI$M_NOLOGNAM.OR.
	1 CLI$M_NOKEYPAD
!
! CHECK IF THERE IS A SUBPROCESS RUNNING AND WHEN IT WILL WAKE UP
!
	OPEN(UNIT=1,FILE='SYS$LOGIN:MESSAGES.NEX',STATUS='OLD',ERR=100)
	READ(1,12,END=100,ERR=100)PID,LND,LNMS,NEXT
	CLOSE(1)
!
! GET CURRENT DATE
!
100	CALL LIB$DATE_TIME(SAVEDATE)
!
! NOW CONVERT THE CURRENT TIME
!
	CALL SYS$GETTIM(CT)
	CALL SYS$ASCTIM(,CURRENT,CT,)
	CALL LIB$DAY(CND,CT,CNMS)
	IF(LND.EQ.CND.AND.LNMS.GT.CNMS)THEN
		NNMS=LNMS
	ELSE
		PID=0
		NNMS=9999999
		LNMS=9999999
	END IF
	NMSGS=1
!
! OPEN MESSAGE FILE
!
200	OPEN(UNIT=1,FILE='SYS$LOGIN:MESSAGES',STATUS='OLD',ERR=1021,
	1 IOSTAT=IOSTAT)
!
! GET TO THE END SO WE CAN ADD MORE MESSAGES
!
300	READ(1,8,END=500,ERR=1022)D(NMSGS),MS(NMSGS),OD(NMSGS),OMS(NMSGS),
	1 TIMES(NMSGS),MESSAGES(NMSGS)
	NMSGS=NMSGS+1
	GOTO 300
!
! MESSAGE FILE DIDN'T EXIST SO MAKE ONE
!
400	WRITE(6,1)
	OPEN(UNIT=1,FILE='SYS$LOGIN:MESSAGES',STATUS='NEW',ERR=1023,
	1 CARRIAGECONTROL='LIST')
!
! FIGURE OUT TOTAL NUMBER OF MESSAGES
!
500	NMSGS=NMSGS-1
	CLOSE(1)
!
! MAKE THE DATE LOOK NICE
!
600	IF(SAVEDATE(11:11).EQ.' ')SAVEDATE=' '//SAVEDATE
!
! PROMPT FOR DATE OF MESSAGE
!
	WRITE(6,3)SAVEDATE
	READ(5,4,ERR=600,END=1000)DATE
!
! IF NO DATE SUPPLIED ASSUME LAST DATE ENTERED
!
	CALL STR$UPCASE(DATE,DATE)
	IF(DATE.EQ.' ')DATE=SAVEDATE
!
! PROMPT FOR TIME
!
700	WRITE(6,5)
	READ(5,4,ERR=700,END=1000)TIME
!
! IF NO TIME SUPPLIED USE 0
!
	IF(TIME.EQ.' ')THEN
		TIME='00:00:00.00'
	ELSE
		TIME=TIME//':00.00'
	END IF
!
! BUILD DATE&TIME FIELD 
!
	ABSTIME=DATE//' '//TIME
!
! CONVERT TO INTERNAL TIME
!
	IS=SYS$BINTIM(ABSTIME,IT)
!
! MAKE SURE WE WE'RE ABLE TO CONVERT
!
	IF(IS.NE.1)THEN
!
! COULDN'T SO TRY AGAIN
!
		WRITE(6,6)ABSTIME
		GOTO 600
	END IF
	CALL SYS$ASCTIM(,ABSTIME,IT,)
!
! CONVERT TO A NUMBERS WE CAN WORK WITH
!
	CALL LIB$DAY(AD,IT,AMS)
!
! KNOCK BACK THE TIME FOR THE FINAL MESSAGE BY A MINUTE 6000=1 MINUTE TO
! ACCOUNT FOR SLOW SYSTEM AND SUBPROCESS WAKE-UP TIME (IT'S BETTER TO BE EARLY)
!
	IF(AMS.GE.6000)AMS=AMS-6000
!
! MAKE SURE IT'S NOT ABSOLUTE TIME
!
	IF(AD.LT.0)THEN
!
! IT IS
!
		WRITE(6,6)ABSTIME
		GOTO 600
	END IF
!
! CHECK TO SEE IF IT'S TOO LATE FOR THIS MESSAGE
!
	IF(CND.GT.AD)THEN
		WRITE(6,9)
		GOTO 600
	ELSE
		IF(CND.EQ.AD.AND.CNMS.GE.AMS)THEN
			WRITE(6,9)
			GOTO 600
		END IF
	END IF
!
! PROMPT FOR MESSAGE
!
800	WRITE(6,7)
	READ(5,4,ERR=800,END=1000)MESSAGE
	IF(MESSAGE.EQ.' ')GOTO 800
!
! FIND OUT IF IT IS A ONE SHOT REMINDER
!
900	WRITE(6,10)
	READ(5,4,ERR=900,END=1000)RESP
	CALL STR$UPCASE(RESP,RESP)
	IF(RESP.EQ.' ')RESP='N'
	IF(RESP.NE.'Y'.AND.RESP.NE.'N')GOTO 900
!
! CONVERT TIME INTO STANDARD FORMAT
!
	CALL SYS$ASCTIM(,ABSTIME,IT,)
!
! IF IT'S NOT A ONE SHOT REMINDER FIGURE OUT WHEN TO DO THE NEXT REMINDER
!
	IF(RESP.EQ.'N')THEN
		WRITE(6,11)
!
! CALCULATE DATE AND TIME FOR FIRST REMINDER
!
		IF(CND.NE.AD)THEN
			NMS=0
		ELSE
			NMS=(AMS-CNMS)/2+CNMS
!
! TRY TO KEEP THE REMINDERS TO NO MORE THAN EVERY 5 MINUTES 30000=5 MINUTES
!
			IF(NMS+30000.GT.NNMS)NMS=NNMS
			IF(AMS-CNMS.LT.30000)NMS=AMS
!
! EXCEPT IF IT'S THE LAST REMINDER MAKE IT AT THE EXACT TIME
!
			IF(NMS.GT.AMS)NMS=AMS
		END IF
		ND=NINT((AD-CND)/2.0)+CND
	ELSE
		ND=AD
		NMS=AMS
	END IF
	IF(NMS.LT.0)NMS=0
	ISW=0
!
! CHECK IF THERE IS AN OLD MESSAGE WE CAN WRITE OVER
!
	IF(ND.EQ.CND.AND.NMS.LT.NNMS)NNMS=NMS
	DO I=1,NMSGS
		IF(D(I).EQ.99999.AND.ISW.NE.1)THEN
			D(I)=AD
			MS(I)=AMS
			OD(I)=ND
			OMS(I)=NMS
			TIMES(I)=ABSTIME
			MESSAGES(I)=MESSAGE
			ISW=1
		END IF
	END DO
!
! IF NOT ADD A MESSAGE
!
	IF(ISW.EQ.0)THEN
		NMSGS=NMSGS+1
		D(NMSGS)=AD
		MS(NMSGS)=AMS
		OD(NMSGS)=ND
		OMS(NMSGS)=NMS
		TIMES(NMSGS)=ABSTIME
		MESSAGES(NMSGS)=MESSAGE
	ELSE
		ISW=0
	END IF
!
! SAVE DATE
!
	SAVEDATE=DATE
	GOTO 600
!
! SORT MESSAGES
!
1000	NWORK=NMSGS+1
	DO I=2,NMSGS
		J=I
		DO WHILE (J.GE.2)
			IF(D(J).GT.D(J-1))THEN
				D(NWORK)=D(J-1)
				D(J-1)=D(J)
				D(J)=D(NWORK)
				MS(NWORK)=MS(J-1)
				MS(J-1)=MS(J)
				MS(J)=MS(NWORK)
				OD(NWORK)=OD(J-1)
				OD(J-1)=OD(J)
				OD(J)=OD(NWORK)
				OMS(NWORK)=OMS(J-1)
				OMS(J-1)=OMS(J)
				OMS(J)=OMS(NWORK)
				TIMES(NWORK)=TIMES(J-1)
				TIMES(J-1)=TIMES(J)
				TIMES(J)=TIMES(NWORK)
				MESSAGES(NWORK)=MESSAGES(J-1)
				MESSAGES(J-1)=MESSAGES(J)
				MESSAGES(J)=MESSAGES(NWORK)
			END IF
			J=J-1
		END DO
	END DO
!
! OPEN MESSAGE FILE
!
1010	OPEN(UNIT=1,FILE='SYS$LOGIN:MESSAGES',STATUS='OLD',ERR=1024,
	1 IOSTAT=IOSTAT)
!
! WRITE OUT MESSAGES
!
	DO I=1,NMSGS
		WRITE(1,8)D(I),MS(I),OD(I),OMS(I),TIMES(I),MESSAGES(I)
	END DO
1020	CLOSE(1)
!
! IF WE HAVE A MORE RECENT MESSAGE DELETE OLD SUBPROCESS AND START UP 
! A NEW ONE
!
	IF(NNMS.NE.999999.AND.NNMS+6000.LT.LNMS)THEN
		IF(PID.NE.0)THEN
			WRITE(6,16)
			CALL SYS$DELPRC(PID,)
		ELSE
			WRITE(6,13)
		END IF
		CALL LIB$SPAWN('$RUN SYS$APPL:REMINDER',,,FLAGS,,,,,,,,)
	END IF
	GOTO 1030
!
! SYS$LOGIN:MESSAGES.DAT doesn't exist?
!
1021	IF(IOSTAT.EQ.29)GOTO 400
	CALL LIB$WAIT(1.0)
	GOTO 200
!
! Problem reading SYS$LOGIN:MESSAGES.DAT
!
1022	WRITE(6,14)
	GOTO 1030
!
! Problem creating SYS$LOGIN:MESSAGES.DAT
!
1023	WRITE(6,2)
	GOTO 1030
!
! SYS$LOGIN:MESSAGES.DAT locked by another process?
!
1024	IF(IOSTAT.EQ.29)GOTO 1025
	CALL LIB$WAIT(1.0)
	GOTO 1010
!
! SYS$LOGIN:MESSAGES.DAT should exist but doesn't
!
1025	WRITE(6,15)
1	FORMAT(/' Creating SYS$LOGIN:MESSAGES.DAT')
2	FORMAT(/' Error Creating SYSLOGIN:MESSAGES.DAT'/)
3	FORMAT(/' Enter Date for Message (',A,') ^Z to EXIT): ',$)
4	FORMAT(A)
5	FORMAT(' Enter Time For Message (00:00): ',$)
6	FORMAT(/' Error Converting Date & Time: ',A)
7	FORMAT(' Enter Message: ',$)
8	FORMAT(2(I5.5,I7.7),A17,A)
9	FORMAT(/' Error Too Late for This Message')
10	FORMAT(' Do you wish the reminder ONLY at this time (N)? ',$)
11	FORMAT(/' You will get automatic reminders for this message')
12	FORMAT(I10.10,1X,I7.7,1X,I7.7,1X,A)
13	FORMAT(/' Creating a REMINDER Subprocess')
14	FORMAT(/' Error reading SYS$LOGIN:MESSAGES.DAT'/)
15	FORMAT(/' Error SYS$LOGIN:MESSAGES.DAT does not exist'/)
16	FORMAT(/' Creating a new REMINDER Subprocess')
1030	END
<------------------------------MESSAGES.UUE------------------------------>
begin 644 MESSAGES.EXE
MJ``P`$0`6```````,#(P-0$!``#__________P`````H```!5N?B#0``````
M1```:-_^?SY#````,``````````````2``````````$```````````````A-
M15-304=%4P`````````````````````````````````````````",#$`````
M````````````P(%6Y^(-CP`%,#0M,#``````````````$``"``$```"`````
M`@````P`$@`#````C````!```P`5````B@````0````0``H`&````(`````'
M````$``!`"(````*!```$0````P`%`#L_S\`C```_1\`/P``````(0```P``
M``!D```!"D9/4E)43%\P,#$?`'8``````"$```,`````#````0I,24)25$Q?
M,#`Q``#_____________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M______________________^`0```4UE3)$Q/1TE..DU%4U-!1T53+DY%6`!3
M65,D3$]'24XZ34534T%'15,`)%)53B!365,D05!03#I214U)3D1%4@`%#R`@
M0W)E871I;F<@4UE3)$Q/1TE..DU%4U-!1T53+D1!5`0%#R4@17)R;W(@0W)E
M871I;F<@4UE33$]'24XZ34534T%'15,N1$%4!00%#QD@16YT97(@1&%T92!F
M;W(@365S<V%G92`H*0\/*2!>6B!T;R!%6$E4*3H@!@0I!`\A($5N=&5R(%1I
M;64@1F]R($UE<W-A9V4@*#`P.C`P*3H@!@0%#Q\@17)R;W(@0V]N=F5R=&EN
M9R!$871E("8@5&EM93H@*00/$"!%;G1E<B!-97-S86=E.B`&!`&"`0(;!04;
M!P<#%1$I!`4/("!%<G)O<B!4;V\@3&%T92!F;W(@5&AI<R!-97-S86=E!`\Q
M($1O('EO=2!W:7-H('1H92!R96UI;F1E<B!/3DQ9(&%T('1H:7,@=&EM92`H
M3BD_(`8$!0\R(%EO=2!W:6QL(&=E="!A=71O;6%T:6,@<F5M:6YD97)S(&9O
M<B!T:&ES(&UE<W-A9V4$&PH*$P$;!P<3`1L'!Q,!*00%#Q\@0W)E871I;F<@
M82!214U)3D1%4B!3=6)P<F]C97-S!`4/)2!%<G)O<B!R96%D:6YG(%-94R1,
M3T=)3CI-15-304=%4RY$050%!`4/+"!%<G)O<B!365,D3$]'24XZ34534T%'
M15,N1$%4(&1O97,@;F]T(&5X:7-T!00%#R,@0W)E871I;F<@82!N97<@4D5-
M24Y$15(@4W5B<')O8V5S<P0P,#HP,#HP,"XP,#HP,"XP,`"0.@``````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````/``.`60J```7
M``X!H"H``!<`#@&W*@``$0`.`<XJ```+``X!WRH```L`#@'J*@``"P`.`?4J
M```!``X!`"L``!8`#@$$`@``!@````$"`0`.!P``;"L```\!`0`#````&`$"
M``$````!`@$``0```%0K```!``````8```0`````````/"L````&````````
M`P````@K````!@``#"L``!(`#@$;`@``"`````$"`0`.!P``S"L```\!`0`#
M````%@4``"@K```8`0(````.`0````````X!``````<````!`@$`#@<``,PK
M```/`0(``P````<!`@`8`0(``@```$PK``!,*P```@```#0K```(!@``!```
M```````T*P``"`8````````#````%"L```@&```8*P```@```&0K``!D*P``
M"`````$"`0`.!P``S"L```\!`0`#````%@4``"@K```8`0(``@```!`K````
M````%@`.`2X"```,````H"P`````````````!"L`````````````````````
M`````````````````````````0`````"````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````@``````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````_$^XCT``WN_X^O__6\($7M`/:_JK</\Q%```Z5!-GZ]*
MGZ]'W^^6T___W0'[!/\I%```WZL,^P'_$Q0``-^K&/L!_PD4``#?JQS[`?__
M$P``GZM`^P'_^1,``/L`__83``#ZRXP`_]T3``#ZRY0`_P04``#ZRYP`GWC?
M_G_ZRZ0`GTC>_G_ZR[@`_^T3``#1JQBK!!(.T:L<JP@5!]"K'*L@$1/4JPS0
MCW^6F`"K(-"/?Y:8`*L<T`%:`0'ZR]``_X<3``#H4`,Q[0`!G\\6`9_/R`#?
M[TC2___=`?L$_WD3```*6@&/9`````$`6M]*RPC;^P'_5A,```I:`8]D````
M`0!:WTK+F-S[`?\_$P``"EH!CV0````!`%K?2LLHWOL!_R@3```*6@&/9```
M``$`6M]*R[C?^P'_$1,``,416E"P$<OT``I0$8^D!@```0!0GD#+J_C+^`"?
MR_0`^P'_[A(``,4\6E"P/,O\``I0/(]P%P```0!0GD#+$.'+``&?R_P`^P'_
MQQ(``/L`_\02``#66C$S_P$!`=_O4M+__]T&^P+_M1(``/L`_Z82```QR0@!
M`0'1JR0=$P,QPPC?[W[0___=!OL"_Y`2``#[`/^!$@``^LL$`?]L$@``Z%`#
M,8((UUH*"P$+`0!0PP%05L-6"ZW\^LN,`/]'$@```0$!+:W\1JOF(`!N$A/"
M"UXH"ZOF;I`@?B@+;JOFP`Q>W^]KT/__W0;[`O\O$@``GZM0^P'_&1(``/L`
M_Q82``"?SPH$GZ^[W^]TT/__W07[!/\$$@``GZM(^P'_\A$``/L`_^\1``#Z
MRR0!_P(2```M"ZO;(`!N$@8H"ZOFJ]L!`0'?[SO0___=!OL"_\T1``#[`/^^
M$0``G\^R`Y^OX]_O'-#__]T%^P3_K!$``)^K6/L!_YH1``#[`/^7$0``+0NK
M\2``;A(.*`OOI='__ZOQ$1X!`0'"!EXH!N^?T?__;L(+7B@+J_%N*`MNJ_'`
M$5[""UXH"ZOQ;I`@?L(+7B@+J]MN*!=NJYS045[ZRS`!GUC>_G_14`$3)-_O
MR,___]T&^P+_-1$``)^K,/L!_Q\1``#[`/\<$0``,<7^`?K+/`&?2-[^?_K+
M4`'_*A$``-&K%(]P%P``&0C"CW`7``"K%-6K$!@CW^][S___W0;[`O_H$```
MGZLP^P'_TA```/L`_\\0```Q>/[1JP2K$!49W^^8S___W0;[`O^^$```^P#_
MKQ```#%8_M&K!*L0$B'1JPBK%!D:W^]QS___W0;[`O^7$```^P#_B!```#$Q
M_@'?[S3/___=!OL"_WT0``#[`/]N$```G\]B`I^OX]_OS,[__]T%^P3_7!``
M`)^K*/L!_TH0``#[`/]'$```+3S+8/\@`&X3N0'?[S//___=!OL"_S40``#[
M`/\F$```G\\:`I^OX]_OA,[__]T%^P3_%!```)^K8/L!_P(0``#[`/__#P``
M^LM@`?\2$```D:O\(!(%D(].J_R1J_R/61,'D:O\CTX2H?K+/`&?2-[^?Y&K
M_(].$G'?[_G.___=!OL"_\8/``#[`/^W#P``T:L$JQ`3!-17$3C#JPBK%%#'
M`E!<P:L(7%?!CS!U``!77-%<JR`5!-"K(%?14(\P=0``&`30JQ17T5>K%!4$
MT*L45\.K!*L04$Y04$0`4$M04,&K!%!<$0H!`="K$%S0JQ17U5<8`M17U%G1
M7*L$$@K15ZL@&`305ZL@T`%8U5H4`S&?``$!"E@!CV0````!`%C12,L(VX^?
MA@$`$P,Q?0#160$3>`I8`8]D`````0!8T*L02,L(VPI8`8]D`````0!8T*L4
M2,N8W`I8`8]D`````0!8T%Q(RRC>"E@!CV0````!`%C05TC+N-_%$5A0"E`1
MCZ0&```!`%`H$:N<0,NK^,4\6%`*4#R/<!<```$`4"@\RV#_0,L0X=`!6?%:
M`5AC_]59$GO66@I:`8]D`````0!:T*L02LL(VPI:`8]D`````0!:T*L42LN8
MW`I:`8]D`````0!:T%Q*RRC>"EH!CV0````!`%K05TK+N-_%$5I7"E<1CZ0&
M```!`%<H$:N<1\NK^,4\6E`*4#R/<!<```$`4"@\RV#_0,L0X1$"`0$H"ZO;
MJ^8QM_L!`0'!`5I6T`)7T0):%0,QBP(!T%=<`=%<`A@#,7@""EP"CV4````!
M`%P*7`&/9`````$`7-%,RPC;3,L$VQ0#,4P""E8!CV0````!`%8*7`*/90``
M``$`7-!,RP3;1LL(VPI<`H]E`````0!<"EP!CV0````!`%S03,L(VTS+!-L*
M7`&/9`````$`7`I6`8]D`````0!6T$;+"-M,RPC;"E8!CV0````!`%8*7`*/
M90````$`7-!,RY3<1LN8W`I<`H]E`````0!<"EP!CV0````!`%S03,N8W$S+
ME-P*7`&/9`````$`7`I6`8]D`````0!6T$;+F-Q,RYC<"E8!CV0````!`%8*
M7`*/90````$`7-!,RR3>1LLHW@I<`H]E`````0!<"EP!CV0````!`%S03,LH
MWDS+)-X*7`&/9`````$`7`I6`8]D`````0!6T$;+*-Y,RRC>"E8!CV0````!
M`%8*7`*/90````$`7-!,R[3?1LNXWPI<`H]E`````0!<"EP!CV0````!`%S0
M3,NXWTS+M-\*7`&/9`````$`7`I6`8]D`````0!6T$;+N-],R[C?Q1%<6<41
M5E@*6!&/I`8```$`6`I9(H^U!@```0!9*!%)RYKX2,NK^`I9(H^U!@```0!9
M"ED1CZ0&```!`%DH$4G+J_A)RYKX"ED1CZ0&```!`%D*6!&/I`8```$`6"@1
M2,NK^$G+J_C%/%Q9Q3Q66`I8/(]P%P```0!8"EF/>````(^L%P```0!9*#Q)
MR]3@2,L0X0I9CW@```"/K!<```$`60I9/(]P%P```0!9*#Q)RQ#A2<O4X`I9
M/(]P%P```0!9"E@\CW`7```!`%@H/$C+$.%)RQ#AUUPQ@_T!`0'Q6@%7=OT!
M`?K+;`'_5PL``.A0`S%!`=`!5M5:%`,QR0`!`0'?[Q3*___=`?L"_TD+```*
M5@&/9`````$`5M]&RPC;^P'_(@L```I6`8]D`````0!6WT;+F-S[`?\+"P``
M"E8!CV0````!`%;?1LLHWOL!__0*```*5@&/9`````$`5M]&R[C?^P'_W0H`
M`,415E"P$<O\``I0$8^D!@```0!0GD#+J_C+``&?R_P`^P'_N@H``,4\5E"P
M/,OT``I0/(]P%P```0!0GD#+$.'+^`"?R_0`^P'_DPH``/L`_Y`*``#Q6@%6
M.O_ZRXP`_W$*``#1JR"//T(/`!-6P8]P%P``JR!0T5"K'!A'U:L,$R/?[U3*
M___=!OL"_UP*``#[`/]-"@``^LN0`9\(W_Y_$1@!`=_OL\G__]T&^P+_.0H`
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
M(GU0K1204JT<T%.M('U4K201$'U0K11]4JT<D%2M)-!5K2C1#%@2`S$V`=&/
M5`0``%@2`S%``=&/C`0``%@2$O`,``2M5-$$5Q($P!"M3#%&`=&/M`0``%@2
M`S$,__!9``2M5,]7`0,(``@`"``1`/``"!BM'#$1`?``"!BM),`0K4PQ!`$`
M`)[/GP!MW%GE!ED`Z5@$XAM9`,]7`0,(``\`%@`=`-U9GZ\F$2'=69^O)Q$:
MW5F?KR@1$^E8"]"F3%I]J@A^?6I^W5F?KQS46`)5"`&O'=Q9!'4(`:\=W%D$
M_54(`:\4W%D$_74(`:\;W%D$_W____]_____?_________]__________W__
M__________________]___________________\``'VL!%#5H0@2)="@!%C1
MCSP$``!8$1C1#%@2#)"@"*;[T*`,INA\?OL"GW#@_G\RCQ@)4`3=K>C=K?O=
M#-T#T*WPK5#E'JU4`!$X,H]4!'[=`="M\*U0Y1ZM5``1)>4;K50`,H^<!'[=
M`1$7Y1NM5``RCXP$?MT!$0DRCY0$?MT!$0#0K4Q6?:U0=M".5W@"5UC"6%8H
M6&YFP0)7=M`!=GVM%';.`W;0K4AVT`1VT%9VGJ8<=M`"=IZM2%#"4%9]K42M
M")ZO%ZT0[P`"5E'P40X"K0;`45!XC_Y6H/P$%Y\8X?Y_`$#07._=ZO__T*P$
M[]'J___>KT&L!-[O+L'__^^]ZO__T/^WZO__4!,6U%'Z;&#5_ZGJ__\3'<`$
M[Z#J__\1X<$$[YOJ__^L!-"\!%`3!=11^FQ@!`!`T.^)ZO__7!'7````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````$````!``````````(P```"8`````P``````````````````
M````````````````````````````!P````$````H````0`(``-@!``#H`0``
M.`(``)@"```@`P``!P````(```#X!```\`0``'@'```P"```.`@``!@%``!8
M!0````````$`````0@```0`-``````````````````````!`````````````
M````````````````````````````````````````````````````````````
M```````````````````````&1D]24E1,````````````````````````````
M````````````````````````````````````````````````!DQ)0E)43```
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````!2\``$````-34534T%'15,D34%)3A2^```P
M```-34534T%'15,D34%)3L*Y`A4``P4.\`($_?6\`@/W`@/W]_?W\OO^_?CX
M``(#_0($[P(!`<D`_@+J_><.`PDE#P`.#`E$#@#J`@3Q_@(#YP(#W^`"`]GW
M`@/QYP(#V??W^^4"`P`"`^4"`_<"`_O@_?\"`_<"!/<"`^X"`_O@_0(#`/GJ
M_0#RZOT"!/_JV0(#]NG9]_4"`_("`_?Y`@/J^?[^`@/Q[@(#\_8`[/S\_`#Z
M`@/^\/3A[N[O[^GH_0`"`_K\_N[N[^_IZ`(!_`(#`$^Y^@(#_?GT_??<X>'A
MX>'AX>'AX>'AV.#@U-S@`/[Z`@/Z`@3O\P'``/H"!/?G^^KW_.H`]P`"$_[W
M]P(#_0X:"3`/``(;Z@X&"28/`/?]!K\`D`H```&]````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
D````````````````````````````````````````````````
`
end
