User Tools

Site Tools


magazines:chacking13
                   ########
             ##################
         ######            ######
      #####
    #####  ####  ####      ##      #####   ####  ####  ####  ####  ####   #####
  #####    ##    ##      ####    ##   ##   ##  ###     ##    ####  ##   ##   ##
 #####    ########     ##  ##   ##        #####       ##    ## ## ##   ##
#####    ##    ##    ########  ##   ##   ##  ###     ##    ##  ####   ##   ##
#####  ####  ####  ####  ####  #####   ####  ####  ####  ####  ####   ######
#####                                                                     ##
 ######            ######            Issue #13
   ##################               Version 1.0
       ########                      July 1996

-------------------------------------------------------------------------

Table of Contents

  

Features
   6. OS/A65: A Multitasking Operating System by Andre Fachat
      (Reference: os)
        Just when you thought it was safe to run a single program on
        your Commodore 64, Andre ups the ante and details a framework
        that allows you to coax your machine to do multiple things at
        once.  If one app was trouble enough, try taming two or more at
        a time!						 
   8. Using UQWK with QWKRR128 by Gaelyne Moranec
      (Reference: uqwk)
        After years of using QWKRR128 to read BBS email and FIDO echoes, 
        you want to access the Internet as well. Does that mean you'll have
        to shelve QWKRR128?  No way!  Gaelyne details how to use a UNIX
        program called UQWK to package up USENET newsgroups and Internet
        electronic mail for offline perusal by QWKR128.
  10. Brad Templeton: The Programmer's Friend - An Interview by Jim Lawless
      (Reference: pal)
        Templeton, the originator of the PAL assembler and a driving force
        in programmer aids in the late 70's and early 80's, reflects on
        those early years, where programmer tools were pretty spartan. 
        Travel in time with Brad to an era where IBM specialized in
        mainframes, and proprietary schemes were commonplace.
  12. Hacking Graphics by Stephen Judd
      (Reference: demo)
        We've talked about 2D graphics, and we've talked about 3D
        graphics.  So now it's time to talk about 4D graphics.  This
        article will explain how to do just that, and includes source
        and binaries for dim4, an entry in the recent 4k demo contest held
        by Driven magazine.
  13. Exploiting the 65C816S CPU by Jim Brain
      (Reference: cpu)	
        So, the eagerly anticipated accelerator from CMD is becoming
        available.  Sure it's fast, and it'll boost speeds in existing
        applications.  However, you know users won't be content for long.
        Learn how to take advantage of the extra addressing modes and
        wider CPU registers when you flip the '816 into Native mode.  In
        addition, Jim will detail the preliminary set of "magic" memory
        locations in the CMD SuperCPU.	       
  14. Using HTML on the Commodore, Part 1 by Jim Brain
      (Reference: html)
        Your IBM friends are drooling over the World Wide Web and its
        markup language:  HyperText Markup Language (HTML).  Are you
        worried your CBM machine might not be able to handle HTML?  Worry
        no more.  Jim will teach you the HTML language and how it can be
        used on the Commodore system.  In part 1, Jim details the language
        and its elements and lays the ground work for a Commodore HTML
        parsing engine.

Columns
   4. Hi Tech Trickery by Alan Jones
      (Reference: trick)  
        Here's the proof you need to kill off the persistent myth that
        8-bitters can't cut the mustard in complex computations.  Alan
        lays some groundwork and details a few tricks in stretching 
        those 8-bits to the limit and beyond.
  15. Hacking Graphics by Todd Elliott
      (Reference: gfx)
        So you have created the world's nastiest dungeon engine for your
        torture chamber of a game.  Don't forget the presentation.  Todd
        shows how to create a 3-dimensional scene that will bring your
        dungeon to life. This will give your unsuspecting victim the
        most realistic gameplay possible.
        
Departments
   1. The (cough, cough) Hacking Editor
      (Reference: editor)
   2. Input/Output
      (Reference: io)
   3. Newsfront
      (Reference: news)
   5. Hacking the Mags
      (Reference: mags)
   7. UseNuggets
      (Reference: usenet)
   9. FIDO's Nuggets
      (Reference: fido)
  11. Hack Surfing
      (Reference: surf)
  16. Commodore Trivia
      (Reference: trivia)
  17. ? DS, DS$: rem The Error Channel
      (Reference: error)
  18. The Next Hack
      (Reference: next)
  19. Hacking the Code
      (Reference: code)

-------------------------------------------------------------------------

Commodore Hacking Legal Notice

Commodore and the respective Commodore product names are trademarks or 
registered trademarks of ESCOM GmbH.  Commodore Hacking is in no way 
affiliated with ESCOM GmbH, owners of said trademarks.  Commodore Hacking
is published 4 times yearly by:
  
Brain Innovations Inc. 
10710 Bruhn Avenue
Bennington, NE  68007

The magazine is published on on-line networks free of charge, and a nominal 
fee is charged for alternate mediums of transmission.  

Permission is granted to re-distribute this "net-magazine" or "e-zine" in
its entirety for non-profit use.  A charge of no more than US$5.00 may be 
charged by redistribution parties to cover printed duplication and no more
than US$10.00 for other types of duplication to cover duplication and media
costs for this publication.  If this publications is included in a
for-profit compilation, this publication must be alternately available
separately or as part of a non-profit compilation.
		
This publication, in regards to its specific ordering and compilations of
various elements, is copyright (c) 1995-96 by Brain Innovations,
Incorporated, unless otherwise noted.  Each work in this publication
retains any and all copyrights pertaining to the individual work's contents.
For redistribution rights to individual works, please contact the author
of said work or Brain Innovations, Inc.
       
Brain Innovations, Inc. assumes no responsibility for errors or omissions
in editorial, article, or program listing content.  
  
-------------------------------------------------------------------------

Commodore Hacking Information

  
Commodore Hacking is published via the Internet 4 times yearly, and is 
presented in both ISO-8859-1 and HTML versions.  This and previous issues
can be found at the Commodore Hacking Home Page 
(http://www.msen.com/~brain/chacking/), as well as via FTP 
(ftp://ccnga.uwaterloo.ca/pub/cbm/hacking.mag/)

In addition, the Commodore Hacking mail server can be used to retrieve each 
issue.  To request a copy of an issue, please send the following electronic 
mail message:

To: brain@mail.msen.com
Subject: MAILSERV
Body of Message:

help
catalog
send c=hacking13.txt 
quit

To retrieve a PKZIP 1.01 archive of the individual articles in Commodore
Hacking, request the file c=hacking13.zip

To subscribe to the Commodore Hacking and receive new issues as 
they are published, add the following command to you MAILSERV message 
prior to the quit command:

subscribe c=hacking Firstname Lastname msglen

(msglen is largest size of email message in line you can receive.  Each
line is roughly 50 characters, so 600 lines is about 30000 bytes.  When
in doubt, choose 600)

example:

subscribe c=hacking Jim Brain 600

Although no fee is charged for this magazine, donations are gladly accepted 
from corporate and individual concerns.  All moneys will be used to defray 
any administrative costs, subscribe to publications for review, and 
compensate the individual authors contributing to this issue.

New: As part of a magazine promotion, Commodore Hacking Issue #12 was
professionally laid out on printed format.  These printed copies are for sale
for US$6.00.  Price includes shipping within the US.  

Any persons wishing to author articles for inclusion in Commodore Hacking
are encouraged to view the submission guidelines on the WWW
(http://www.msen.com/~brain/pub/c-hacking-submit.txt) or via the MAILSERV 
server (send c-hacking-submit.txt).  

=========================================================================

Reading C=Hacking

  
Starting with Issue 11 of Commodore Hacking, the new QuickFind indexing 
system is utilized to aid readers of the text version in navigating the
magazine.  At the top  of each article or other important place in the
magazine, a word prefixed with a special string is present.  (See the
title of this article for an example.  Throughout the magazine, if an
article is mentioned, it will be followed by a reference string.  For
example, if we mentioned this article, we would add (Reference: rch) after
the name.  By using your favorite editor's search function and searching
for the string after the word "Reference:", prefixed by the magic prefix
string, will move you directly to the article of choice.  To merely skip to
the next article in the magazine, search only for the magic prefix string.

Some handy indexing strings possibly not referenced anywhere are:

top      top of issue
bottom   bottom of issue
contents table of contents
legal    legal notice

For those with access to a UNIX system, the command "what" can be
run on the issue, which will result in all the article titles being
printed.

A slightly different magic prefix string "@(A)" is used to delimit
sub-topics or main heading in articles.  The text after the magic string
differs depending on article content.  For the Input/Output column
(Reference: io), the text after the magic prefix will either be "c" for 
comment, or "r" for response.  In features and columns, a number after
the prefix indicates the ordinal of that heading or sub-topic in the
article.  If a specific sub-topic is referenced elsewhere in the article,
a sub-topic reference will be indicated.  A reference to "@(A)r" would
be written as "(SubRef: r)".

As time goes on, the role of this indexing system will be expanded and
changed to ease navigation of the text version, but minimize the clutter
added by these extra items.

=========================================================================

The Hacking Editor

by Jim Brain (j.brain@ieee.org)

I recently had to choose between my interest in Commodore computers and 
something else.  To many, the choice was clear.  Many assured me that 
hobbies were important, but they simply had to take a back seat when 
other pressing issues came up.  I'll admit that the decision was hard 
to make.  I find that strange, do you?  I mean, seriously, it's just an 
outdated, underpowered, orphaned, incompatible, proprietary, obsolete, 
8-bit computer system.  Why would I even consider that important?  

If you can explain that to me, then you are a true Commodore enthusiast 
as well.  We are all bound together by the immense "pull" of these 
systems.  We don't just "own" them, we treat them like part of the 
family.  We buy toys for them, we help them grow, we accept their 
limitations, we spend hours with them, and we know everything about 
them.  Although we might have younger and faster family members, we 
cherish our Commodore.  No person or thing could convince us to trade 
in our familiar family member for a newer, shinier model.  As I think 
of it this way, it seems a bit scary, doesn't it.

Not to leave you in suspense, the "something else" I alluded to above 
was a new employment opportunity and the subsequent relocation of 
myself and my family.  Even as strong as my feelings are for my beloved 
machine, I decided that my family came first.  Hobbies, no matter how 
important, are not quite as important.  I announced my decision to 
others who have similar "family members" in their homes, and I pulled 
the plug on my hobby.

Now, I don't consider myself that important in the scheme of things, 
but I did underestimate the consequences of my decision.  As friends 
and I tallied up what resources would be unavailable as I left, the 
amount grew sizable.  Luckily, just as with all situations, friends 
stepped forward to help and keep information from becoming unavailable.  
Others simply provided moral support and all offered the precious gift 
of patience while I turned to matters at hand.

I consider myself lucky that so many offered so much to make the 
situation more tolerable.  For reasons unknown to me, it bothered me 
greatly that deadlines would be missed, pieces of information would go 
unpublished, important updates would not be updated, and information 
seekers would find nothing but unanswered questions.  Although I knew 
better, I felt I had deserted the people who depended on me.  It's amazing 
how wrapped up in this I have become.  

As you may have guessed, one of the most disturbing resources that was 
left unfinished was this issue of Commodore Hacking.  Although 
originally scheduled for publication in mid-June, I regretfully shelved 
it and spent what little time that remained in preparing for a move.  
Luckily, the move is over, and you now hold the newest issue of this 
publication.

With this newest issue comes some notes.  My wife, Julie, has 
graciously agreed to offer her services as assistant editor.  This will 
free some of my time to write articles and concentrate on technical 
article editing.  In our quest to find capable writers to author the 
columns found in each issue, Geoffrey Welsh is now writing "FIDO's 
Nuggets".  We encourage others to help out in this way.  Finally, due 
to the delay in publishing this issue and the length of some 
submissions, this issue is far larger than our maximum desired size.  
We apologize for those who will find the excessive size a problem, but 
the timeliness of the articles and the sheer volume of current events 
information prevented reduction in size.  We will return to a more 
manageable size by next issue.  As well, we created a professionally
laid out and printed version of Commodore Hacking Issue #12.  If you
would like one of these copies, please see "Commodore Hacking Information"
(Reference: info) for more information.

Enjoy YOUR magazine,

Jim Brain (j.brain@ieee.org)
editor	   

=========================================================================

Input/Output

 		
Obviously, Commodore Hacking depends on the comments and article 
submissions from the Commodore community to flourish.  Everyone sees the 
articles, but let's not forget those comments.  They are very helpful, 
and every attempt is made to address concerns in them.  Address any 
comments, concerns, or suggestions to: 
 
Commodore Hacking 
10710 Bruhn Avenue
Bennington, NE  68007
j.brain@ieee.org (Internet) 
 	  
@(A)c: So, You Think You're Fast Enough, Eh? 
 
From: Ralph Mason 
 
Dear C=Hacking, 
 
Keep up the good work with C=Hacking.  I was just reading your article    
about the Super CPU and thought I would add my 2p worth. 
 
You noted that the SuperCPU appeared to be 21.79 times faster but    
attributed this to the VIC chip stealing cycles.  I think this is only    
part of the story (the smaller part).  I think the most cycles are 
likely to be lost or gained due to the jiffy interrupt routine.  The 
standard 64 executed this routine 660 times and scanned the keyboard etc. 
during it's count from 1 to 10000. The SuperCPU only executed this code 
31 times.  Far more of its cycle was spent actually doing work.  I 
think if you could turn off these interrupts you would find that the 
SuperCPU is actually running short of the 20 times faster than it 
appears to be showing. 
 
It's almost stooping to silly IBM style Norton SI numbers or other    
useless benchmarks. These will never show the true story. From what I've    
read, I'd guess (user's will see) a real world speed enhancement
running real application of around 400%, more or less depending on
the app. 
 					
Cheers, 
 -Ralph Mason 
 
@(A)r: 
Jim Brain replies, 
 
Ralph, after reading your explanation, I think you are correct in 
stating that the bulk of the time saved on a 20 MHz unit is indeed due 
to the fewer interrupts it must service in a given time frame.  However, 
since we can rarely turn off the 60 cycle interrupt, the effective speed 
is what people will notice.  Also, while I think you are correct on this 
discussion waxing philosophic, I believe most users should see more than 
400% increase in applications.  Of course, YMMV (Your Mileage May Vary).   

@(A)c: A Round of Ice Water for the Editors 
 
From: drankin@crashb.megalith.miami.fl.us (Dave Rankin) 
 
Thank you for all your efforts and putting out this Mag. I and many 
others do enjoy seeing all this activity for the 8 bit Commodore. 
 
Dave 
 
@(A)r:  
Thanks for the letter.  We always enjoy knowing that the hours we spend  
producing this magazine are appreciated by those in the community that 
read it.   
 
@(A)c: There's Nothing Like the Real Thing, Baby(tm) 
 
From: cjbr@gonix.gonix.com (Jim Lawless) 
 			    
Dear C=Hacking, 
 
Just wanted to express my enthusiasm for your electronic publication and 
hope to make regular contributions in the coming months. 
							 
I was a C64 hacker from '84 until about '87 when I progressed throughout 
the Amiga and into the PeeCee world. 
 
I found out about the C64 emulators for MS-DOS/Windows...etc. and 
downloaded one this morning.  It was a great feeling seeing the '64 
startup screen again! 
 
My wife expressed some curiosity seeing a pile of old Transactor 
magazines next to the recliner today.  I told her how excited I was 
about the emulator. 
 
This evening, she returned from a church auction with a C128, a 1541, a 
1650 modem, a westridge mode, and a bundle of software all for $30.00. 
 
I guess it's time to get back to my roots and have some fun! 
 
Jim Lawless, 
cjbr@gonix.com 
 
@(A)r:  
We appreciate the thanks.  In addition, we always encourage Commodore 
enthusiasts to submit articles to the magazine.  However, we are most 
grateful that you have come home again.  While emulators have their  
downside, we have noticed that many who download one end up buying a 
real machine and rediscover the simple elegance of the Commodore 
computer. We applaud you for your choice.   
 
 
@(A)c: Copy Rights! 
 
From: EricJ1@aol.com 
 
I'll make this short and sweet.  But, I have to tell you, I love C= 
Hacking.  I'd like to post this as a public bulletin on my BBS if it  
is not a problem. 
		  
Thanks 
 
Eric 
 
@(A)r: 
We encourage redistribution of Commodore Hacking for non-profit 
means.  Simply read the guidelines in the issue's legal statement 
(Reference: legal).  As long as the conditions in that guide are met, 
we would love to see C=H spread throughout the Commodore community. 
 
=========================================================================

Newsfront

@(A): ACE Release #15 ACE-15 Programmer's Reference Guide

For those of you who have taken advantage of the Advanced Computing 
Environment (ACE) operating system written by Craig Bruce, Craig has 
published the programmer's reference guide for Release #15 of this 
popular application environment.  It is available in the following 
locations:

ftp://ccnga.uwaterloo.ca/pub/cbm/os/ace/ace15-prg.doc
http://ccnga.uwaterloo.ca/~csbruce/mycommie.html

If you haven't used ACE before, you should give it a try. 

@(A): Unscientific Study Proves Commodore Computers are Preferred!

It seems that as homely as some may think the Commodore computers are, 
children warm up to them very quickly.  In fact, the machines are
chosen over more expensive machines, as the following stories attest:

James Grubic (grubic@avicom.net) wrote:

   One of the teachers in the school I'm based in actually enjoys using 
   the older computer systems like the Apple IIe, and her students are 
   truly excited about using them. The other day, I gave them a 64c to use, 
   and they were blown away! If you could just see it...a whole gang of 
   youngsters gathered around the C64, waiting for their turn at Jupiter 
   lander...almost brought tears to my eyes.

   Needless to say, I'll be arranging for them to get another one.

And Bob Masse followed up with:
	  
   I am not surprised.  My little nine year old nephew has a brand new 
   pentium beast with all the goodies, and he is scared to be in his 
   room alone with it when it is on!  On the other hand when He comes 
   over to his Uncle Bob's house he has a tantrum to use this old 
   Commodore.
 
   Bob
   kh6zv9@pe.net

So, once again, bigger is not always better!

@(A): Assembly '96 Is Coming!

Have you ever been to a "demo party"?  Well, if not, you are missing
one of the staples of the Commodore scene since the beginning of the
reign of the Commodore computer.  Assembly is one such party held in
Helsinki, Finland.

In case you aren't aware, demo parties are where demo programmers, 
computer graphics artists, and computer music artists gather to compete
for prizes.  Assembly '96 holds parallel competitions for PC, Amiga, and
C64 computer systems.  

Assembly '96 is to be held August 16 to 18 in the Helsinki Fair Center,
Rautatielaisenkatu 3, Finland.  Tickets are available for US$50.00.  
If you are in the vicinity, you should stop by and peruse the 1996 
Commodore 64 entries.  If, however, you would like to compete in the 
Commodore 64 class, please read the rules and information packet 
at: http://stekt.oulu.fi/~mysti/the_sharks/   
							 
Prizes of cash are to be awarded to 1st, 2nd, and 3rd place winners in 
the demo, graphics, and music categories.

For more information, you can contact the organizers via the following
ways:
   Voice:        ASSEMBLY Org.   +358-0-777 3741
   WWW:          http://www.assembly.org/assembly96
   E-mail:       assembly@assembly.org
   IRC:          #asm96
   Normal mail:  ASSEMBLY '96
                 Lakkisepantie 13
                 00620 Helsinki
                 FINLAND

@(A): Where in the world is Novaterm 9.6 (NovaRom)?
			  
Late last year, Nick Rossi informed the Commodore community that he
was developing a new version of his popular 64 terminal emulation
software, Novaterm 9.6.  However, Nick stated that 9.6 would be 
marketed as a commercial product, not as a shareware offering as in
previous versions.  Well, as with all announcements, speculation 
as to what the new version would include filled up the communication
channels for quite a while.  Then, in early 1996, the news that Novaterm
9.6 was to be marketed on CARTRIDGE surfaced.  Nick cited concerns over
piracy and ease of use in deciding to try the cartridge route.  Users
who asked were told that Novaterm (NovaRom by some accounts) would ONLY
be offered as a cartridge.  

Performance Peripherals Inc. (PPI) was chosen to manufacture and
market the new version.  Tentative offering included the basic cartridge
and an option that included PPI's CommPort Swiftlink-compatible 
cartridge and a PPI 3 slot cartridge expansion unit.  

Since creating a cartridge requires a higher level of code robustness,
delays in the introduction generated reports that Nick was having
trouble getting the code to a ROMable state.  Other reports mentioned
that PPI status as a part time endeavor was the reason for the delays.

Whatever the reason, the following announcement was made by Nick Rossi
concerning Novaterm 9.6 on July 5, 1996.  Contrary to earlier reports,
the software will be available on disk format only and will be
initially be marketed directly through Nick Rossi:

                                 NOVATERM 9.6
                                 ------------
                    Bring the telecommunications revolution
                             to your Commodore 64.
   
   After many delays and headaches, I'm excited to finally announce the
   release of Novaterm 9.6!
   	  
   Novaterm 9.6 is available ON DISK, in either 1541 or 1581 format.  It
   comes with a 90-page user's manual.  The price for the disk and 
   manual is US$29.95.
   	
   ORDERING INFORMATION
   
   Send check or money order for US$29.95 to:
   
   Nick Rossi
   10002 Aurora Ave. N. #3353
   Seattle, WA 98133  U.S.A.
   
   INTERNET CONTACTS
   
   Check out the Novaterm 9.6 web site for more information:
   http://www.eskimo.com/~voyager/novaterm.html
   
   My e-mail address is voyager@eskimo.com.
   
   NOVATERM 9.6 FEATURES
   
   Novaterm 9.6 supports the following new features:
   
   * Zmodem upload, download, auto-download, and crash recovery.  Also
     supports streaming mode with the buffer.
   * Ymodem-g and Xmodem-1k-g streaming protocols with the buffer.
   * Use any RAM expansion device as the buffer: REU, BBGRam, GEORam,
     RAMLink or RAMDrive partition, C128 VDC memory.
   * "Buffer recovery" feature retains contents of the buffer between
     Novaterm sessions as long as the memory device does not lose power 
     or get overwritten.
   * Text editor can read and write files directly from the buffer.
   * Supports the SwiftLink, CommPort, HART cartridge, and Daniel 
     Dallmann's 9600 bps user port enhancement
     (see http://rpool1.rus.uni-stuttgart.de/~etk10217/proj.html).
   * Supports the C128's fast-mode 80-column screen in terminal mode
     (25, 28, 43, and 50 line modes available).
   * C64 80-column emulation features "scroll-ahead" for better 
     scrolling performance.  Optionally supports a fast scroll if you
     have an REU.
   * Built-in ASCII translation and UUencode/decode options
   * Built-in 80-column file viewer
   * Reads real-time clock devices (BBRTC, CMD drives) for terminal mode
     clock display
   * Single-menu loading of terminal emulations (finally!)
   * A step-by-step user-friendly configuration utility
   
   Novaterm 9.6 still supports the basic feature set:
   
   * Terminal emulations: ANSI graphics, VT100/102, VT52, Standard, and
     Commodore graphics in 40 or 80 column mode
   * Protocols: Zmodem, Ymodem batch, Ymodem-g, Xmodem-1k, Xmodem-1k-g,
     Xmodem-CRC, WXmodem, Kermit, Punter, Multi-Punter
   * Hardware flow control for high-speed modems
   * Script language for automatic operation
   * Multiple 19-entry phone books
   * 16 user-definable macro keys
   * Miniature BBS module / answering service
   * Text editor utility with integrated script compiler
   * ASCII table editor and Font editor utility

   I could keep going, but you get the idea!  Novaterm 9.6 supports all 
   of the standard features from previous versions, but its capabilities 
   have been greatly expanded.
       
   Thanks for all the support and suggestions -- the new version finally
   made it!
   
@(A): BBS Magazine dead, Long Live Some Trees

Gaelyne Moranec, writer of articles for magazines such as Commodore
Hacking (Reference: uqwk), Commodore World, and BBS Magazine, reports
that BBS Magazine is no longer.  Cited as a magazine for BBS operators 
and users, the magazine contained a monthly series by Moranec on 
Commodore BBS users and systems.  Being one of the few magazines not 
Commodore specific to cover Commodore content, its demise is sad indeed. 
Evidently, the magazine continued on for one issue as _BBS.NET_ but has 
not been published since.  Some of the writers for BBS will be given 
space in a new magazine to take the place of BBS, but the focus will be 
on sysops and sysadmins.  Gaelyne hopes the new magazine will allow her 
to continue to write, but she is somewhat doubtful of the prospect.

@(A): Hide the Wolf PC: Little Red Reader-128 2.5 released!

Craig Bruce has released version 2.5 of Little Red Reader-128, the
popular freeware utility that allows Commodore 128 owners with 1571, 
1581, or CMD FD drives to read IBM PC disks.  Features available in the 
new release include:

*  miscellaneous bug fixes
*  date support for reading and writing files
*  counts of bytes of files in a directory
*  remove Commodore files

The program is available from the following locations:

   ftp://ccnga.uwaterloo.ca/pub/cbm/util128/lrr25.uua   (uuencoded archive)
                                            lrr25.doc   (documentation)
                                            lrr25.asm   (assembly source)
   http://ccnga.uwaterloo.ca/~csbruce/mycommie.html

@(A): Basement Boys Software Demise

The geoClub UK newsletter reports that Commodore software developer and
distributor Basement Boys Software has ceased operation.  Fortunately,
Basement Boys Software completed all paid orders and settled all 
reported business before closing its doors.  While we regret the closing 
due to "lack of support", we are impressed with the ethical methods of 
doing so.

@(A): LOADSTAR LETTER Going Subscription

As reported in "Hacking the Mags" (Reference: mags), LOADSTAR 
LETTER will become a subscription based publication.  The LETTER, 
currently bundled with issues of LOADSTAR and LOADSTAR 128, contained 8 
pages of additional content not found in either LOADSTAR or LOADSTAR 
128. J and F Publishing, which publishes the LOADSTAR line of software 
and magazines, cites increasing costs and the need for more editorship 
support in deciding to change the magazine's status from free to 
subscription.  The LETTER will be bundled with the disk magazines until 
Issue #37.  A one year subscription can be purchased for US$12.00 from:

   LOADSTAR Letter
   P.O. Box 30008
   Shreveport LA 71130

Starting with Issue #37, Jeff Jones will join with Scott Eggleston and
others to turn the LL into a more hard hitting magazine with fewer ads.
The new magazine will continue to run articles by Jim Brain, Gaelyne
Moranec, and Jeff Jones, among others.  J and F is trying to break
1000 subscribers in order to keep the subscription rate for future
subscribers at US$12.00.

@(A):  The Commodore Cruiser Is on the InfoHighway

John Brown, of Parsec, Inc., has announced the arrival of the Commodore
Cruiser, a subscription based Commodore support BBS system.  Accessible 
via direct phone lines and the Internet, The system is Internet 
accessible via a telnet to jbee.com.  John is offering a free account to 
each Commodore User Group that requests one.  For users, subscription 
includes full Internet access, as well as Commodore specific areas and 
file transfer areas. For more information, contact Parsec at:

   JBEE
   Parsec, Inc.
   PO Box 111
   Salem, MA 01970-0111
   USA

@(A): Commodore and Amiga Technology Sold (Again!)

By InfoWorld Staff

  Posted at 3:45 p.m., PT, April 11
  Financially troubled German PC retailer Escom AG said Thursday that it
  will sell its Amiga Technologies GmbH subsidiary to Visual Information
  Services Corp. (VIScorp) of Chicago in a $40 million transaction. 
  SEscom acquired the Commodore and Amiga computer technology, patents, 
  Sintellectual properties, and brand names in April 1995 for $10 million 
  Sat a bankruptcy auction for Commodore International, which filed for 
  Sliquidation in 1994. Escom earlier this year itself reported losses of 
  S$85 million for 1995, prompting founder Manfred Schmitt to resign last 
  Smonth. Selling Amiga will allow Escom to better concentrate on its core 
  Sbusiness of PC retailing, Escom said in a statement. VIScorp, which 
  Smakes set-top boxes, will acquire the Amiga and Commodore technology and 
  Sintellectual property, but not the Commodore brand names, Escom said.

VIScorp is online at: http://www.vistv.com     
		     
@(A): DisC=over a New Commodore Specific Technical Magazine

As reviewed in "Hacking the Mags" (Reference: mags), there is a new
Commodore publication available.  Citing itself as the "The Journal for
Commodore Enthusiasts", DisC=overy contains technical content analogous 
to that found in the defunct Transactor magazine and Commodore Hacking.  
Available only in text format, the magazine is available at:

   http://www.eskimo.com/~drray/discovery.html

Alternately, the magazine can be requested via email from:

   s021126@dominic.barry.edu

@(A): CMD SuperCPU unveiled

Initial reports of the CMD SuperCPU are overwhelmingly positive.  In 
fact, it is reported that one European publication would not believe a 
commissioned review of a beta unit and requested a first hand look at one
before they would print the review.  Suffice it to say they were 
impressed as well.  

For a report that Guenther Bauer wrote on the new accelerator, check
out his review at:
     
   ftp://ftp.giga.or.at/pub/c64/Super64CPU_test.txt

One of the units traveled to Michigan where Maurice Randall (developer
of GeoFAX and owner of Click here Software) debuted it in the US to the
Lansing Area Commodore Club.  Tim Lewis, LACC President, reported to 
USENET after the debut:

  "I am one of the few lucky people who have seen for myself what the 
  new Super64 CPU can do. It is nothing short of INCREDIBLE!!!		
						 
  For all of you serious GEOS users, I can honestly say this: GET IT!
  It is money that will not be thrown away! The processing speed is
  amazing. If you use the Super64 CPU with a REU, I will guarantee you
  that you cannot go wrong! You have to see it to believe it! Club
  members that saw Maurice Randall demo this could not believe their 
  Seyes! I was watching this go thru a directory of files, and it just 
  Sflew! 
				   
  Folks, you have to see this to believe it! My hats off to CMD, they
  have really outdone themselves! All I can say is: 
  (sic)COGRATULATIONS!!!"
  
For more information on CMD or the SuperCPU, contact CMD or visit
their WWW Site:

   Creative Micro Designs, Inc.
   P.O. Box 646
   E. Longmeadow, MA  01028
   (413) 525-0023
   http://ww.the-spa.com/cmd/

@(A): Commodore Hacking Contributes to Computer-Mediated Communication
      Magazine
      
Following a call for articles in alt.zines on hurdles faced by 
electronic magazines, Jim Brain contributed an article on the challenges 
faced by Commodore Hacking.  Brain, editor of Commodore hacking, cited 
the challenges of providing a text version of the magazine for Commodore
owners, while attempting to draw out of the closet Commodore enthusiasts 
online with a hypertext version of the publication.  The full text of
the published article is available at:
 
   http://www.december.com/cmc/mag/1996/may/brain.html

@(A): "Zelch" Down for the Count

In C=Hacking #12, we noted that Bo Zimmerman had connected his Commodore
128 to the Internet, albeit through a Linux system.  Well, as all good
things must end, Bo has taken down the BBS system due to hardware
overheating problems.  However, Bo hopes to provide documentation
on how the system was set up so that others can configure similar
systems.

@(A): The "Official" DesTerm WWW Site

In March, Matt Desmond, creator of the popular 128 terminal emulation
program DesTerm, announced that he is now online at:

   http://www.ionline.net/~mdesmond

It contains information about Matt, but is more importantly the gateway
to the "Official DesTerm Page."  The site contains information about the
new 3.0 version of DesTerm that Matt is developing.

@(A): Compuserve INformation Service = Compuserve Internet

On May 21, Compuserve (CIS) announced it would phase out its proprietary
software and services in favor of providing service using Internet 
standards.  The company hopes to re-launch itself as an Internet 
provider by year's end. The new service will be accessible through a 
standard World Wide Web browser.  It is unclear how this change will 
affect Commodore users who rely on Compuserve's "shell" access for 
Internet and Compuserve specific access.

@(A): Creative Micro Designs, Inc. New Sponsor of Genie CBM RTC

Creative Micro Designs, Inc., has taken over as the sponsor of the 
Commodore RTC area on Genie.  The Commodore RTC remains one of the
few well utilized places to stay current on Commodore events and 
find Commodore information.  CMD cited an interest in providing
quality information for Commodore enthusiasts as a driving reason 
behind the decision to sponsor the Genie forum.  

@(A): Hail the New Prez

Meeting 64/128 Users Through the Mail, a non-profit organization
designed to allow Commodore users to unite and gather information about
their machines via mail, has announced a change in presidency:

The new president is Tom Adams, and the new address for club
correspondence is as follows:

   Meeting 64/128 Users Through the Mail
   c/o Tom Adams, President
   tom.adams@neteast.com
   4427 39th St.
   Brentwood, MD  20722-1022

If you are interested in membership, please contact Tom.  The club is
especially useful for those who live in areas with no Commodore support.

@(A): Commodore VIC-20 Newsletter Address Change

For those interested in the Commodore VIC-20, a very useful but under
utilized computer, Jeffrey Daniels publishes a newsletter for the 
machine.  The publication address has changed to:
				    
   Vic Newsletter
   Jeff's Ink Press & Deli
   P.O. Box 477493
   Chicago, IL 60647 USA
   Jeffrey Daniels, editor
   U17632@UICVM.CC.UIC.EDU
		       
A copy can be obtained by writing the above address.

@(A): ESCOM Does a CBM!  (Well, Not Really)
		      		     
Financial Time/Edupage: July 4, 1996
 
   "Escom, the German company that is one of Europe's largest PC 
   retailers, is seeking protection from its creditors (similar to Chapter 
   11 protection in the U.S.), following significant trading losses, and 
   losses caused by a stock write-down.  Aggressive expansion into new 
   markets such as the U.K. had caused storage and supply problems."
   
Since ESCOM had recently sold the rights to the Commodore and Amiga 
lines to VISCorp, the filing will have little affect on Commodore 8-bit 
owners.  Also, CMD reports that this action is part of a massive 
reorganization effort by ESCOM intended to solidify its PC manufacturing 
operation. CMD notes that, unlike CBM, ESCOM is NOT liquidating, but 
merely employing a common US business tactic of filing to shield 
themselves from creditors while reorganinzing the business.

=========================================================================

HEAVY MATH - Part 0: History, Arithmetic, and Simple Algorithms

by Alan Jones (alan.jones@qcs.org) 		       
 
Someone on comp.sys.cbm asked if the C64 could do HEAVY MATH, meaning 
solve computationally intensive numerical problems.  The answer is of 
course, YES!  This is the first of a series of articles on numerical 
computing for the C64/128. 
 
@(A): Introduction
 
The C64 is not the best computer for numerical work.  However, it does 
quite well within its limitations of speed and memory.  It is fine for 
most homework  and hobby related problems, but not for big industrial 
problems.  It does not bother me at all to let it crunch numbers while I 
watch a movie or sleep.  Those old commercials about sending your 
children to college with a C64 were a joke.  Still, it can save you a 
long walk to the campus on a miserable night. And you can always use it 
as a terminal to check jobs running on the mainframe. 
 
The C64 is also a good computer for developing numerical algorithms and 
programs.  You can try new ideas and write programs at your leisure at 
home with a C64.  When developed to your satisfaction, algorithms and 
programs can be "ported" to bigger and faster computers to solve larger 
problems.  The C64 has many programming languages available, although 
many are not well suited for numerical development work.  On larger 
computers Fortran and C are popular for numerical work.  On a C64, Power 
C might be a good choice for some users.  I use COMAL 2.0.  I also have 
COMAL programs that can help convert source codes from BASIC to COMAL, 
and COMAL to Fortran. 
 
Our C64 with its 6502 (6510) and 64K of RAM is a very simple machine.  
It is so simple that many contemporary numerical programs are far from 
ideal on a C64.  So I will start with a bit of numerical computing 
history.  Early computers and the numerical algorithms that they used 
are often closer to ideal for the C64 than contemporary PCs.  
Researching old numerical algorithms can be useful for the C64; e.g. 
Quartersolve in C-Hacking #10.  Of course new algorithms are useful also 
and sometimes you might want to combine ideas from both sides of the 
spectrum. 
 
@(A): History
 
In the beginning... were fingers.  Seriously, "computer" was a human job 
description.  These days, human computers are just an oddity seen on TV 
talk shows.  The invention of logarithms was a big boon, and log tables 
and slide rules were just the start of computational aids.  Eventually, 
mechanical adding machines were developed for high precision, error free 
(but slow) numerical work.  One can still find large desk top Friden and 
Monroe mechanical adding machines.  Numerical work was still a slow 
tedious process.  More computing tools were developed.  The Differential 
Analyzer was a mechanical computer that could solve IVPs (Initial Value 
Problems, integrating differential equations).  There were also some 
early analog electronic computing aids.  The first electronic analog 
computer was actually developed after electronic digital computers.  
(One could argue that many WW II autopilots and automatic control 
circuits were electronic analog computers.) 
 
The first digital electronic computers were the ABC, ENIAC, EDVAC, and 
UNIBLAB. (UNIBLAB is just for the Jetson's fans. ;) )  John Vincent 
Atanasoff invented the first digital electronic computer at Iowa State 
University.  (So if someone answers the phone and says, "He's on the 
John.  Can he call you back later?"  It might not be mean what you first 
think.)  Clifford Berry, was a grad student and chief technician, hence 
the Atanasoff-Berry Computer, or ABC.  The Atanasoff story is 
fascinating.  See: The First Electronic Computer: The Atanasoff Story, 
Alice R. and Arthur W. Burks, The University of Michigan Press, 1988. 
 
Atanasoff wanted to be able to solve large sets of linear equations.  
Even with large mechanical adding machines, solving a 10 by 10 problem 
was about the largest size that would be attempted.  Schemes to connect 
several mechanical adding machines were not feasible, and analog devices 
were not precise enough.  He was working at a small university and the 
small grants available to him were a serious constraint.  He developed 
the ABC over a couple years for less than $7,000.  The ENIAC would later 
cost about $500,000!  Atanasoff invented a way to use electronic vacuum 
tubes as high speed digital switching devices.  He then invented a 
serial arithmetic logic unit, ALU.  Vacuum tubes were still too 
expensive so he used cheap capacitors for memory.  He invented 
additional circuitry to refresh the capacitors,  i.e. dynamic RAM.  He 
designed a parallel computing machine that could add (and subtract, 
shift, NOR,...) 30 50-bit binary numbers using 30 modular ALU units.  
This allowed it to solve up to 29 linear equations with one right hand 
side vector.  The design could easily be scaled up in size and 
precision.  It used scratch paper for I/O and temporary memory. (Created 
in man's image?)  The card punch/reader was the limiting factor.  
Mechanical punches, like (then) new accounting machines might use, were 
too slow.  An electronic spark punch was developed.  A dielectric 
material (paper) was placed between electrodes.  A high electrical 
voltage would carbonize a dot in the material and actually burn a small 
pin hole.  A smaller voltage would later test for the mark.  This was 
actually Berry's project.  It had decimal to binary and binary to 
decimal conversion for initial and final I/O, as well as other nice 
touches. 
 
Atanasoff also developed a variation of Gaussian elimination for solving 
the linear systems of equations with the ABC.   The ABC, like our 6502, 
has no multiply instruction.  The ABC had capacitor memory to hold two 
rows of equations.  Multiplication was done with shifts and adds, but 
whole rows were computed in parallel.  Fixed point binary arithmetic 
with truncation (no rounding) was used.  However, it provided 50 binary 
bits of precision which was more than the adding machines provided.  It 
used no division.  The result would be printed (punched) out in decimal 
as two integers that would be divided on a mechanical desk calculator 
for each variable.  His numerical algorithm may be useful for our 6502, 
although I'm sticking with the slower floating point arithmetic.  It was 
not a general purpose "stored program" computer, but it could have been 
adapted to solve a variety of problems. 
 
The ABC was completed and operational in April or May of 1942 except for 
one problem:  The card punch reading was not reliable.  The problem may 
have been the dielectric material or choice of paper.  A 5 by 5 problem 
could be reliably solved, but not the larger problems that it was 
designed for.  The problem could have been fixed.  However, Atanasoff 
and Berry were called to other WW II related work and not allowed to 
perfect the ABC.  The ABC was stored and later dismantled.  Ironically, 
the war that built the ENIAC killed the ABC.  Of course many of John 
Atanasoff's original inventions were later used in the ENIAC and EDVAC 
computers. 
 
The ABC was built into a desk sized wheeled cart and could be 
transported to a  researcher's "home."  It cost less than $7000, but 
additional units would have been cheaper.  The ABC was akin to our 
favorite low cost home computer.  By contrast, the second computer, 
ENIAC, cost a fortune, required a team of technicians to operate, and 
filled a large room.  The ENIAC led to monolithic computing centers.  It 
would be decades before the computer returned to the home. 
 
I'll skip the better known history lessons: transistor > microprocessor 
> electronic hand calculators > home computers > C64 >...  And of course 
the electronic computer caused an explosion in the development of 
mathematics and numerical algorithms. 
 
@(A): Arithmetic
 
Arithmetic is the basic building block of numerical algorithms.  There 
are many types of numerical variables and arithmetics.  Binary 
arithmetic is the most efficient for intensive numerical work.  Decimal 
arithmetic is best for simple math where conversion to and from binary 
would just slow down entering and outputting numbers.  Floating point 
arithmetic is easy to use because it is self scaling and covers a large 
dynamic range, but it tends to be slow.  Fixed point, e.g. integer, 
arithmetic is fast but not as easy to use.  Interval arithmetic involves 
computing not just a rounded result but an upper and lower bound on the 
result to cover the interval of the arguments and the accuracy of the 
computation.  PGP encryption uses a high precision modular arithmetic.  
Complex, quaternian, and vector arithmetic can also be used. 
 
The C64 built in BASIC provides 5 byte floating point variables and 
arithmetic and 2 byte integer variables.  I think integer arithmetic is 
done by converting to floating point.  Most of the programming languages 
for the C64 use the same numerical variable types and even the same 
arithmetic code.  Even in assembly language we often call the same 
floating point arithmetic routines.  The +, -, *, and / arithmetic 
operations on the C64 have no bugs.  However, they appear to be coded 
for minimum code size rather than minimum execution time.   Every type 
of computer arithmetic can be built up from the 6502 instruction set.  
Some arithmetics can be coded for specific applications such as 
Polygonamy in C-Hacking #12. 
 
My interest is in using the floating point routines with numerical 
algorithms and writing programs.  Of course even floating point 
arithmetic routines are built up from smaller arithmetic blocks.  The 
key building block is the multiplication of two positive 8 bit values 
into a 16 bit result.  Our 6502 has no such instruction. 
 
The 6502 CPU was designed to be a low cost 8 bit CPU.  It is fairly 
cheap to interface to and will quickly access cheap "slow" memory.  It 
is also very quick and responsive to interrupts.  It can perform 8 bit 
binary and BCD addition with carry.  The Z80 CPU was designed to be the 
ultimate 8 bit CPU.  It has several 8 bit internal registers which can 
be used in 16 bit pairs.  It has a full instruction set that includes 
some nibble oriented instructions and a 16 bit add.  On average a 1 Mhz 
6502 is about as effective as a 2 Mhz Z80, and Z80s are generally 
available in faster speeds.  The C128 has a Z80 CPU that could be used 
for numerical work, but it was poorly integrated into the C128 and 
offers us no advantage over the 6502 (other than executing CP/M and 
other Z80 code).  Neither CPU has a multiply instruction.  The fastest 
way to multiply with a Z80 is with the simple binary shift and add 
method.  However, this is not true with the 6502!  The fastest way to do 
math on a 6502 is by using table look ups.  This opens the door for 
creative programming solutions. 
 
Tables can use up a lot of memory, especially for a function of two or 
more arguments.  An 8 bit multiply table could eat up 128K of memory.  A 
4 bit, or nybble, multiply table would only need 256 bytes, but this 
would involve so  much additional work to realize the 8 bit multiply 
that it is hardly worthwhile. The C64/128 multiplies with the slow 
binary shift and add method.  However, it is not so slow that we can use 
disk or REU memory to speed up such a simple function (a large bank 
switched ROM would be much faster).  The table look up method can be 
readily used when multiplying by a constant, such as when calculating 
CRCs.  Now consider the algebraic identity, 
 
   a*b = ((a + b)/2)_2 - ((a - b)/2)_2. 
 
With some more work we can do the multiplication using a table of 
squares of only about 512 bytes!  (a + b) could overflow to nine bits, 
but we will immediately shift right one bit (the division by 2) so this 
is no problem.  However, if (a + b) is odd the least significant bit is 
lost.  This is easy to test for by doing a Roll Right instead of a shift 
and testing the carry bit.  One way to compensate is to decrement a by 1 
(a <> 0), multiply as above and add b, a*b = (a-1)*b + b.  The decrement 
is free, but we pay for the extra add.  Using 256K of external memory 
you could do a 16 bit multiply this way. 
 
For an example of the shift and add type multiply and divide see, "High-
Speed Integer Multiplies and Divides", Donald A. Branson, The 
Transactor, Vol. 8 , No. 1, July 1987, pp. 42-43, 45.  Note also that 
although a*b = b*a, the ordering of the arguments can effect the 
multiplication speed depending on the bit patterns. 
 
Perhaps a year ago there was a discussion running in comp.sys.cbm on ML 
routines to do fast multiplication.  There was no clear best solution.  
Performance often depended on where the arguments a and b were and where 
the product was to be stored.  This also affects how well these building 
blocks can be used to perform multi byte arithmetic. 
 
Division is a more difficult problem.  It can be done by shifting and 
subtracting, table look up, and algorithms based on computing the 
inverse.  Consider:  a/b = exp(log(a) - log(b)).  With tables of the 
logarithm and exponential functions (and you might want to use base 2) 
we can do division with three table look ups and one subtraction.  The 
log and exp functions will have to be tabulated to a greater precision 
than the arguments and result, or it will only produce an approximation.  
In most cases we will still have to calculate the remainder using 
multiplication and subtraction.  Of course with log and exp tabulated we 
can calculate fast approximations to many other functions, including 
multiplication. 
 
Stephen Judd used multiplication based on a table of squares and 
division based on a table of log and exp in Polygonamy in C-hacking #12.  
He reported that his 9 bit/8 bit divide takes 52 cycles "best case."  
However, where numerical algorithms are concerned, only worst case and 
average case performance are important. 
 
Double precision, and multiple precision arithmetic routines should be 
coded efficiently in assembly language using the fast building blocks 
suggested above.  However double precision FP variables and arithmetic 
can be built using pairs of ordinary FP variables and arithmetic.  This 
will be slow but it can be effective when used sparingly such as when 
testing single precision algorithms or using iterative improvement 
techniques.  See, "Double Precision Math", Alan Jones, Comal Today, 
Issue 20, Feb. 1988, pp. 18-20, and Comal Today, Issue 22, May 1988, pp. 
58-61.                                                            

@(A): Numerical Algorithms
 
An algorithm is a procedure or set of instructions for computing 
something.  I am mainly concerned with HEAVY MATH algorithms, but here I 
will present only feather weight numerical algorithms. 
 
Consider the trivial algorithm, 
 
   repeat 
      x := (x + 1/x)/2 
   until converged 
 
This is a stable quadratically convergent algorithm.  For any initial x 
<> 0 it will converge to sign(x), i.e. +1 or -1.  Pick a number, say 1.5 
and take a few iterations.  Note how fast it converges to 1.0.  The 
error or distance from 1 keeps getting squared down toward zero.  The 
number of correct digits in each iteration doubles.  This is the 
quadratic convergence.  Pick another number such as 10_20 and try again.  
At each iteration the error is cut in half.  We take giant strides but 
convergence is still painfully slow.  This is a linear convergence rate.  
This is a typical Newton's method algorithm.  Near the solution, inside 
the region of quadratic convergence, convergence is very fast.  Outside 
the region convergence is much slower.  On more complex problems 
convergence may fail altogether or converge to an undesired point.  In 
general an algorithm will converge to a "limit point" and if the 
algorithm is numerically stable, the limit point will be very close to 
the exact solution intended.  Although it looks like this algorithm 
could run forever like an infinite series, in finite precision 
arithmetic it always converges in a finite number of iterations, even 
from the bad starting points.  This algorithm is not so trivial when 
applied to a square matrix (with no eigenvalues on the imaginary axis).  
It will compute the matrix sign function which can be used to compute 
the stable invariant subspace, which can be used to solve the algebraic 
matrix Ricatti equation, which can solve two point boundary value 
problems, and be used to solve linear optimal control problems.  Not to 
mention other pseudo random buzz mumble... 
 
@(A): Inverse and Division 
 
The inverse x = 1/b can be iteratively computed from x := x*(2 - b*x).  
This is best used as a floating point, or multiple byte algorithm.  This 
is a quadratically convergent algorithm.  This means that each iteration 
should double the number of correct bits in x.  You could use an 8 bit 
multiply and converge to an 8 bit solution from an initial guess.  A 
better use would be to compute a 32 bit result (our floating point 
mantissa).  We might start with an 8 bit estimate from x := exp(-log(b)) 
using look up tables, take an iteration using 16 bit multiplication (or 
16 by 8) to get a 16 bit estimate, and take another iteration using 32 
bit multiplication to get the final 32 bit result. Division can then be 
accomplished as a/b := a*(1/b).  Of course this is only useful if you 
have fast multiplication. 
 
@(A): Square Roots 
 
BASIC 2.0 calculates square roots from x = exp(0.5*log(a)).  This is 
slow since BASIC calculates the log and exp functions, and inaccurate as 
well.  If you have these functions tabulated you might want to use them 
for an initial estimate of x.  If you have a table of squares, the 
inverse function of the square root, you could use a search routine on 
the table.  Square roots can be calculated iteratively from the Newton's 
method algorithm, 
 
   x := (x + a/x)/2 
 
One can also compute x = 1/SQR(a) using 
 
   x := x*(3-a*x*x)/2 
   		     
avoiding the division.                                       

E. J. Schmahl published ML code for computing the square root in "Faster 
Square Root For The Commodore 64" in The Transactor, Vol. 8, No. 1, July 
1987, pp. 34-35.  This used a 16 byte look up table to start, followed 
by Newton's method.  He called the ROM FP routines to do the 
calculations, but variable precision arithmetic could also be used as 
suggested for the inverse algorithm. 
 
Another interesting algorithm for the INTEGER square root was recently 
published by Peter Heinrich, "Fast Integer Square Root", Dr. Dobb's 
Journal, #246, April 1996.  This is a fast algorithm that uses no 
multiplication or division.  It is not known yet if this is a good 
algorithm for the 6502. 
 
@(A): Algebraic Geometric Mean 
 
The AG Mean is our first real numerical algorithm, the others above are 
our arithmetic building blocks. 
                                                                              
   Repeat 
      a(i+1) := (a(i) + b(i))/2 
      b(i+1) := SQR(a(i)*b(i)) 
   until converged 
   
For 0 < a(0) <= 1 and 0 < b(0) <= 1  the sequences converge 
quadratically to their common limit point, the AG mean of a(0), b(0).  
Note that we need to use full precision from the start and an accurate 
square root routine.  The BASIC 2.0 SQR routine is not accurate enough.  
This can be used to compute the complete elliptic integral of the first 
kind, K(k).  With a(0) = 0 ,and b(0) = SQR(1-k_2), K(k) = PI/(2*a(n)).  
The AG Mean can also be used for some other computations 
 
@(A): A Caution 
 
Many mathematical equations can be found in math books and similar 
sources.  However, these are often in a form for ease of typesetting and 
further algebraic manipulation.  They should not generally be coded as 
written.  For example, the well known quadratic equation is the best way 
to compute the roots of a second order polynomial equation.  However, 
there is a particular way to code it to avoid overflow, underflow, and 
loss of precision.  There are also analytical expressions for the roots 
of third and fourth order polynomial equations.  However, roots of third 
and higher order polynomials are best solved for using general root 
finding techniques. 
 
@(A): Conclusion
 
This article is long on discussion and short on usable code.  Although 
it suggests faster ways of performing arithmetic on a C64, the built in 
FP +, -, *, and / routines are reliable and can used for serious 
computations.  If I continue this series, I would want each article to 
present source code for solving a numerically intensive problem.  In Part 
1, I present an introduction to Linear Programming.  Hopefully other 
topics will be suggested by readers, and possibly articles will even be 
written by other users.  Of course I could also write articles on 
numerical methods, or turn this into a simple question and answer 
column.  I suspect many readers have already written many HEAVY MATH 
C64/128 programs but have not shared them with the Commodore user 
community yet.

=========================================================================

Hacking the Mags

Not everything good and/or technical comes from Commodore Hacking, which
is as it should be.  (We still think we have the most, though...)  Thus,
let's spotlight some good and/or technical reading from the other
Commodore publications.

If you know of a magazine that you would like to see summarized here, let 
C=Hacking know about it.  These summaries are only limited by Commodore 
Hacking's inability to purchase subscriptions to all the Commodore 
publications available.  We are very grateful to those publications that
send complimentary copies of their publications for review.

@(A): Commodore Gazette
   This new introduction is published by Commodore Gazette Publications,
   and is NOT related to COMPUTE's Gazette, in case you are wondering.  
   In Volume 1, Number 7, editor Christopher Ryan mentions the above
   fact, as it seems some upset COMPUTE'S Gazette subscribers were calling
   him.  In this issue, you will find some detailed instructions on 
   installing CMD's JiffyDOS, as well as how to turn your 64 computer into 
   a 128 (I should mention this was the April issue).  Kenneth Barsky
   provides some handy tips for BASIC programmers, including one 
   involving the append mode of CBM disk drives. Overall, the fare is				
   a bit light, but is pleasing.
		    	    	
@(A): Commodore World (http://www.the-spa.com/cmd/cwhome.html)
   In the continuing saga of the funky graphics, Jenifer Esile, who made
   a good share of them, has resigned from editorship of Commodore World.
   We hope it isn't something we said :-).  Anyway, CW has hired a new
   assistant editor, and two new issues have rolled off the press.
   
   Doug Cotton, the editor of CW, mentioned that Issue 13 was a nightmare.
   I guess even CMD falls prey to the superstitious number.  No matter.
   For those wanting to learn more about the World Wide Web and HTML, 
   Katherine Nelson presents an article on how to use this presentation
   markup language to develop exciting WWW sites.  A glimpse of the 
   Commodore LCD computer is given, and Doug Cotton presents his RUN64
   loader, also presented in the last issue of C=H.  For those who are
   anticipating the new release of Novaterm, Gaelyne Moranec interviews
   Nick Rossi, the author of Novaterm.
   
   Issue 14 follows up on the HTML tutorial by Katherine Nelson.  Since 
   Commodore software is developed on many computer platforms, Doug Cotton
   presents an article on transferring files between dissimilar computer
   systems.  In the reference department, clip out the User Group list
   compiled in this issue.  Obviously, you don't need it, but it's 
   something to send the clueless person who calls asking for help.
   Jim Butterfield shows how to get some input into your ML programs, and
   Maurice Randall delved into the VLIR file format used in GEOS.
   
@(A): DisC=overy (http://www.eskimo.com/~drray/discovery.html)
   Subtitled "The Journal of the Commodore Enthusiast," this recent
   publication introduction debuted online on May 17.  Available in
   electronic format, like C=H, this is a magazine Commodore Hacking
   readers won't want to miss.  Issue #1 includes articles by Stephen
   Judd on VDC timing, by Nate Dannenburg on constructing an 8-bit
   analog to digital board, and by Mike Gordillo on upgrading the 16kB
   128 VDC to 64kB.  Other articles include a discussion on George 
   Taylor's new Tri-FLI technique, an overview of CP/M, and a look
   at ModPlay 128.  Commented source is included for many of the
   articles, and the technical details are not spared. The layout is
   similar to early issues of Commodore Hacking, but more attention
   is paid to consistency throughout the issue.  In addition to
   the issue itself, there is a WWW Site devoted to the magazine:
   (http://www.eskimo.com/~drray/discovery.html).  Still uncertain
   here at Hacking Headquarters is the publication cycle for this new
   arrival, but we hope it finds an eager audience.  The editors are
   certain that there is room in the Commodore publication arena for
   DisC=overy and more magazines like it.
   					
@(A): Driven (http://soho.ios.com/~coolhnd/)
   Issue #13 contains a good review of the 1541-DOS package from 
   Bonestripper.  For those who don't know, 1541-DOS allows your
   1541 to read and write a disk format that can be read on IBM 5.25"
   floppies.  Iceball presents a reality-check for the demo scene, while
   Tao discusses some ideas to help developers write graphics-format
   independent code.  Even if you don't develop graphics code, you should
   read this article and heed its warnings.  Failing to test NTSC code on
   PAL machines or vice versa can impact the usefulness of your 
   application.  A little extra effort in development can pay off in the
   end.  Finally, Tron presents some more information on Internet Relay
   Chat (IRC), including how to use its features.
   
   Eclipsing the last issue, Drive #14 offers a wealth of information.
   Nate Dannenburg presents information on ModPlayer 128, while Guenther 
   Bauer reviews the new CMD 20 MHz SuperCPU accelerator.  Nate describes 
   some of the theory behind creating digital music and how it can be
   done using a Commodore 64.  Lastly, Issue #14 presents a transcript 
   of the Genie roundtable discussion on the 64 and its place on the 
   Internet.
   
@(A): LOADSTAR (http://www.loadstar.com)
   Issue 142 brings us Fender's proposal for dealing with the glut of
   good software languishing in the closets of those who have forgotten
   it sits there.  Adam Vardy presents a screen saver appropriately 
   described as "a screen saver for a computer that doesn't need one."
   Of special mention on this issue is Terry Flynn's SYSARCH, a handy 14
   screen reference guide containing PRG info at the touch of a key or two.
   For those who have flipped through the 64 PRG enough to wear out the
   binder, this might provide some relief.

   In Issue 143, Jeff Jones presents the nuts and bolts behind LOADSTAR's
   text packing routines, while CodeQuest '95 silver medal winner Paul
   Clark offers a handy LIST wedge that allows forward and backward BASIC
   listing scrolls.   Paul's wedge even allows searching.  That's a neat
   twist for you BASIC programers.  For those who don't regularly use
   GEOS but are given graphics in GEOPaint format, Saimak Ansari provides a 
   utility that will allow you to view and print them without GEOS.

   By far the most technical of the 3 reviewed, issue 144 contains a
   number of helpful utilities.  One, called Menu Toolbox II, allows the
   programmer to create useful and functional user interfaces with a minimum
   of effort. Jeff Jones, the author, has rolled an extensive list of user
   interface controls into this package. Additionally, Ken Robinson 
   presents some bug fixes and enhancements to Jeff Jones' Static Array
   System, a package that allows programmers to treat RAM like a relative
   file.  

@(A): LOADSTAR 128 (http://www.loadstar.com)
   For all the Dave's Term folks, Issue 31 presents the 5th and final
   installment of the 128 terminal program.  Bob Markland presents his
   RANDOM 2-254 program that one can use to create random numbers. In
   addition, Bob presents RLE 128, a utility to Run Length Encode (RLE)
   fines to make them smaller.  RLE packing is especially useful for 
   text screens and other files with repeating symbols.  Fender Tucker
   notes in the introduction that many new 128 titles are arriving for 
   publication, and he mentions that Mr. Markland will be taking charge
   of more aspects of this publication.  We hope he enjoys it.
   
@(A): LOADSTAR LETTER (http://www.loadstar.com)
   We have decided to break LL out from the LOADSTAR reviews because
   J and F Publishing has recently decided to make LL a separate product.
   The details are in LL Issue #34.  The publication will continue to be
   free of charge until #37.
   
   In LL #32, LOADSTAR introduces two more editions in its "Compleat" line.
   The Compleat Crossword offers what the name inplies, while The
   Compleat Jon presents 11 previously published Jon Mattson games in
   one compilation.  Jeff details a particlularly nasty bug that he worked
   around in The Compleat Crossword.  He invites savvy folks to figure out
   the problem.  In the reference department, most will want to archive Jeff
   Jones' Introduction to Machine Language.  Oh sure, it won't teach YOU
   anything new, but the tables are sure nice to have if, perchance, a
   friend ever forgets the addressing modes for some opcode.  Lastly, Jim
   Brain presents part 5 of the Internet series. 
   	
   LL #33 showed up with a revamped look.  The publication now has a
   professional front splash graphic, and the style has evolved.  We are
   impressed with the new look.  Of notable mention is the preliminary
   information on the CMD SuperCPU and its compatibility.  A discussion
   of BASIC compiler pitfalls and problems follows.  Every programer
   should read and re-read the article on how to write applications that
   work on machines with "old" ROMs.  The problems are so simple, but
   neglicting them ruins a perfectly fine app on an old 64.  If you
   haven't figured out how to access RAM under ROM and I/O at $D000, 
   there's some functions in the issue to do that as well.  
   
   In LL #34, we learn the new email address for LOADSTAR email:
   jeff@loadstar.com.  The issue also mentions LOADSTAR's WWW address:
   http://www.loadstar.com and notes that it will be the "coolest C64 site
   on earth."  Well, we'll see about that, but credit is due for the
   attempt.  In this issue, LOADSTAR notes the impending change of LL from
   free to subscription based, and some more information on the SuperCPU is
   related.  For those in the demo scene, you'll be pleased to know that
   Driven will now be distributed on the 3.5" version of LOADSTAR.  Gaelyne
   Moranec and her WWW site is spotlighted, but the most newsworthy
   information in this issue is the mention that Byte magazine recently
   recognized the 6502, the SID, and the Agnes/Denise/Paula chips as
   some of the 20 most influential ICs in the computer industry.  
   
   Although LL will appeal to the beginner to intermediate Commodore
   user with current events information, we are pleased to see numerous
   code fragments and technical discussions interspersed with the lighter
   fare.  For $12.00 a year, don't pass it over without a look.
   
@(A): The Underground
   Commodore Hacking would like to thank the anonymous Underground reader
   who donated a subscription so that we can review this magazine for our
   readers.  We appreciate the donation.
   
   With our first issue, Scott Eggleston has changed the format of the
   publication a bit.  Citing problems with reproduction of the smaller
   format and printing woes, The Underground gains a whole new larger
   format look with Issue 13.  For those developers considering a CMD
   hard drive purchase, Disk Estel reviews an HD-40.  Two Internet related
   articles surface in this issue, as Mark Murphy explains some of the
   technology of the Internet, while Disk Trissel details the File
   Transfer Protocol (FTP).  A full complement of columns and departments
   accompany each issue as well. The Underground covers beginner to
   intermediate material and uses GEOS to publish each issue.  Digitized
   photos make frequent appearances, and the content is top-notch.
   
Other magazines not covered in this rundown include:

*  _64'er_ 
*  _Atta Bitar_ (_8 bitter_)
+  _Bonkers_
+  _Coder's World_
+  _COIN!_
o  _Commodore 64/128 Power User Newsletter (CPU)
o  _COMMODORE CEE_
*  _Commodore Network_
*  _Commodore Zone_
*  _Gatekeeper_
o  _Vision_

Notes on Legend:
* = We have never received an issue of this publication.
o = We have not received a new issue of this publication to review.
+ = We will begin reviewing this magazine in the next issue.

In addition, others exist that C=Hacking is simply not aware of.  As soon
as we can snag a copy of any of these, or get the foreign language ones 
in English :-), we will give you the scoop on them.  

============================================================================

OS/A65 - a Multitasking/Multithreading Operating System for 6502 Computers

by Andre Fachat (a.fachat@physik.tu-chemnitz.de)
http://www.tu-chemnitz.de/~fachat

@(A): Introduction

In 1989, I first thought about building a self-designed computer.  I 
already had some experience with 6502 based computers. A friend of mine 
and I had been trying to build a telephone line switch computer based on 
the 6502. Although the project never succeeded (well, to a certain extent 
it worked, but then we always got new ideas...), the project gave me an 
idea of what an OS should be capable of.

With my homebrew computer, I not only wanted to implement one of those 
'simple' OSes as in the C64 or other 6502 based computer, but I also 
wanted to go a step further and do a real multitasking, microkernel 
design OS. This constrained the hardware design to allow memory mapping 
of key memory locations, including the 6502 zero-page and stack.

@(A): What Should a Real OS Do?

A real operating system has four major parts that handle the 
input/output, filesystems, memory management and process handling.  At 
the very least, a "real" OS includes some form of multitasking :-)

Process management forms one block of an OS. A multitasking operating 
system requires more administration than a single-tasking OS. A process, 
or task, can be seen as a set of allocated resources.  These resources 
include memory pages, swap pages, open files, and even the CPU, if the 
task is active. The CPU is the processing element that executes the given 
program using the allocated resources. Therefore, the CPU state has to be 
saved if a task is interrupted. This  allows undisturbed continuation 
after the interruption is handled. For each task, the allocated resources 
have to be registered and freed. As the CPU can be allocated to only a 
single task at a given time, it must be shared among all the active 
processes.  So, in order to create the illusion of executing multiple 
processes at the same time (pseudo-parallelism), the CPU has to be 
assigned to one task after another, at a speed that achieves this 
illusion.  If the assignments happen too slow, the illusion is lost, but 
if the speed is too fast, the CPU spends all of its time administering 
the tasks and not enough time executing the tasks.  The same concepts 
hold true for multiprocessor  computers, except that such a machine can 
achieve parallel operation on as many tasks as there are CPUs in the 
system.

A scheduler interrupts the CPU after a certain time to allow the CPU to 
be assigned to another task. If the scheduler interrupts the task itself 
to schedule a new task, the system is called preemptive. If the task has 
to give the CPU back to the system, it is called cooperative 
multitasking, like in MS Windows (tm).  of the two, preemptive is 
preferred, as cooperative multitasking fails when a single process 
forgets or is unable to relinquish control of the CPU.  If such a 
scenario occurs, the computer is "blocked".

As the second part, I/O provides a uniform interface to all peripherals, 
including character devices (serial lines, parallel printers), or block 
devices (disk drives). These services are normally provided by device 
drivers, which, in some operating systems, are even loadable. One problem 
is the communication between device interrupt routines and the rest of 
the system. Andrew Tanenbaum, in _Operating Systems, Design and 
Implementation_, says that, "Interrupts are an unpleasant fact of life. 
They should be hidden away, deep in the bowels of the system, so that as 
little of the system as possible knows about them." Nevertheless, 
interrupts are necessary to handle time critical operations, like 
providing new data to serial lines. Provisions must be taken to avoid 
data corruption by an interrupt routine and a program (or the kernel) 
using the same memory locations at the same time. So, even if you don't 
like interrupts, you have to use them.

As the third part, the filesystem provides user-level abstraction of I/O. 
Files store information of any kind. It is the most visible part of the 
OS. The naming conventions make a big part of the OS view for the normal 
user. (Remember the 8+3 character filename length restriction in MS-DOS 
filesystems?) The filesystem itself provides a standard interface to the 
user, although the underlying structure (i.e. how files are stored) may 
differ on different devices. In UNIX operating systems, even devices can 
be used as files and are represented by special entries in the directory 
structure (on the newest version of Linux (pre2.0.) even files can be 
used as filesystem (that hold files that can be used as filesystem (that 
hold files.. Ooops ;-))). I will not go further into this issue, but how 
a filesystem is organized can sometimes become a religious war among 
their respective followers. Since a filesystem keeps all internal 
structures to itself, it is possible to mount differently structured 
filesystems in one system.

As the final part, memory management keeps track of which parts of the 
memory are in use and which are not. Memory can be allocated when needed 
and is freed for other uses when no longer needed. Modern systems use the 
concept of virtual memory. Virtual memory specifies a system that uses a 
translation table between the CPU and the real memory locations.  When 
the CPU tries to access a certain memory address, the address given in 
the opcode does not reflect the real address used to access the memory 
chips.  Instead, the translation table is used to look up the real memory 
address from the `virtual' address given in the opcode. So, if there is 
no appropriately sized contiguous memory block available in real memory, 
such a block can be built using smaller chunks by setting up the 
translation table for the task. The lookup is done by the memory 
management unit (MMU). Software called a memory mapper is used to load 
and change the table. It loads the table with the values set up for each 
task.  So the same opcode address in two different tasks accesses very 
different memory locations in the RAM.

More sophisticated memory managers even do swapping. The memory manager 
allows a task to allocate more memory than actually available. If a 
memory location that is not available is accessed, the CPU is trapped 
(the ability to do this cleanly was one of the (IMHO very few) additions 
from the Motorola 68000 to the 68010 CPU). The memory manager then saves 
(swaps out) another memory page to disk and uses the now free memory. The 
CPU can then continue. If a swapped out memory address is accessed, the 
CPU is halted again and the page is swapped in again - swapping out 
another page if necessary. Clearly this slows the whole thing down, but 
then virtual addresses are a very nice feature. You can hide the pages 
used by other tasks or map the same memory to several tasks, making it 
shared memory.

These inclusion of these features implies that all resources can be 
assigned equally to each task. As there are problems with this in the 
6502 (think of the stack), another concept should at least be mentioned. 
The IBM `Virtual Machine' (VM/*) series of operating systems emulates the 
entire computer's hardware resources for a single task (i.e. a task 
doesn't talk to the system via system calls, but by writing data into 
some I/O registers).  These register accesses are trapped and appropriate 
action is taken. This means that the task can behave as if it owns the 
entire machine.  This also means it must load its own OS to handle disk 
and other I/O (the second part of the "VM/*" naming scheme).

The Commodore PET and its successors, the VIC, C64 and 128, already 
contain some functionality of a "real" OS.  On these machines, a single 
interface allows uniform file access across different devices (tape, 
disk, console). All of them are accessed via the standard OPEN / CKOUT / 
CHKIN / CLOSE system calls. However, I/O comprises only one part of an 
OS, as defined above.  The Commodore 8 bit computers are single CPU, 
singletasking systems (for exceptions see below). Therefore, no process 
management is necessary. In addition, there is no memory management. All 
memory is assigned to the single running process. (Although sometimes the 
need for multiple $cXXX pages seems pressing.)  The filesystem, an 
important part of an OS, is put into the floppy drive on Commodore 8-bit 
computers and is accessed via standard I/O over the IEEE bus.

One interesting exception is the old (IEEE488) Commodore disk drives. 
These drives have not one but two processors: one 6502 and a 6504 that 
run in parallel and share some memory. The 6504 is used as a floppy drive 
controller that handles the low level disk I/O. The 6502 gets the 
commands from the bus and processes the `filesystem' task. By writing low 
level commands to certain memory locations, it sends commands to the 
floppy drive controller (the 6504) that in turn reads and writes the disk 
blocks. If you look at the 1541, for example, you can see that this 
concept still holds true. However, in the 1541, the interrupt routine 
takes the role of the drive controller. Ironically, this reduction in 
CPUs was done to save 1541.  In its effort to cut costs, Commodore forced 
the single CPU of the 1541 to multitask, creating a bare operating system 
to support drive operation.

@(A): Modern Kernel Design

Early operating systems started with a monolithic approach. i.e. all the 
system functions were provided with one big binary. Modern UNIX systems- 
even Linux, which is not derived from the original UNIX source- use this 
concept.

A modern kernel instead has a microkernel design. A microkernel only 
provides the means of communication between different processes, not 
doing much itself. Some implementations even have the scheduler (!) or 
memory manager (!) running as a separate task. The kernel calls these 
processes to find out about free memory pages and which task to start 
next. This reduces the size of the kernel and allows greater flexibility.  
On the downside, the microkernel designs forces more messages to be 
transferred, slowing down operation somewhat.

One `famous' microkernel implementation is the current Mach microkernel. 
This kernel, and its derivatives, has been ported to many platforms. The 
PowerPC Platform OS/2 is based on a mach derived microkernel, as well as 
Linux for PowerPC Macintosh (mklinux). But, these are relatively simple
ports of already existing operating systems. These mach `single servers'
don't allow alternate OS system to run alongside or instead of themselves.
On the other hand, the GNU Hurd operating system exploits the mach design
to allow any server to be replaced by another.
  
@(A): The OS/A65 Operating System

Now let's get from the theory to practice...

@(A): The Kernel Implementation

When it comes to hardware design, the 6502 has a big advantage: It is a 
very simple CPU. With only a few support ICs, it is possible to build a 
fully functional computer (neglecting video and sound capabilities). On 
the other hand, the simplicity of the CPU has drawbacks. The 6502 has 
only three multi-purpose registers, and all are 8 bits.  As such, none 
can hold a complete 16 bit 6502 memory location. Even the stack pointer 
is 8 bits, restricting the stack to the 256 bytes from $0100 to $01ff. 
The stack size and the absolute addresses are a severe limitation if you 
intend to develop a multitasking OS on this machine.

Because I was developing a new system, I could do anything I wanted to 
get around this problem. I solved the stack problem by using an MMU, a 
Memory Management Unit. (Although the used chip, the 74ls610 is stated to 
be a `Memory Mapper' for paged memory mapping, I call it a `Memory 
Management Unit'...). The upper 4 address bits are used to select one of 
16 8-bit registers. (The 74ls610 has 12-bit registers, but only 8 bits 
are used, for obvious reasons.) The output of the registers were then 
used as the upper 8 address bits, extending the total accessible memory 
to 1 MByte. The CPU could switch each 4 kByte page to any of the 256 
pages available by changing the register values in the MMU. Oops - just 
introduced virtual addresses to the 6502 ;-)

For each task, new memory is allocated and saved in the task's page 
table. When a task is activated, the MMU registers are loaded with these 
values, giving each task its own memory environment. In the described OS, 
the memory `manager' is part of the kernel, although a quite independent 
part. The virtual addresses in the opcodes are translated to the real 
addresses through the contents of the MMU registers.

The tasks are handled by the environment routines. These routines set up 
the environment tables used by the scheduler. The (round robin) scheduler 
performs the task switching and decides which task to run next. 
Preemptive multitasking is achieved by using the interrupt to switch 
between different tasks. The most important routines are the two kernel 
entry and exit routines. These sub-routines have to switch the pages and 
the stack pointer as well as preserve all other register values. 

The tasks providing filesystem services register with the filesystem 
manager. They are then assigned drive numbers.  Although UNIX filesystems 
are virtual, where a user can reconfigure the system at any time, 
developing such a system for the 6502 would overly complicate matters.  
Different filesystems can then be used at the same time with different 
drive numbers. The drive numbers are translated by the filesystem manager 
when passing the message through to the filesystem task.  Currently 
`fsiec' for IEEE488 (parallel IEC-bus) interfaced CBM disk drives, 
`fsibm' (for PC style disks) and `fsdev' for using devices as files are 
provided.

The interface to the hardware is provided by the devices. Devices are 
simply stripped off tasks and are called as subroutines only.  A device-
filesystem (`fsdev') task translates filesystem requests to the device 
interface, so that any device can be used like a file.  The general 
structure can be seen in Fig.1.

    ---------- --------- --------- ------ -------
    |  fsdev | | fsiec | | fsibm | | sh | | mon | tasks...
    ---------- --------- --------- ------ -------
    ---------------------------- -------------- ----- ---------- --------
    |          |               | |    fsm     | |   | |        | |      |
    |          |      env      | -------------- |   | |        | |      |
    |          |               ------------------   | | stream | | mem  |
    |          |                                    | |        | |      |
    |          -------------------------------------- |        | |      |
    |             devices                           | |        | |      |
    ------------------------------------------------- ---------- --------
    --------- ------- ----------- ----------
    | video | | par | | spooler | | serial | devices...
    --------- ------- ----------- ----------

Fig.1: General OS structure. The devices and tasks make up the features 
of the system, while the kernel provides communications. 
(fsm = filesystem manager, env = environment handling, task switcher)

In addition to executing code within the task, tasks also need to 
execute to communicate with other tasks or components of the OS. To 
communicate between tasks, a send/receive interface is provided. Using a 
rendezvous technique (the sender blocks till the message can directly be 
copied to the receiver and vice versa) the mechanism is kept simple, as 
no buffering is involved. Semaphores can be used for synchronization 
between different tasks. Data streams are used to pass data between 
tasks, and even between tasks and devices. Each task has a standard 
input, output, and error streams opened upon creation, analogous to the 
stream in UNIX systems. The shell can even redirect or pipe the output.

@(A): Program examples

The shell is a good example to show some of the capabilities of the 
system. As already mentioned, each task has three specially assigned 
streams. Filesystem tasks don't use them (and have them set to an ignored 
stream), but shells normally get started with these streams
connected to a terminal device or a serial line device. The streams are 
normally opened by the task that `forks' the new task. On boot, the ROM 
contains some hints about which device number to open for a program. When 
a new task is started with a shell command, the shell has to open the 
devices.  Normally the standard input and output streams used by the 
shell itself are registered for the new task. However, if given on the 
command line, other files can be opened and the streams for these files 
used as stdio streams.

When a file has to be opened, an OPEN message is sent to the filesystem 
manager. This part of the kernel translates the drive number and forwards 
the message to the filesystem task. The filesystem then tries to open the 
file and sends a reply message. The originating task
provides a stream number with its first message. If the filesystem task 
succeeds in opening the file, it uses the provided stream to read or 
write the data to. If the file ends, the writing task closes the stream, 
which is recognized by the other end when there's nothing more to read.  
This works for read only and write only opens, but not for read/write 
opens.

@(A): Problems

Bootstrapping was the first major problem. How do you start a new 
computer and debug its OS if don't have an OS on the computer?  From 
earlier systems I already had a small monitor program - directly burned 
into an EPROM - able to load binaries through a serial line. Getting the 
MMU (74ls610) was the second problem, because it was on the CoCom list, 
and it was not allowed to export to eastern countries. (Although I don't 
live in an eastern country, this posed some difficulties...)

After defining the necessary interfaces between kernel and tasks and 
kernel and devices, the design was quite straightforward, actually. One 
problem was the small number of registers in the 6502. For some of the 
kernel routines, as well as for the send/receive interface it was 
necessary to define a special buffer. This buffer is at an absolute
address at $02XX, which is the same for each task. For systems with an 
MMU, this is not a problem after all. But it showed out to be a 
significant problem when porting the OS to systems without MMU, like the 
C64 (see below).

@(A): Operation without an MMU

After the system worked well with an MMU, I decided to build a stripped 
down version for systems without an MMU to better fit some `embedded 
applications' I had in mind. The system without an MMU is much more a 
multithreading than a multitasking system. Threads, as opposed to tasks, 
share the same memory, thus being able to change variables and data of 
other threads. But, on the other hand, two identical programs cannot run 
at the same time as with an MMU, unless they know they will together 
ahead of time.

The problem lies within the limited stack size of the 6502. Without an 
MMU, it is not possible to remap memory pages, especially the page with 
the stack in it. So the stack is divided into several parts, limiting the 
stack size of each thread, of course. Another problem is global, absolute 
addresses - like the send/receive buffer for example. As it would be too 
much of a rewrite and memory wastage to give each thread its own buffer, 
the send/receive buffer is now protected by a semaphore. A sempahore is a 
construct that allows exactly one thread to be in a certain routine or 
manipulate the protected data at a time. Semaphores originate from the 
railways, where it is important not to have two trains on the same rail, 
running in opposite directions...

@(A): Port to the C64

In addition to lacking an MMU, the Commodore 64 posed other porting 
problems. Only small changes had to be made to the kernel.  The C64 
kernel required an interrupt source for task switching. The video device 
had to be changed to support the C64 keyboard map and video interface. 
The hardware cursor used in my homebrew computer was replaced by a 
software cursor. The IEEE488 filesystem was first ported to the IEEE488 
interface for the C64 and then to the C64 serial port. When stress 
testing the system I realized that I still hadn't ported the STDIO 
library - a few low level subroutines that make life easier. The library 
was mapped to most tasks and was called from the task environment, not 
from inside the kernel. Unfortunately, it used global variables - which 
broke the library when running on a multithreaded system without an MMU. 
Therefore, some routines have been changed, while others can only be 
protected by a semaphore.

@(A): Port to the C128?

Well, the C128 has more memory and even the capability of remapping the 
stack and zero page to other locations. In a simple expansion of the C64 
version, this could be a way to raise the limited stack size to the full 
possible 256 bytes. Then, other ideas come to mind. The original memory 
management is made for a system with MMU and is quite useless without an 
MMU. What is missing is a call to get a contiguous memory block of more 
than a memory page in size. Then such a large block could be allocated 
for a new task to load the binary. The binary itself must then be 
relocated to fit the new address range. Unfortunately, plans to extend 
the system calls or add relocation capabilities do not exist at this 
time.

@(A): Conclusion

The OS/A65 operating system provides multitasking and multithreading 
capabilities with a modern kernel design for a 6502 CPU. The OS can be 
used from embedded applications to desktop systems. A shell provides 
modern I/O redirection and piping capabilities. Filesystems for Commodore 
disk drives and PC-style floppies are available. For me, it was a real 
adventure to design a completely new computer and operating system the 
way I wanted them designed. I also learned a lot about operating system 
design - maybe you have learned a bit as well. If you are interested in 
it, more information is available at:

http://www.tu-chemnitz.de/~fachat.

=========================================================================

UseNuggets

  
COMP.SYS.CBM:  The breeding ground of programmers and users alike.  Let's
see what topics are showing up this month:

@(A): Let's Poll Together

Throughout the past few months, Paul Allen Panks has been conducting a
poll on Commodore Business Machines' greatest success stories and most
momentous flops. Although some biased opinions exist, many have agreed
that the C64 was a success, while the 264 series (Plus/4 and C16) was a 
flop.  After that, however, and few agree.
		 
@(A): Ymodem vs. FX, Round -1

The many people who use Craig Bruce's ACE environment know that he recently
added support for a special transfer protocol, FX.  Proprietary in nature, 
FX supports very large buffer sizes and can achieve throughput of 200%
or more over standard protocols like Ymodem or Xmodem.  The downside
of FX is the necessity of compiling an FX "server" on a UNIX host in 
order to utilize the protocol.  

While not newsworthy in itself, a discussion about which standard
protocols are fastest kicked up some dust.  Many were inquiring about
DesTerm support for Zmodem, causing Ismael Cordeiro to note that the
DesTerm protocol implementors chose to optimize existing protocols
rather than introduce new ones.

A lively debate started, as Craig Bruce noted that even the fastest
implementations of Ymodem were no match for FX.  Ismael countered by
calling the comparison unfair.  Ismael noted the drawbacks of FX being
proprietary and not available for all Commodore users.

Also, Ismael explained the reasons for FX's increase in throughput over
standard protocols.  Packet size was a large factor, as FX uses a much
larger buffer size.  However, FX suffers when retransmissions are necessary,
since the time between handshakes (which occur between packets) is much
longer.  When using a comparable packet size, FX and Ymodem are
competitive.

@(A): Operating System Support

In last issue's USENuggets, we discussed the conversations stemming from the
proliferation of operating system ideas on comp.sys.cbm.  (C=H#12,
Reference: usenet) We noted that many expressed a need for programmers
to support the ACE computing environment, written by Craig Bruce.  Upon
noticing this, Craig responded:		    
		    
   "I, of course, support the idea of other people building more
   applications for the ACE environment.  I also support the idea of
   using ACE applications with other operating systems.  ACE was built
   on the idea of providing a well-defined Application-Program Interface
   (API), and any alternative OS that can emulate the ACE interface (using
   a "middle-ware" layer of software) can run all of the existing ACE
   applications.  Thus, a new operating system can have a base of (a few)
   high-quality programs available instantly (high-enough quality that even
   _I_ use them).  Admittedly, I have to update the documentation on the
   ACE API, since it changed in Release #15, but the basic functionality
   will always be the same.   
						    
   In addition, I also support the idea of other people using ACE code
   inside of their own operating systems.  Why re-invent the wheel?
   Especially useful may be the dynamic-memory stuff and some device
   drivers.  ACE is Public Domain software, so you can do with it
   whatever you please."

@(A): The "More Power" Swiftlink (An Update)
   
As well, Craig followed up to our story last issue on the "hacked"
Swiftlink that could do 115,200 bps.  (C=H #12, Reference: usenet)
Craig noted that ACE #15 supports the modified Swiftlink and that the
code in ACE handles the new speeds "flawlessly".  

@(A): And Speaking of Operating Systems...

Since the last issue of Commodore Hacking, at least two more operating
systems have been announced.  One, OS/A65, is detailed in this issue of
Commodore Hacking (Reference: os).  Another, called COMMIX 2, will
encompass an object oriented operating system.  The system is
comprised of multiple sub parts, including:

Networked X Input/Output (nXIO), the communications sub system
COMMIX Object Format (CXOF), an object and code description format
nXIOtee, the object oriented programming language.

For more information on this networked OS design, check out its WWW site
at: http://www.cynapses.com/ry/cx2/cx2home.html

=========================================================================

Using UQWK with QWKRR128

by Gaelyne R. Moranec (gaelyne@cris.com)

@(A): Introduction

One of my first priorities when joining an Internet service was to 
find a way to utilize the QWKRR128 offline mail and news reader to read
Internet email and USENET newsgroups.  Like all QWK offline readers,
QWKRR128 is commonly used with Bulletin Board Systems (BBS).  A user
dials into a BBS, selects which groups and what email to download.  The
BBS program then gathers and compresses the user's requested messages into
a file called a QWK packet.  The user downloads the resulting packet,
and then runs QWKR128 or some other QWK reader on the packet.  Thus,
users can read email and news offline and reduce connect time.  Replies
are also handled in much the same way, allowing the user to read and
reply to messages without tying up the phone.  

What happens when we replace the BBS with the Internet?  Well, for a
while, making the switch meant shelving QWK offline readers.  However,
as with all problems that occur on the Internet, this deficiency was
soon remedied by Steve Belzack, who wrote the Unix QWK system, called 
UQWK.  It allows Internet users to package up Internet email and USENET
newsgroups into QWK packets for use with QWK readers like QWKR128.  Like
its BBS counterpart, UQWK also handles reply packets from the QWK
reader.

@(A): Finding UQWK

You can find out if your system already has UQWK by typing any of the
following - if one command doesn't work try the next one.

   where uqwk
   whereis uqwk
   which uqwk
   find uqwk

If your system has UQWK installed, DON'T run the program until after
you've read the manual for it. UQWK requires command line switches to
work and defaults to emptying your mail box, which isn't nice.  To read
the manual, type:

   man uqwk

It's a good idea to create a text file in your home directory with the
manual so you can download, print, and review it offline.  The command
to do this is:

   man uqwk >> uqwk.manual

Then, to read it you type:

   more uqwk.manual

To download it with Ymodem, the command is:

   sb uqwk.manual

If your system doesn't already have UQWK available, you may be able to
get the file and compile it for your personal use. Because there are so
many versions of Unix to deal with, I cannot help you with compiling it
for use on your system.  If in doubt, give the file to your system
administrator and ask him or her to install it.

The FTP site is:  gte.com
      Directory:  /pub/uqwk/uqwk1.8.tar.Z

Be sure to get both UQWK and the README file.  The text file will tell
you step by step how to set it up on your account.

@(A): Using UQWK

I use two Unix script files when I use UQWK, named "getmail.script"
and "sendmail.script".  I keep these text files in my home directory. I
had to change the permissions on them so Unix would see them as
"executable" files.  The command for this is:

   chmod +x filename

or

   chmod 700 filename

You will need to make changes in the files so that they represent the
BBSID used on your system. For instance, CRISINET is the BBSID on my
system and is used in the examples below.

When you use the getmail.script the first time, just use an arbitrary
name for the name of the .qwk packet, but change your script after you
know the correct BBSID to use. Be sure to use proper upper or lower
case *exactly* as it appears in your control.dat file for any
references to your .REP and .msg files. This may not always work,
however, as it depends on your terminal program.  Some CBM term programs
will maintain the same casing as is used by PETSCII, while others will
convert them to ASCII. If yours changes the filename, be sure to change
the appropriate lines in your script files so UQWK and other utilities
can find it.


@(A): Scripts To Get You Started

   # ----------------
   # getmail.script
   #
  
   rm crisinet.qwk
   uqwk +r +m +n +e
   arc a crisinet.qwk *.dat *.ndx
   sb crisinet.qwk
   rm messages.dat *.ndx

   # ----------------
   
Notes:

   rm crisinet.qwk  - This removes any previously created .qwk packet.
                      it is in lower case, as since we name this file
                      ourselves, there's no need to make it uppercase.
					
   uqwk +r +m +n +e - The command to tell UQWK what you want it to do.

                      +r keeps UQWK from deleting your Email and marking
                         your newsgroup messages as read.
                      +m process Email.		       
                      +n process newsgroups
                      +e tells it to create a control.dat file listing
                         ONLY those subscribed newsgroups.
				   
                      *  Also you can use -m or -n so UQWK won't process
                      *  mail or newsgroups.  UQWK defaults to doing
                      *  Email, but not newsgroups. (+m and -not)
                      *  The +e switch is a must for QWKRR users, as
                      *  this list gets loaded into memory and reduces
                      *  the amount available for reading messages.
		      			      
   arc a crisinet.qwk *.dat *.ndx  - This creates an ARC archive of the
                                     files UQWK has created. QWKRR users
                                     don't need to include the *.ndx
                                     files, but it's included here for
                                     those who use other offline mail
                                     readers.  ... Heathens! :-)

                                     As mentioned previously, although
                                     the BBSID is "CRISINET", since
                                     we are creating the archived file,
                                     we can leave it in lower case for
                                     our own convenience.
 
   sb crisinet.qwk -  This begins a Ymodem download of your QWK packet. You
                      have to start the transfer with your terminal
                      program manually.

   rm messages.dat *.ndx - This removes the messages.dat and *.ndx files
                           from your directory.  If you have sensitive
                           Email you don't wish others to view, this
                           prevents anyone from reading it.
					       

   # ----------------
   # sendmail.script
   #
   
   rb
   unzip CRISINET.rep
   uqwk -m -n -Rcrisinet.msg
   rm CRISINET.rep
   
   # ----------------

Notes:

   rb - This begins a Ymodem upload so you can upload your Reply packet.
        You have to start the upload with your term program manually.

   unzip CRISINET.rep - If you've <Z>ipped your reply packet, this is the
                        command to unzip it.  When QWKRR creates the file,
                        it honours the case of the BBSID, so the filename
                        is in upper case.
				      
   uqwk -m -n -Rcrisinet.msg - This is UQWK command to process a reply
                               packet.  The -m and -m switches tell it
                               NOT to process your Email or newsgroups into
                               a new batch of mail to download. This file
                               (crisinet.msg) is within the "REP" packet.
                               It is lower case.

   rm CRISINET.rep - This deletes the .rep file from your directory.
                     UQWK automatically deletes the *.msg file.

You can also create these scripts with your term program. Either way
works.

When you review the UQWK manual, you'll see the commands and should be
able to follow the script file and make adjustments to suit your needs.
You can have UQWK create QWK packets for Email, newsgroups, or both.
Also, you can have one script file that sends your replies then creates
the next batch of QWK mail for you.

@(A): Safeguarding Your Email
		   
On one system I use UQWK with, I can back up my Email file, something I
recommend especially when you first start using the program.  To back
up my mail file, I copy the mail spool file to a local temp directory.
The actual path string for this varies depending on the type of Unix
system you are using.  For me, this works:

   cp /var/mail/username ~/temp/filename

On another system, I can't make a backup of my Email file, as the
system doesn't allow users to move or copy mail files.  However, I can
use a command for UQWK that tells it not to erase my mail or newsgroup
articles. If you use the read-mode only command, you have to
delete Email manually, and mark newsgroup articles as read.


NOTE WELL:
----------
UQWK uses your .newsrc file to find what groups you are subscribed to.
ALWAYS upload and process your current Replies before subscribing or
unsubscribing to newsgroups, or else you will have your replies going to
the wrong newsgroups.

@(A): The Files UQWK Creates
		     
UQWK only creates the base QWK mail files, which are "control.dat",
"messages.dat" and files that end with "*.ndx" (*.ndx files are not
needed for use with QWKRR). If you want to you can archive the files
QWKRR needs, or you can download the *.dat files uncompressed. The
getmail script file covers creating the arc file and beginning a Ymodem
download.

I compress my mail using arc, as I have a program that will
automatically dissolve my QWK mail and start QWKRR.  The program is
called QPE, and can be found in the archive NZP12817.SFX.  If you arc
your mail packet, you will need an ML program found in the archive
CSX01.SDA.  I could use Zip, but my ISP's Zip program creates only PKZip
2.04g files, and Commodore users don't yet have a program that will
unzip these.

@(A): Replying To Email
		       
By default, QWKRR doesn't display any data after an "@" symbol in the
headers. To be able to see the complete Email addresses (a must for
Internet use), first load but don't run QWKRR. Type:

   poke 49169,255

Then save the program using a different name (such as qwkrrinet), just
in case you've made an error when entering the values.

@(A): Long Email Addresses

If the Email address of the recipient doesn't fit in the "To:" field,
you must use other addressing methods. Erase the name in QWKRR's
header and substitute the person's first and last names, or any two words
with a space between them.  Do NOT have a "." or "@" here if the full
Email address is too long to fit in the field. If you do, UQWK assumes
it's a valid Email address.  The reason you want two words instead of
one is so the program doesn't assume you're sending local mail on your
ISP.

On the first line of the message, type:

To: user.name@anywhere.com

Begin your message on the following line.

Hint: Type "To: " on the first line. Quote enough of the message so the
      Email address is on the screen, and then move the address so it
      is in place after the "To: ".
		 
There is a space between the colon and the Email address.

@(A): Sending Newsgroup Articles
				
The only thing different from Email you'll need to do is make sure that
your articles have the word "all" or "ALL" in QWKRR's "To:" field.

Messages from almost any QWK offline mail reader do not conform to
Internet standards for newsgroup articles, as QWK was originally
designed for Fidonet only. You can still post articles with these
programs using the above method of placing "all" in the "To:" field.

For those who want their articles to conform to the Internet specs, you
can have UQWK look to the body of your message for the header
information by using the +X switch. This will let threaded newsreaders
properly add the article into an existing thread. This is only for those
who are well experienced with RFC-1036, the "Standard for Interchange of
USENET Messages" and RFC-822, the standard for Internet Text Messages.
These documents can be found on the web at: http://www.internic.net/rfc.
In the future, I'll be adding information to QWKRR's web site on how to
create articles that do conform to this standard.

QWKRR has a known bug when it comes to quoting lines that are over 255
characters long.  This bug often appears when replying to newsgroup
articles, as the "Path:" line often exceeds this.  The next
version of QWKRR will not have this problem. To reply to a newsgroup
article that has a long pathline, export the article as a temporary text
file, then import it into the message. e<X>port is a function only
available to registered QWKRR users.

@(A): A known UQWK Quirk for QWKRR users

When importing text that has a "message" header on it (i.e., all the To,
From, Subject etc.), UQWK makes the assumption that a new message has
started.  To avoid having your message split at this stage, indent the
To/From info in the imported text about 4 columns.

@(A): Sending Your Replies
	      		  
Most Unix systems can unzip reply packets that have been Zipped by
QWKRR.  It can also handle files that are ARC'ed if you use the QPA
program.  UQWK doesn't require this.  All UQWK knows about is the *.msg
file within the .REP file. It is possible to choose <L>ink within QWKRR
and upload the resulting *.msg file, BUT if you do this, you may have
problems with Xmodem padding (also Ymodem) added to the end of the file
by your term program. This extra padding will cause you to receive an
Email bounce as UQWK tries to interpret the padding as a message. It's
easier to <Z>ip the replies then let your script file unzip them.

@(A): UQWK and Signatures

When posting articles to newsgroups, UQWK will append your .signature,
but if it doesn't like the length of your signature, it will not post
the article.  (I don't know the length it will accept). You may want to
change the filename from .signature to .sig and use a QWKRR macro for
your signature instead. (Be sure to change your settings for other
programs like Pine so it will look for a file called .sig, though).

@(A): UQWK and Newsgroup Subjects

There is a UQWK version that doesn't accept newsgroup articles created
with QWKRR and complains that the subject line is incomplete or
incorrect.  So far the only cure I've found is to use an older version
of UQWK that my system has online.  UQWK version 1.8 does not have this
problem, and after checking FTP sites, it appears my current ISP is
using a customized version. If I find others have similar problems and
find a cure, I'll post info regarding it on QWKRR's WWW site.
http://www.msen.com/~brain/guest/Gaelyne_Moranec/qtoc.html

@(A): Conclusion

While reading BBS news and email offline is a blessing, it is almost
a necessity on the Internet, where the level of email and news can
be overwhelming to the online reader.  UQWK and QWKR128 make a powerful
combinations that help you manage your time effectively yet still enjoy
the pleasures of keeping current on all the Internet has to offer.

============================================================================

FIDO's Nuggets

by Geoff Sullivan (geoff.sullivan@tbbs.bcs.org)
 	    		     				
The CBM GEOS, CBM, and CBM-128 FIDONet echoes are places where Commodore 
users unite.  Let's see what they discussed over the past few months: 
 
@(A): GEOCable and Printers 

GeoCable was a product originally marketed by Berkely Softworks to 
eliminate the need for a serial interface for non-Commodore printers in 
the Geos environment.  It also speeds data transfer from computer to 
printer. Well, some users decided to test this speed increase and found 
that what was accepted before may not be true in all cases.  Many 
scientific, and not so scientific, test results showed that the speed of 
printing may have more to do with the type of data being printed and the 
buffer size of the printer, than with the actual method used to get the 
data to the printer. 
 
Lately more programs outside the Geos operating system are sporting 
printer drivers that support the GeoCable. As Phil Heberer aptly puts 
it: 							
 
   "Most of us GEOS users know the obvious benefit of using a geocable when 
   printing from GEOS, but I'm also happy to see many programmers adding gc 
   support to their programs. I can now use my geocable with nearly ALL of 
   my favorite CBM programs that I currently use besides GEOS (i.e. 
   Superscript/Superbase, TWS128, FGM, BROWSER and ACE15) If Maurice 
   Randall gets 'The Wave' finished for GEOS, it will round out my 
   applications quite nicely!" 
 
Many users are building their own cables as well.  Some users are 
discussing the need for drivers that will work with the Hewlett-Packard 
PCL language that is becoming more prevalent now that Commodore users 
are fooling around with ink-jet and laser printers. 
 
@(A): DESTERM 

Matt Desmond has recently posted a message on FIDONet confirming his 
work on a version 3.0 of Desterm.  He has also stated again that it will 
have hardware flow control and enhanced REU support.  It will NOT 
support any transfer protocol beginning with the letter Z. 
 
@(A): EZ Loader v3.2 Released 

David Schmoll announced the release of an upgraded version of his EZ 
Loader program for the 64 or 128. It is designed to help you access your 
most used programs on any disk or fixed drive through a single menu. 
Although most useful for CMD drive owners, it can be used with any 
Commodore drive. It has too many slick features to be mentioned here but 
certain ones are disabled on the downloadable version. They can be 
activated by registering the program. It is available via FTP from 
ccnga.uwaterloo.ca in /pub/cbm/util128/ and possibly on local BBS's by 
now. 
 
@(A): Alternate Character Set Access 

One user was toying with the idea of storing multiple character sets in 
the VDC 64K memory of his C128 and swapping between them by simply 
changing the register address. His aim is to perfect this for display 
applications for various programs such as character set editors.  Rod 
Gasson suggested an alternate scheme would be to swap the entire stored 
character set from the VDC ram into the default page at $2000. He says 
that the VDC's block move is very quick and it allows mixing of 
characters from more than one set. 
    
@(A): Internet 

Some folks have reported problems downloading binary files via Lynx or 
FTP through UNIX servers with their Commodores. Ismael Cordeiro had some 
suggestions for these MIME type problems. For those with shell access on 
a UNIX system he suggested using FTP with a customized MIME type file: 
     
   "...create a text file named '.mime.types' in your home 
   directory with one line: 
    
      application/octet-stream sfx sda arc prg cvt lnx 
 
   If you don't have shell access and Lynx is the user interface...the only 
   thing to do is ask the system administrator to include the above line in 
   the system's mime.type file." 
       
@(A): Miscellaneous

Among the miscellaneous topics being discussed on FIDONet is the use of 
a C64/128 for ham radio communications.  This is a rather popular use 
for the 64.  The program being discussed is Digicom. Many newcomers are 
still asking questions of the "old timers" concerning Desterm setup with 
high speed modems, REU expansion, and off-line mail reading and 
replying.  For a "dead" machine, it is surprising to see how many are 
being dragged out of closets, dusted off, and booted up! 
    
So, that's a glimpse into the world of FIDO, the wonder dog of networks, 
for this time. 
 
Here, boy.... 

=========================================================================

Brad Templeton: The Programmer's Friend

by Jim Lawless (cjbr@gonix.gonix.com)
 			 
The following text is an interview held via e-mail with former C64 
software author Brad Templeton.  Mr. Templeton is the author of the PAL 
assembler and the Power productivity tool. 
 
Mr. Templeton is the founder and current CEO of ClariNet, a networked 
newspaper with over a million subscribers.  Please refer to the 
references at the end of this text for Internet resources detailing his 
accomplishments. 					   
 
Q: Were PAL, Power, and C Power fruits of your imagination, or were you 
   contracted by Pro-line to write them? 
 
A: C Power was a C compiler written by Brian Hilchie, nothing to do with 
   me. 
 
   But POWER and PAL (Can't recall which I did first, probably PAL, but 
   POWER was the one sold first.) were done on my own.  Professional 
   Software licensed Power for the Pet and Pro-Line licensed it and Pal 
   for the C-64. 
 
   Actually, I think I wrote a quick cross assembler in B (the 
   predecessor language to C) to run on the mainframe at my university 
   first, and wrote the early version of PAL in that.  Then of course 
   moved it to the Pet so that PAL could assemble itself -- always the 
   big moment in any language development.  My memory is getting dim, I 
   might have started from an Apple based assembler.  I know I wrote a 
   cross assembling, one-pass version of Pal, with macros for Unix a few 
   years later but just used it to develop stuff for the C64. 
 
   (Most people are startled to learn that C compilers, even the very 
   first one, are usually written in C, and so on.  You bootstrap by 
   writing a very simple one using an existing tool, then get it going 
   and then enhance it.) 
 
Q: PAL was/is one of the most widely used assemblers for the C64 (and I 
   assume the PET).  Had you written any assemblers before PAL, or did 
   you just happen to create a darn good product "coming out of the 
   starting gate"? 
 
A: No, I hadn't written any assemblers other than the cross assembler.  
   Before that however, I had developed Time Trek, a game for the Pet, 
   Checker King (a game) for the Atari 800, Apple ][ and Pet and the 
   Atari 800 graphics for Microchess.    
 
Q: In the days of PAL and Power, were you actually making a living 
   writing software for CBM machines or was it sort of a part-time 
   excursion? 
 
A: Well, I was a student at the time.  But after graduating, it was 
   enough of a living to be able to work on other projects, and 
   eventually get the contract to develop my next product, Alice Pascal, 
   in 84. 
 
 
Q: What were some of the biggest problems marketing your CBM software? 
   (Was piracy an issue?) 
 
A: Piracy was somewhat of an issue.  The big mistake with Power was 
   doing demos at some pet user groups before I was ready to sell it.  
   Bill Seiler of Commodore saw a demo I did at the silicon valley PUG, 
   and added some of the best features to Basic-AID, which Commodore 
   gave out for free.  Power was better than Basic AID but a good free 
   competitor didn't help. 
 
   It was still a hobbyist market, not nearly as big as the computer 
   industry grew to be. 
  
Q: When and why did you finally abandon development efforts geared 
   toward the C64? 
 
A: The machines faded away and the IBM based machines clearly took the 
   lead for more serious applications.  If you wanted to do things that 
   took  more than a few kilobytes, or work in C, the C64 wasn't really 
   an alternative. 
 
   I did some games for the C64 but never went anywhere with them. 
 
Q: With C64's showing up at garage sales and emulators available on a 
   wide variety of machines, a renewed interest in that little machine 
   is experiencing a rebirth.  Do you have anything you'd like to say to 
   a new generation of C64 hackers out there? 
 
A: On one hand I am shocked, since vastly more powerful computers are of 
   course available very cheap, garage sales or otherwise.  However, 
   there was a certain excitement to a small computer that one person 
   could fully understand and work with like the Pet or C-64.  If you 
   view the computer as a hobby or a toy, it doesn't have to be the most 
   advanced thing, what matters is that you have fun with it. 
 
   I certainly wouldn't advocate Windows programming to the ordinary 
   start-up hobbyist but such people can have fun on a C64. 
 
For more information on Mr. Templeton's current endeavors, the following 
WWW documents may be of interest to you: 
 
   An Interview with Brad Templeton 
   URL: http://info.acm.org/crossroads/xrds2-3/templeton.html 
 
   Brad Templeton's Homepage 
   URL: http://www.clari.net/brad/ 
 
=========================================================================

Hack Surfing

   
For those who can access that great expanse of area called the World 
Wide Web, here are some new places to visit that are of interest to the 
Commodore community.  In early 1994, when the US Commodore WWW Site 
started, the number of sites online that catered to Commodore numbered 
in the 10's.  Now, the number is in the 100's.  What a change. 
 
If you know of a site that is not listed here, please feel free to send 
it to the magazine.  The following links have been gleaned from those 
recently changed or added to the US Commodore WWW Links Site  
(http://www.msen.com/~brain/cbmlinks/).   
 
To encourage these sites to strive to continually enhance their 
creations, and because we like to gripe :-), we'll point out  
improvements that could be made at each site.  
 
@(A): Companies 
 
o  The Official DesTerm 128 Page 
   URL: http://www.ionline.net/~mdesmond/desterm.html 
   Here is where you will find the latest scoop on the popular terminal 
   emulation program for the 128, as well as information on the newest 
   release, Desterm 128 3.0.  As well, you can download Desterm 2.00.  
   C=Hacking gripe:  There isn't much information on the 3.0 version. 
 
o  Keyboard Studio 
   URL: http://www.cu-online.com/~gwilson/ 
   Gordon Wilson's company motto is: "Large enough to get it done; 
   small enough to care."  That sits well with us.  This small site 
   announces Mr. Wilson's Commodore repair facility to the world.  It 
   offers basic information about the type of repairs possible and what 
   other services are offered.  C=H gripe:  We wish there was more 
   detailed information on repair services, like pricing information. 
 
o  Novaterm 9.6 
   URL: http://www.eskimo.com/~voyager/novaterm.html 
   For a guy who just released a new version of his popular C64 terminal 
   emulation program, Nick Rossi has managed to put some effort into this 
   site.  The site is flashy, but can be viewed with text browsers as 
   well.  The information here includes a rundown on Novaterm 9.6 
   features, details on who helped write it and how to purchase it, and 
   links to obtain the 9.5 release.  Of special mention is the fully 
   indexed HTML online documentation.  C=H gripe: For those who want to 
   order with a credit card, the site refers to a list of authorized 
   Commodore dealers that we couldn't find. 
 
o  Omni 128 BBS Software Home Page 
   URL: http://www.nwlink.com/~bbell19/omni128.html 
   At this site, Brian Bell presents an overview of his Bulletin Board 
   System Software and updates on releases.  Additionally, information on 
   capabilities like "Echo Net" are present.  C=H gripe:  We couldn't find 
   out how to purchase the software or how much it costs. 
 
@(A): Publications 
 
o  DisC=overy Home Page 
   URL: http://www.eskimo.com/~drray/discovery.html 
   We'll save a review of the magazine for "Hacking the Mags" (Reference: 
   mags), but the publication does tout its own WWW site.  It's pretty 
   bare at present, but it does have links to both a text and also a 
   compressed version of the Premiere Issue. C=H gripe:  We didn't expect 
   much here, but we do hope the publication offers an index or list of 
   articles here at some point.   
    
o  64'er Online 
   URL: http://www.magnamedia.de/64er/ 
   This site presents information about the German Commodore publication.  
   The layout is nicely done.  The July issue is currently featured, with 
   information on the contents and an index of articles.  Alas, the site 
   is for German readers only, but we expected no more.  For those who can 
   read German, ordering information and pointers to other products are 
   available.  C=H gripe: The site leans a bit heavily on graphics, making 
   it slow to load. 
 
o  Commodore Online Information Network (COIN!) 
   URL: http://people.delphi.com/cynrcr/ccs.html 
   This site offers information on the COIN! disk magazine.  Information 
   on the magazine is presented, and links to the 2 most recent issues are 
   provided for your downloading pleasure.  A small description is given 
   detailing the contents of older issues as well.  C=H gripe: White text 
   on a black background takes a bit of time to get used to.  However, 
   text mode users won't notice :-) 
 
@(A): Demo Groups 
 
o  Millenium Home Page 
   URL: http://marie.az.com/~waveform/millenium.html 
   This site shows off screen shots of the demo groups' creations.  The 
   site is nicely done, with many screen shots and nice graphics.  C=H 
   gripe: How do we download the demos? 
 
o  Demo/Revenge Distribution Site 
   URL: http://hack.lakeheadu.ca/~revenge/index.html 
   Demo groups tend to provide the splashiest sites, and this one is no 
   exception.  The graphics are nicely done, but the content is available 
   to all text-mode browsers as well.  Links to demos are provided, as are 
   links to other sites of interest.  C=H gripe:  With limited time to 
   download, could we get a small description of each demo to help us 
   pick? 
 
@(A): Reference Works 
 
o  The C64 Games WWW Home Page 
   URL: http://www.student.nada.kth.se/~d93-alo/c64/ 
   Screen shots are provided for a couple of C64 games, and clicking on 
   the names reveals detailed information on the games and its gameplay.  
   Music from many C64 games is present, as are tips and hints for playing 
   some vintage Commodore games. C=H gripe: The name of the site is a bit 
   misleading, since the list of games isn't that extensive. 
 
o  Poldi's Projects - LUnix 
   URL: http://rpool1.rus.uni-stuttgart.de/~etk10217/proj.html 
   UNIX on a 64.  Don't even think that it cannot be done.  Daniel 
   Dallmann has already proved it CAN.  This site details the entire 
   project to execute a multitasking OS on a 64 from kernel to device 
   driver.  In addition, some of Daniel's other projects are detailed at 
   this site.  Daniel has developed a fast soft-80 screen driver for the 
   C64, and the code with detailed information is available here.  
   Schematics, code, comments, and an overview for Daniel's 9600 bps 
   serial routines are available here.  These routines have also been 
   incorporated into Noavterm 9.6.  Finally, Daniel has developed a basic 
   implementation of the Serial Line Internet Protocol (SLIP) for the 64.  
   Code and information are linked off the site.  Many of the projects 
   include screen shots and schematics.  C=H gripe: A high level overview 
   of some of the projects would help first time surfers. 
 
o  OS/A65 Computer and Operating System  
   URL: http://www.tu-chemnitz.de/~fachat/csa/ 
   Andre Fachat's work on a multi-tasking OS and a home built 6502 based 
   computer system are outlined at this site.  The software is detailed in 
   Andre's article elsewhere in this issue (Reference: os), as well as on 
   the site.  The full text is presented on the site, with an indexed 
   overview.  C=H gripe:  We couldn't find a link to the bare 64 binaries. 
 
o  Technical SID documentation 
   URL: http://stud1.tuwien.ac.at/~e9426444/sidtech.html 
   For the SID-savvy of the bunch, this site offers a technical discussion 
   of the 6581 SID IC and descriptions of the various waveforms with 
   mathematical treatment.  C=H gripe: The presentation is pretty basic. 
 
o  Commodore Product Source List Issue #5, On-line Edition  
   URL: http://www.televar.com/~rjlong/ 
   Roger Long has placed his Commodore products SourceList Online.  The 
   online version, which is updated more frequently than the printed 
   version, contains a wealth of information on where to find hardware, 
   software, and supplies for the Commodore computer. C=H gripe:  An 
   alphabetical index would be nice. 
       
o  Carrier Detect 
   URL: http://www.swt.edu/~ez13942/bbs/cbmbbss.htm 
   For all the BBS sysops or ex-BBS sysops, this page will certainly bring 
   back memories.  A History of BBS in the 1980's is given, followed by an 
   extensive review of various BBS systems.  Each review includes 
   statistics and screen shots.  C=H gripe: The background makes the 
   graphical version a bit rough on the eyes.  As usual, though, text 
   viewers won't care :-) 
 
o  Bacchus' List of 64 related PC and Amiga tools 
   URL: http://www.ludd.luth.se/~watchman/fairlight/c64/tools2.html 
   If you regularly use PC or Amiga platforms to develop Commodore 
   executables, this site is for you.  It gives a list of many PC and 
   Amiga utilities to help the cross platform developer.  Many programs 
   are available, and they are all sorted into categories based on 
   function.  C=H gripe:  We wish there were more detailed descriptions. 
 
@(A): Individual Commodore Users 
 
o  QT's Dream Space 
   URL: http://www.lm.com/~qt/ 
   QT is a demo lover, and it shows.  There are links to demos, lists 
   of new releases, links to demo magazines, and even a tribute to 
   "Coder's World", a demo coding tutorial. In addition, there are PC 
   versions of 64 compatible ZIP and LYNX compression programs to give to 
   your computing challenged PC friends. C=H gripe:  QT likes SunSoft's 
   JAVA mascot, and has him displayed on the site.  It's a bit misleading 
   for those who expect JAVA information wherever the mascot is displayed.  
   (He is cute, though). 
 
o  Don's and Mex's Game Page 
   URL: http://blitzen.canberra.edu.au/~dryan/c64main.html 
   In a page true to the Commodore, this page's headings are done with 
   text screen shots from a C64.  We are impressed.  Lots of games are 
   presented on this site, with basic information and screen shots 
   provided.  Links from each game allow the viewer to download the 
   binary.  C=H gripe:  Some of the games are copyrighted and commercial.  
   At the very least, a warning should be placed on the pages. 
 
o  Welcome to the World of Saz 
   URL: http://www.wonderland.org/~sarah/ 
   Sarah Dalrymple has provided the WWW surfer with a plethora of 
   information on the Commodore VIC-20.  Pictures of units and peripherals 
   are featured, as are some historical facts and links to other VIC-20 
   sites.  C=H gripe: The Games/Programs link wasn't functional. 
 
o  Triumph's Zone 
   URL: http://www1.usa1.com/~triumph/ 
   This page show us how one person uses a Commodore system.  As well, 
   this page demonstrates the immense pull CBM machines have on users.  
   Triumph had left for greener pastures when a friend "re-introduced" him 
   to the Commodore.   For the adventurous, there are plans here for a 
   C64 laptop computer under development.  C=H gripe:  The color  
   scheme leaves a bit to be desired, but text browsers won't care. 
 
@(A): Change of Address 
 
o  LOADSTAR has moved (AGAIN!) to http://www.loadstar.com/ 
 
o  Marc-Jano Knopp's CBM WWW Site has changed (AGAIN!) to: 
   http://www.student.informatik.th-darmstadt.de/~mjk/c64.html 
 
o  Richard Cunningham's Color 64 BBS Home Page has changed to: 
   "Tim Allen's (Dynamite) Commodore Color Pages" and is now at: 
   http://www.indirect.com/www/dynamite/color.htm
 
=========================================================================

Dim4: A Mind Expanding Experience

by Stephen L. Judd (sjudd@nwu.edu)
  				
@(A): Introduction

"What in the world was I looking at?  What the heck is your
code doing?  How do I meet smart and ferociously gorgeous women like
you do?"

The last question I cannot answer, but this little writeup,
along with some pedantically well-documented code, can clear up the
first two, I think.  This will not be a very dense writeup, honest!
Look to the code for more detail, and any equations below can be
skipped without problem.

In case you didn't know, dim4 was my entry into the recently
held 4k demo contest.  For more info on the contest, as well as the
other entries (17 entries in all), seek ye the Driven home page at
http://soho.ios.com/%7ecoolhnd/
 
First, very briefly, the keypresses have the following actions:

   4   -- Turbo mode
   D   -- Normal mode (4D + 3D rotations, and nice and casual)
   F4  -- 4D-mode.  All "3D" rotations are halted
   R/S -- 3D-mode.  All "4D" rotations are halted
   .   -- Dotted line toggle
   Space  advances to the next object.

The code is 4095 bytes long, and was a royal pain to get working after 
compression.  The music is Prelude #2 from The Well-Tempered Klavier by 
J.S. Bach.  I borrowed (and improved) the line drawing routine from the 
cube3d programs and stole the patterns out of Polygonamy, otherwise the 
code is written from scratch, including the music routine.  That crazy 
third object has fourteen sides in 3D, and the 4D object alone has 32 
points with 96 lines connecting the points, so well over 100 lines are 
being drawn at a time.  I was sorely tempted to put a docking bay on one 
of the sides of the 3D guy (a little "Elite" humor there) but ran out of 
time and room. After decompression the code expands a little bit, and in 
the end it leaves the 8k between $4000-$6000 free, but uses pretty much 
everything else.

The first object is a 4D cube, often called a hypercube.  You can see a 
small cube inside of and connected to a larger cube.  If you look a 
little closer, you may notice that in-between the two cubes are some 
more cubes.  (When you slice a 3D cube, you get a 2D cube -- a square.  
When you take a slice of the hypercube, you get a 3D cube).  As it 
rotates along its fourth coordinate, the cube folds in upon itself.  One 
way to look at it is that the cubes start to change positions -- after 
180 degrees of rotation the inside cube is on the outside and the 
outside cube is on the inside.  The hypercube has literally turned 
inside-out.

The program works fine in PAL and NTSC, although PAL folks will get the 
tune playing at the wrong speed and transposed into a different key.

Oh yes, one thing I really like is the background on the second object-- 
on my 1084 it looks like rope.  This is a consequence of the way VIC 
generates colors -- extra colors outside of the normal 16 are being 
generated, because two hires colors are being placed next to each other.  
If you look at it on a black and white monitor, you will just see thick 
diagonal lines.  This very much surprised me when I first saw it!  Find 
the March 1985 IEEE Spectrum article for more information on why VIC 
behaves this way.

Finally, you may notice some little glitches from time to time
in drawing the 4D objects.  That is my safety valve and keeps the 
program from literally destroying itself, in sometimes spectacular 
fashion.  Oh well.

@(A): A Handy Glossary

   Polygon: A rectilinear closed plane figure of any number of sides.
	
   Vector: A directed line segment having magnitude and direction.

I do not know how the term "filled vector" came into vogue, but it is 
meaningless, not to mention a little silly -- what would an "unfilled 
vector" look like, two points with an arrow at one end?  One may as well 
talk about filled lines and filled points.

Thus, I plead with the community to not refer to polygons as vectors and 
filled polygons as filled vectors.  Polygons need your help, and have 
been discriminated against for too long now.  Just one small donation on 
your part of a correct mathematical reference can help save the lives of 
one, ten, even hundreds of polygons, both abroad and here at home.  
Individuals wanting to contribute more may sponsor individual polygons; 
a kit will be sent to you containing the name of the polygon and at 
regular intervals a picture of the polygon will be sent to you, so you 
may monitor the progress of your particular polygon. Some polygons are 
created unclosed, and some do not get the necessary ink or programming 
skill to properly fill them, but be it a quadrilateral or decagon, 
trapezium or parallelogram, with your help we can eventually make all 
polygons closed and full, for a better, more civilized world. Thank you 
for your time, and God bless all the little geometrical constructions, 
no matter their dimension or configuration.
 
@(A): The Idea

This program displays a representation of some four-dimensional objects 
-- four 4D objects, as a matter of fact, each one of them a 4D analog of 
a three-dimensional object.  Each screen contains four symmetry-related 
3D objects and one 4D analog of the object, rotated and projected from 
4D into 2D.

To describe the four-dimensional objects is not so tough. The 4D cube 
(the hypercube) is the first to be displayed, and it is the starting 
point for the later objects.  It is also, I think, the easiest to see 
what is going on with.  There is nothing really special about four 
dimensions -- with a 3D object each point is defined by three 
coordinates, say (x,y,z).  A 4D point has four coordinates, say 
(w,x,y,z).  The 3D cube has eight vertices at:

   (+/-1, +/-1, +/-1)

Therefore a very natural extension into four dimensions would be:

   (+/-1, +/-1, +/-1, +/-1)

For a total of sixteen vertices.  To look at it another way:

   (1, +/-1, +/-1, +/-1)
   (-1,+/-1, +/-1, +/-1)

That is, at w=1 we get a cube, and at w=-1 we get another cube.  In 
fact, if we take a "slice" of our hypercube, we get a 3D cube. Compare 
to taking a slice of a 3D cube, where you get a square (a 2D cube, if 
you will).

This is demonstrated when the code first starts up -- the program 
"grows" a cube from 0D -> 1D -> 2D -> 3D -> 4D.  At the 4D stage there 
is a smaller cube inside of a larger cube, with cubes in-between the 
two.  (If you are curious as to how I did the "growing", see the code 
description below for a few details).

Next, as the cube begins to rotate, it "folds in" on itself (or, if you 
like, it unfolds!).  Rotations are no different than they have always 
been.  To do a 3D rotation, recall that the object is rotated in the x-y 
plane, the y-z plane, and the x-z plane.  To rotate in the x-y plane by 
an angle phi:

   xnew = x*cos(phi) - y*sin(phi)
   ynew = x*sin(phi) + y*cos(phi)

Well, any two coordinates form a plane, so in four dimensions there are 
just twice as many planes to rotate in.  In particular, the program does 
rotations in the usual planes (x-y, y-z, x-z) and also does a single 
rotation in the w-x plane, that is,

   wnew = w*cos(phi) - x*sin(phi)
   xnew = w*sin(phi) + x*cos(phi)

I didn't feel any great need to rotate through extra planes involving 
the w-coordinate (the w-y and w-z planes).  When phi=90 degrees, or 180 
degrees, notice that the coordinates trade places, then go to their 
negatives.  This means that as phi is increased, in essence the inner 
and outer cubes are going to change positions, and this then explains 
the unfolding that is seen on the screen.

The R/S key goes into 3D mode by zeroing out the angle increment for the 
w-x plane.  In effect, the 4D rotation is frozen. The F4 key zeros out 
the x-y, y-z, and x-z angle increments, leaving only the w-x rotation.  
F4 followed by R/S will therefore freeze the image completely -- use D 
or 4 to get it going again.

There is still the issue of visualizing a 4D object.  This should not be 
surprising -- after all, we have all seen 3D objects drawn on a 2D 
computer screen (or a 2D piece of paper).  If we can get from 3D to 2D 
then we ought to be able to get from 4D to 3D (and from there into 2D).  
Recall that a 3D projection draws a light ray from the object, through a 
little pinhole located at the origin, and finds the intersection with a 
piece of film located at z=d, a constant:

   L = t * (x1,y1,z1) is my light ray, so t=d/z1 gives the
                      intersection with the film of a ray from
                      the point (x1,y1,z1) passing through the
                      origin.

So this is very easy to extend into 4D -- simply project from 4D 
into 3D through the origin:

   L = t * (w1,x1,y1,z1)  let t=d/w1

   -> L3 = (d, d/w1 * x1, d/w1 * y1, d/w1 * z1)

The x,y,z coordinates are then projected from 3D into 2D, again through 
the origin.  This gives a "perspective" view of the 4D object.

Now, what is the 4D analog of a tetrahedron, or an octahedron? I 
reasoned them out by trying to think of what 3D objects I could derive 
starting from a cube.  That is, taking a cube, and cutting away pieces 
of it.  For instance, to do the 14-sided guy, simply take the midpoint 
of each line segment on the cube -- this has the effect of cutting off 
the corners of the cube.  By defining things in this way, it is fairly 
straightforward to extend the objects into four dimensions.  (I was 
happiest to realize how to do a tetrahedron). See the file objects.s for 
more details on the individual objects. Naturally each has some 
similarity to the cube: there is an inner object(e.g. a tetrahedron) and 
an outer.  The two are connected, and each set of connections forms 
another object, so that, for instance, there are tetrahedrons in-between 
the inner and outer tetrahedrons.

Finally, to help in visualizing the objects, I stuck a dotted line 
capability in.  The dotted lines in general connect the "inner" and 
"outer" 3D objects -- turning them off lets you then see the two objects 
interact.  (The third object was mighty impressive-looking before I 
added these guys! :)
 	
@(A): The Code

Now, it is my considered opinion that the code is awfully well 
documented, so there isn't too much to say, but a few general things are 
worth mentioning.

"Growing" the points is really easy -- simply start each coordinate at 
zero, and gradually increase it out to its final value.  By doing this 
first with the x-coordinates, then the y-coords, then z, then w, the 
cube grows a dimension at each step.  I don't do anything fancy with the 
other objects -- all coordinates are grown equally, so the objects grow 
outwards from the origin (as opposed to some sort of zoom effect).

Each 4D character is a 12x12 character grid, which gives a 96x96 pixel 
drawing area, and takes up the first 144 characters.  Each 3D character 
uses a 5x5 character grid, giving 40x40, and taking up the next 4*25=100 
characters, for a total of 244 so far.  In eight of the remaining 12 
characters are four patterns and their EOR #$FF complements, which are 
used in the background tilings and are used indirectly in the pattern 
fills.

Since the final x-y coordinates can range from -48..48, this places a 
restriction on the initial values for the coordinates.  For purposes of 
accuracy and such coordinates must of course be scaled, so that while a 
coordinate like (1,1,1,1) is convenient for thinking, a coordinate like 
(16,16,16,16) is much better suited to the implementation -- that is, 
the original coordinate scaled by a factor of sixteen or so.  The table 
range restricts this scaling factor: the 4D coordinate with largest 
length that I use is (1,1,1,1), which has length 2.  Thus, after 
rotation, it is possible that it will lie on an axis with coordinate, 
say (2,0,0,0).  Since coordinates must not exceed 48 in the 
implementation, this suggests a scaling factor of 24.

As a practical point, the points never really hit this maximum, so in 
principle a larger scaling factor could be used. Alternatively the 
projection routine can pick up the slack, which is what dim4 uses.

The first smart thing I did was to ditch the old method of computing 
rotations.  Instead of calculating a big rotation matrix, I calculate 
some big tables of f_x (s) = x*sin(s), and let the angle s range from 
0..127.  To get a table of cos(s) I simply periodically extend the sine 
table by copying the first 32 bytes of the table into the 128-159 
positions -- cos(s) is thus sin(s+32). (I take advantage of the fact 
that sin(s) and cos(s) are related by a factor of pi/2.  Were I smart I 
would have taken advantage of the reflection symmetry of sin/cos, and 
saved another 64 bytes.  Oh well.)

This then leaves 96 bytes for a projection table, which is just what I 
need for the 4D object.  Thus I can mash tables of x*sin(s), x*cos(s), 
and my projection table of f_x(z)=d*(z-z0) * x into a single page.  This 
page is then extended from $6000 to $C000, i.e. giving 96 tables, for a 
total of 24k.  Accessing the tables is now trivial: store x+$60 in the 
high byte of a zero page pointer, the low byte contains the offset into 
the table (0 for the sine table, 32 for the cosine table, and 160 for 
the projection table), and do an LDA (ZP),Y to get the right value.

Thus rotations and projections are now very fast and very compact.  Note 
that it isn't really necessary to generate a complete table of sines and 
cosines.  For instance, 12k of tables (or 6k or whatever) could be used, 
and the final result simply multiplied by two, or four.  Even though the 
final coordinates might range from -48..48, calculations don't need to 
be done using the full range.

The line routine is the good 'ol chunky line routine from the last 
cube3d program.  It of course had to be modified to work with the two 
buffers and such. I removed a bunch of really redundant code that was in 
there (REALLY redundant), especially in the actual drawing part (macros 
XSTEP and YSTEP -- lines are commented out with a '*'). I also added a 
dotted-line capability (it only takes a few extra instructions), to make 
things easier to see.

Only a single 3D object is actually drawn -- the others are generated 
via symmetry (reflections through x=0 and y=0).  Since the 3D objects 
are drawn on a much smaller grid, they need to be scaled down a bit.  
Instead of writing separate routines to deal with the 3D and 4D objects, 
I simply set the 4D coordinate of each point in the 3D object to some 
appropriate number.  Recall that in a 3D projection, the farther away 
from you the object is, the smaller it gets.  This is the same idea -- 
the object is pushed down the 4D axis, and this has the effect of 
shrinking the object upon projection.

You may have noticed that the 3D objects tend to avoid the center of the 
screen -- this is a consequence of the random number generator I coded 
up (and did not test for spectral properties or anything like that :).  
Originally I was going to place things in a random row and column, but 
then things just clumped along a diagonal line :).  I will also say that 
the SPLAT routine caused me many days of headaches -- whose idea was it 
to put color memory so close to a CIA? :)

One thing I had to prune out was a routine which draws circles as the 
sine/cosine tables are being set up.  It is kind of neat and gave me 
something to watch while the code was setting up, and also was a check 
that the trig tables were being set up correctly.  Anyway, all it does 
is to draw concentric circles of progressively larger radii, for a sort 
of tunnelish-looking thing I suppose.

There is a little "failsafe" in the projection routine.  If coordinates 
are out of range (greater than 96 or 40) after projection, they are set 
to the origin.  At least one of the objects screws up from time to time 
(the octahedron is the main culprit I think), and I think what happens 
is that the line routine thinks it needs to draw a lot more points than 
it really needs to.  So it happily moves along sticking bytes into the 
trig/projection tables, and even makes its way up to VIC, SID and the 
CIAs!  Once, it actually started pegging the SID volume register or 
something, because there would be a periodic loud ticking from the 
speaker.  Eventually the code just grinds to a halt or else completely 
hoses the system -- hence, the failsafe :).

Finally, the very first lines of the code redirect the BASIC vector at 
$0302/$0303 and JMPs to the NMI RS/RESTORE routine (although a BRK would 
probably have sufficed).  This is the only way I could get the code to 
work with the cruncher -- without it, the program goes into "IRQ lock".  
Crossbow of Crest suggested that ABCruncher does not put a CLI at the 
end of its crunching routine, and that this can cause problems, most 
notably with the CIAs.

It took 10-15 hours to get things to crunch and work correctly. In 
hindsight, I can think of a bunch of things that could have been easily 
done to make it work, but at the time I was sure relieved when it 
finally got down to 4095 bytes.  Moral: A little thinking early on saves 
massive time and effort down the road.
 
@(A): The Music

Finally, a word about the music.  Originally I was going to construct a 
series of chords which I could modulate between in a fairly flexible 
way.  I was then going to break up the chords in a nice way and move 
between them randomly.  But then it occurred to me that I already knew a 
piece of music which was a series of broken chords and sounded 
infinitely more cool than anything I was going to accidentally write, so 
I used it instead.  Even better, they are four-note "chords", broken 
into four groups of four notes each -- too good to pass up.  Notes are 
looked up in a frequency table, thus on my PAL 64 the music gets 
transposed to a different key (in addition to playing at the wrong speed 
:).

I do not necessarily recommend using the routine as a model for doing 
IRQ interrupts -- I had many problems with "IRQ lock", where an IRQ is 
continuously latched, and consequently is constantly running the 
routine.  I still do not understand what is happening, nor do I have a 
solution.

@(A): Memory Map

   $0F00-$0FFF   Starting sine+projection table
   $1000-$2257   Code
   $3000-$4000   Character set
   $6000-$C0FF   Sine, cosine, and projection tables
   $C100-$CFFF   Misc. variables and tables
	      
@(A): Contents of dim4.lnx

Note: the code is available in this issue of Commodore Hacking
(Reference: code, SubRef: democode), on the Commodore Hacking MAILSERV
server (Reference: code), and at http://www.msen.com/~brain/pub/dim4.lnx
		   
   dim4             Submitted entry for 4k demo contest
   dim4.text        This file, in PETSCII format
   dim4readme-runme Obvious
   dim4.names       Linker name file to use with Merlin 128 
   main4.s          Main code for dim4
   objects.s        Code to define/set up objects
   graphics.s       Various graphics routines (lines, fills, etc.)
   music.s          Init and main IRQ music routine
   
============================================================================

Exploiting the 65C816S CPU

by Jim Brain (j.brain@ieee.org) 
 
@(A): Introduction 
 
For a CPU architecture that can trace its roots to the mid 1970's, the  
65XX line has proved very successful.  Finding its way into flagship 
systems such as Commodore, Apple, Atari, and other lesser known units, 
the CPU has toiled away for years in the single digit megahertz speeds.   
Programmers across the world have analyzed the CPU to death and  
documented every last one of its "undocumented" opcodes.  Ask a "coder", 
and he or she will rattle off the cycles it takes to do an immediate 
load or an absolute store.  In short, the CPU is road tested and well 
known.   
 
However, how much do you know about its "children"?  Yes, in the 1980's, 
while Commodore was busy tinkering with the NMOS version of the CPU 
designed by Chuck Peddle, Bill Mensch, and the ex-Motorola 6800 design 
crew, Bill Mensch started a new company, Western Design Center, and 
redesigned the 6502 to use the newer and faster CMOS fabrication 
process.  In addition to the new 65C02, Mensch designed an upwardly 
compatible 16 bit brother, the 65C816.  Although both were offered to 
Commodore, only the 65C02 was used and only in the never produced CBM 
Laptop computer.  Apple, however, used the 'C02 in later models of the 
Apple II line and placed the 65C816 at the heart of the Apple IIGS 
system. 
 
Although Commodore never took advantage of the WDC CPUs, third party 
products have offered their speeds to the Commodore community.  Early 
models like the TurboMaster and TurboProcess offered 4 MHz speeds to the 
Commodore 64 owner, while newer products like the FLASH8 offered 8 MHz 
speeds.  The fastest offering thus far is the CMD SuperCPU, offering 
speeds of 20 MHz to the Commodore owner.  Of these, the TurboProcess, 
the FLASH8, and the CMD SuperCPU all use the 16 bit CPU, the 'C816. 
 
Since the 'C816 is available now to the Commodore user, and with the 
SuperCPU poised to provide software compatibility never before achieved, 
it is likely that more and more Commodore applications will run on 'C816 
equipped machines.  So, why should the Commodore software developer 
care?  Sure, the 65C816 will run 6502 based applications in 6502 
emulation mode at substantial speed increases, so developers can opt to 
continue writing 6502 based applications.  While I encourage developers 
to always provide 6502 based versions of applications when possible,  
there are useful features available only in the Native mode of the 
65C816.  This article describes some of these features and how to 
utilize them. 
 
@(A): Disclaimer 
 
The following information is based on following resources: 
 
o  Data Sheets on the 65C816S, Western Design Center 
o  _Programming the 65816_, by David Eyes and Ron Lichty, 1985, Western 
   Design Center. 
o  A beta version of the SuperCPU 20 MHz accelerator from CMD. 
o  A beta version of the Super Assembler (SAS) 65C816 Assembler, by Jim 
   Brain, Distributed by CMD. 
 
Most of the following information is system independent, but any 
information specific to the CMD SuperCPU is preliminary and subject to 
change. 
 
It is not the intention of this article to detail all the possible 
65C816S opcodes nor their addressing modes.  It is also not the 
intention of the article to describe the operation of the SAS assembler.  
For more information on both of these products, please consult the 
manuals listed above. 
 
@(A): Diving Right In 
 
As this article is geared toward the programmer, we're going to 
dive right into the new features.  Commodore World issue #12 has an 
overview of the CPU for those just arriving on the scene.  For those who 
know an index register from an accumulator, read on 
 
@(A): Overview of Registers 
 
One of the features of operating in Native mode of the CPU is the 
enhanced set of registers available to the programmer.  They are also 
key to explaining the other features of the CPU.  So, let us go over the 
new register set: 
 
        8 bits                   8 bits                  8 bits 
------------------------------------------------------------------------ 
[  Data Bank Register   ][   X Register High    ][   X Register Low*   ] 
[  Data Bank Register   ][   Y Register High    ][   Y Register Low*   ] 
[          00           ][ Stack Register High  ][ Stack Register Low* ] 
                         [   Accumulator High   ][   Accumulator Low*  ] 
[ Program Bank Register ][ Program Counter High*][ Program Counter Low*] 
[          00           ][ Direct Register High ][ Direct Register Low ] 
------------------------------------------------------------------------ 
 
* Original NMOS 65XX register set
 
These registers are referred to in the remainder of the article by their 
acronyms, as follows: 
 
Data Bank Register    (DBR) 
Program Bank Register (PBR) 
X Register High       (XH) 
X Register Low        (XL) 
Stack Register High   (SH) 
Stack Register Low    (SL) 
Y Register High       (YH) 
Y Register Low        (YL) 
Accumulator High      (B) 
Accumulator Low       (A) 
Program Counter High  (PCH) 
Program Counter Low   (PCL) 
Direct Register High  (DH) 
Direct Register Low   (DL) 
 
In addition, the 16 bit combination of B:A is called C, the 16 bit X and 
Y registers are called simply X and Y, the 16 bit Direct Register is 
called simply D, and the 16 bit Stack Register is called S. 
 
One more register requires discussion before we can delve into 
programming the '816: the Status Register (P) 
 
Bit:	Description 
  
7     N flag 
6     V flag 
5     1 in Emulation mode 
      M flag in Native mode (memory select bit) 
         0 = 16 bit accumulator 
         1 = 8 bit accumulator 
4     B flag in Emulation mode 
      X flag in Native mode (Index Register Select) 
         0 = 16 bit X and Y registers 
         1 = 8 bit X and Y registers 
3     D flag 
2     I Flag 
1     Z flag 
0     C flag 
      E flag (Emulation flag)  (Can not be accessed directly) 
         0 = Native mode 
         1 = Emulation mode 
 
It is important to note that there are 3 more flags available in the 
Native mode version of the status register.  Since there were 7 flags 
used before, how did WDC squeeze in the extra flags?  Well, the E flag 
cannot be accessed or seen in the status register.  The only way to 
change it is to set up the C flag to the intended stats of the E flag 
and issue the eXchange Carry and Emulation flags (XCE) opcode.  Another 
flag, M, takes the place of the static 1 state in the old status 
register.  M controls the length of the accumulator.  The last flag, the 
X flag, controls the length of both index registers.  Note that this 
flag takes the place of the B flag.  Thus, the B flag is unavailable in 
Native mode.  Since the B flag is used to determine whether a hardware 
IRQ or a software BRK opcode caused an IRQ interrupt, the Native mode 
provides separate interrupt vectors for BRK and hardware IRQs. 
 
The X and M flags are especially important in Native mode, so much so 
that each programmer will become intimately familiar with these flags.  
When a register is selected to be 8 bits wide, it emulates the operation 
of the register in Emulation mode.  However, when the register is 
flipped into 16 bit operation, its length doubles everywhere.  For 
instance, a push of the accumulator with the M flag reset causes 2 bytes 
to appear on the stack. Likewise, an immediate load of the accumulator 
will require a 3 byte instruction: one for the opcode, and a 2 byte 
operand.  This opens up one of the nastiest gothcas on the chip, but 
we'll detail this later in the article. 
 
@(A): More Memory 
 
As you may be aware, the Native mode of the '816 allows the programmer 
contiguous access to up to 16 megabytes of RAM.  This access doesn't 
involve tricks such as DMA, page flipping, or RAM "windows".  At any 
given point in time, an application can access a memory location and 
request a memory location more than 64 kB higher in the next 
instruction.  In order to access the new memory locations using standard 
6502 addressing modes, the new DBR and PBR registers have been added. 
The PBR serves as the 3rd byte of the PC, allowing code to run at any 
location in memory.  The DBR register functions as the 3rd byte for 
memory accesses in addressing modes like absolute mode.  Of course, 
there are restrictions, like the inability to execute code that crosses 
a 64kB boundary, but these restrictions can be overcome, as you'll see 
below.   
 
For clarity, we will refer to the 3rd bytes of an address as the "bank", 
and refer to the 2 lowest bytes of an address as the offset.  Alternate 
names include "segment" and offset, but that naming scheme was 
previously used with the Intel 80X86 CPU line and carries with it many 
bad connotations. 
 
Since memory addresses can now be 3 bytes wide and contain 6 hexadecimal 
digits, an obvious representation would be $xxxxxx.  However, many '816 
references write the address as a two part quantity, with the bank 
register and the 16 bit offset separated by a colon, ":".  Therefore, 
$xxyyyy and $xx:yyyy are equivalent.  In this article, the former 
notation is used for emphasis and because ":" notation also brings up 
bad connotations from Intel 80X86 CPU line. 
 
@(A): Increased Stack 
 
As the S register is now 16 bits wide, the stack can now reside in all 
of bank 0, giving the programmer 64 kB of stack area.  As well, the S 
register can be set to any location in bank 0.  This allows one to start 
stack from any non-aligned page in bank 0. 
 
@(A): Enhancements to Old Addressing Modes 
 
Even though the '816 supports the traditional 14 addressing modes of the 
6502, it extends some of them to handle the extra features in the '816.  
Note that the opcodes and parameters have not changed for these 
addressing modes; rather the way the CPU treats them differs slightly.  
Of special note is the term "zero-page", which has been expanded into 
"Direct Mode".  Let's take a look at what changes you can expect. 
 
@(A): Absolute Modes 
 
In the 65XX CPU, modes such as absolute and its indexed siblings each 
could access a memory location in the 64 kB memory map.  In the '816, 
these modes are now capable of accessing memory above and beyond 64 kB.  
When accessing memory, the DBR register is prepended to the address 
being accessed, thus forming a 24 bit effective address.  When 
transferring control, the PBR register is prepended.  Thus, if the DBR 
contains a $05, the following: 
 
   af ff ff     lda $ffff 
 
would load a value into the .A register from $05ffff.  If the M flag is 
set to 16 bit mode, the 16 bit value in $05ffff and $060000 will be 
loaded.  If the M flag is set to 8 bit, only $05ffff will be loaded.  
Notice that this example also shows "temporary-bank-incrementing".  
While loading a 16 bit value with the instruction above, the DBR is 
"temporarily" incremented to allow access of data from bank $06.  The 
actual DBR is left unchanged, so the next instruction will find the DBR 
back at $05. 
 
You'll rarely see such bank changes when accessing data as above, but it 
is common when using indexing modes.  With the DBR at $05, executing: 
 
   a2 ff ff     ldx #$ffff 
   bd ff ff     lda $ffff,x 
 
will load values from $06fffe and possibly $06ffff, depending on the 
size of the accumulator.   
 
When using absolute mode on opcodes like JMP and JSR, the PBR register 
is used to form the 24 bit effective address.  Unlike the DBR, the PBR 
does not exhibit "temporary-bank-incrementing".  It simply rolls over 
within the same bank.  Keep that in mind. 
 
@(A): Direct Modes 
 
To enhance the capabilities of the '816, the CPU offers Direct Mode, 
which is a superset of "zero-page mode".  Basically, all z-page opcode 
operands are added to the D register to form a 16 bit effective address.  
This allows using the entire bank 0 as effective z-page memory.  With 
the D register set to $0200, executing: 
 
   a5 10        lda $10 
 
would load the accumulator from $000210 (and possibly $0211).  Direct 
mode is not allowed to increment into bank 1.  If the above instruction 
is executed while D = $ffff, the accumulator would start accessing data 
from $000009.  This highlights an important yet subtle change.  No 
longer is lda $10 guaranteed to access data from $000010.  It will 
access data from D + $10. 
 
Indexing changes little with respect to Direct mode.  After the D 
register is added to the 8-bit offset, the appropriate register is 
added, and the effective address is normalized to fall within bank 0.  
There is no way to reference outside bank 0 in Direct mode.  Even if 
index registers are set to 16 bit mode and hold $ffff, the instruction 
will access bank 0. 
 
@(A): Direct Indexed Indirect Mode 
 
Most programmers forget, but this mode executes in two parts.  Now, it 
becomes important.  In the first part, the 8-bit offset is added to the 
D register and then the X register.  The result is normalized to 16 
bits, and two values are accessed from bank 0.  The second part takes 
those two bytes as the effective address, and PREPENDS the DBR register 
to form a final address.  In this way, you can access memory outside 
bank 0 with this mode, but you must store the address to access in bank 
0.  Read that sentence again. 
 
@(A): Direct Indirect Indexed Mode 
 
Like its relation above, this mode work in two parts.  In part 1, the 8 
bit offset is added to the D register and normalized to 16 bits.  Two 
bytes are accessed from bank 0, and then the 16 bit value returned is 
appended to the DBR to form a 24 bit effective address.  In part 2, the 
Y register is added to this effective address to form the final address 
for access.  As above, part 1 cannot access outside bank 0, but part 2 
can. 
 
@(A): Stack Mode (Implied) 
 
Usually lumped in with the Implied addressing mode by most 6502 
developers, stack mode has changed to accommodate the new widths of the 
registers.  Depending on the width of the register, stack operations 
will push and pull either 1 or 2 bytes.  This can cause problems if you 
push a 16 bit register and try to pull it off as an 8-bit register.  
Caveat Emptor. 
 
@(A): Immediate Mode 
 
In Emulation mode, immediate mode was simple.  You specified an 8 bit 
immediate value to be loaded into a register.  In Native mode, however, 
registers can be 16 bits.  Everyone knows the opcode can do an immediate 
8-bit load, but what opcode performs a 16-bit immediate load?  Answer: 
the same opcode!  If the register is set to 8 bits via the X or M flags, 
the immediate load on that register will pull in 8-bits.  If the 
register is set to 16 bits, the instruction will load a 16 bit value.  
The effects of this change are monumental.  An 8-bit immediate load 
requires 2 bytes, while a 16 bit load requires 3.   
 
This presents some problems.  Since neither the opcode nor the mnemonic 
differs between the two forms, the assembler cannot tell which form is 
required from context.  The develop must tell the assembler which form 
to use by use of assembler directives.  However, this doesn't guarantee 
success.  The developer must ensure that the flags are set correctly 
before executing an immediate load of any register.  Improper settings 
will either cause the instruction to pull the next opcode into the high 
byte of the register or treat the high byte of the intended register 
value to be executed as an opcode.  In my biased opinion, this is 
severely shortsighted.  I would rank this as the number one bug that 
'816 developers will face.  However, simple macros employed in your 
assembler can help minimize this problem. 
 
@(A): New Addressing Modes			 	  			
	 
 
The 816 can utilize all 14 original addressing modes of the 65XX line, 
and adds 10 more for a total of 24.  The new addressing modes are as 
follows:	  
 
*  Absolute Long                     al 
*  Absolute Long Indexed             al,x 
*  Absolute Indirect                 (a) 
*  Absolute Indexed Indirect         (a,x) 
*  Direct Indirect Long              [d] 
*  Direct Indirect Long Indexed      [d],y 
*  Stack Relative                    d,s 
*  Stack Relative Indirect Indexed   (d,x),y 
*  Relative Long                     rl 
*  Block Move                        xyc 
 
Let's take each under consideration: 
 
@(A): Absolute Long Mode, Absolute Long Indexed Mode 
 
These modes allow a programmer to access a fully qualified memory 
location without using the DBR.  The benefits include pulling data from 
one bank to store in another without constantly changing the DBR.  The 
disadvantages include the extra size of the instruction.  The long forms 
of these two absolute modes takes an extra byte in memory and an extra 
cycle to load into the CPU.  Note that only the X register is supported 
as an index register for absolute long indexed mode. 
 
@(A): Absolute Indirect Mode 
 
This mode, denoted as (a), functions similar to (d), but does not 
require the D register.  The locations in bank 0 specified as the 
operand in this mode are accessed, and the results form the lower 16 
bits of the effective address.  The PBR is prepended to this address to 
form a final 24 bit address.  The PBR is used since only the JMP opcode 
uses this mode. 
 
@(A): Absolute Indexed Indirect Mode 
 
This mode, denoted as (a,x), functions similar to (d,x), but the D 
register is not involved.  Thus, as with the (a) mode above, these modes 
are to direct modes as absolute long modes are to absolute modes. 
 
@(A): Direct Indirect Long Mode 
 
This mode functions similar to Direct Indirect Mode, except that in part 
2, all three address bytes are pulled from memory.  The DBR and PBR are 
not involved, but the D register is used.  If locations $10 - $12 
contained $10, $11, $12, and the D register contained #08, then: 
 
    a7 08       lda [$08] 
 
would load the accumulator with data starting at $121110.  Do you see 
how that works?  The D register is added to $08, and the result ($10) is 
accessed to fetch the 24 bit memory address, in low byte order.   
 
@(A): Direct Indirect Long Indexed Mode 
 
As Direct Indirect Indexed Mode extends Direct Indirect Mode, this mode 
extends the above mode by adding the Y register to the effective address 
pulled from bank 0.  Note that even though this mode uses a fully 
qualified 24 bit address (no DBR or PBR involved), it can still 
increment into the next bank to access memory.  Thus if we use the above 
example, and Y = $ffff, executing: 
 
    b7 08       lda [$08],y 
 
will fetch the accumulator starting at ($121110 + $ffff, or $131109). 
 
@(A): Stack Relative Mode 
 
Denoted as "d,s", this mode is completely new to 6502 programmers.  It 
starts off the set of modes that work with the S register (Stack 
Pointer).  As the Stack Pointer is now 16 bits in width, the stack can 
fill all of bank 0.  Although 65XX programmers have traditionally used 
stack locations only for saving return addresses from JSR and interrupt 
sources, the '816 allows one to store data on the stack.  In this mode, 
the 8 bit operand is added to the S register and normalized to 16 bits.  
Memory in bank zero is accessed starting at this effective address. 
Since the S register points to the next location to hold data, 
executing: 
 
   a3 00        lda $00,s 
 
would prove meaningless, unless you wanted to get the last byte pulled 
off the stack.  This mode allows one to access the last 255 bytes off 
the stack in the order they would be pulled off.   
 
@(A): Stack Relative Indirect Indexed Mode 
 
By far the most complex Addressing Mode to understand in the '816, this 
mode can be used to access data referenced by pointer values on the 
stack.  Denoted as "(d,s),y", the effective address formed by the 8 bit 
operand and the S register is normalized to 16 bits and 2 bytes are 
accessed.  The resulting 16 bits are appended to the DBR register and 
the 24 bit effective address is added to the Y register to form a final 
24 bit memory address.  This can be used to access data passed by 
"reference" (not the value, but the pointer to the value, is stored in 
the stack). 
 
@(A): Relative Long 
 
Only one opcode uses this addressing mode, Branch Long (BRL), and it 
fulfills the desire of every 65XX programmer to have a relocatable jump 
instruction.  Unlike normal branches, BRL can cross page boundaries.  
However, BRL is constrained to the current bank.  It cannot cross banks.  
Although viewed as a disadvantage, this presents a few possibilities.  
If a programmer was at $xxff00 and wanted to jump to $xx0000, he or she 
can use BRL, even though the offset appears wider than $32767, the 
maximum offset for BRL.  In actuality, the assembler computes a branch 
to the next bank, which is only 256 bytes away.  The CPU negates the 
bank increment, thus forcing execution to begin at the current bank. 
 
@(A): Block Move 
 
Along with stack relative indirect indexed mode, this mode is complex.  
However, unlike its stack counterpart, this complex mode is easier to 
understand.  Denoted as xyc, this mode allows the programmer to quickly 
move areas of memory from one bank to another.  An example will prove 
helpful: 
 
   a2 00 20     ldx #2000 
   a0 00 30     ldy $3000 
   a9 ff 0f     lda $0fff 
   44 02 01     mvn $01,$02 
 
Basically, we are moving $1000 bytes from $012000 to $123000.  The X 
register holds the offset into the source bank; the Y register holds the 
offset into the destination bank.  The accumulator holds the number of 
bytes to move MINUS 1.  Remember that.  The opcode Move Negative (MVN) 
takes the source bank and the destination bank as operands.  The only 
opcodes that utilize this mode are MVN and Move Positive (MVP).  MVP 
assumes the X and Y registers hold the top of the data areas to move, 
while MVN assumes the opposite.   
 
@(A): Hints And Tips That Will Decrease Your Stress 
 
Writing Machine language applications on any platform is bound to create 
stress in your life, but this section is presented to make the 
programmer aware of some "gotchas" in the '816.  Here goes. 
 
@(A): Initialization 
 
To switch the processor from emulation mode into native mode, perform 
the XCE (eXchange Carry with Emulation) mnemonic with the carry bit 
reset: 
 
   18           clc 
   fb           xce 
 
The next thing to do is determine the initial size of your registers. 
The 816 can use any register as 8 bits or 16 bits.  By default, the 
registers are 8 bit, but just to make sure: 
 
   c2 30        rep #%00110000	; set index and acc to 8 bit 
 
By stuffing $30 into the processor status, we are setting both the X and 
M flags to 8 bit.   
 
At this point, it should become obvious that if the programmer wishes 
to flip between 8 and 16 bit modes many times, macros need be employed 
to do this quickly and painlessly. 
 
Now, the development can begin.   
 
@(A): Register Usage 
 
Never underestimate the power of immediate mode to mess your program up.  
If at all possible, switch to one size of registers and stay that way.  
If that can't be accomplished, thoroughly document where you changed the 
size of either set of registers.  Remember, the assembler cannot trace 
program execution, so don't assume the assembler will fix everything up 
for you.  On the preliminary version of the SAS assembler, the opcodes 
to instruct the assembler to alter immediate mode behavior are: 
 
   .inl   ; INdex registers Long 
   .ins   ; INdex registers Short 
   .acl   ; ACcumulator Long 
   .ins   ; ACcumulator Short 
 
What happens when you change a register's size?  Well, let's treat the 
index registers and the accumulator separately.  When changing from 8 to 
16 bits, the index registers are simply extended by padding with zero.  
When the index registers are changed from 16 bit to 8 bit, the high byte 
of each index register is lost and forced to zero.  On the other hand, 
the accumulator is actually made up of two 8 bit registers.  When 
changing from 8 to 16 bit, the accumulator's high byte becomes the value 
in the hidden B register.  When moving from 16 to 8 bit, the high byte 
of the accumulator is forced to zero, but the B register is left intact.  
Thus, changing from 8 to 16 bit and back to 8 bit won't affect the 
accumulator, but it will force the high bytes of the index registers to 
zero. 
 
When using the MVN and MVP opcodes, the size of the index registers make 
a difference.  If set to 8 bits, one can only transfer memory from page 
0 of any bank.  However, unlike the index registers, MVN and MVP treats 
the Accumulator as 16 bits wide, regardless of the state of the M flag. 
 
Also, what length the registers are set to determines how many bytes are 
pulled or pushed during register to stack operations.  Remember that 
when pushing from one location and pulling in another. 
 
To execute emulation mode code in Native mode, simply set all registers 
to 8 bit widths, load the D register with 0, and load the stack with 
$01ff.  By manipulating the DBR and PBR, you can execute up to 256 
emulation mode programs, while at the same time using this method. 
 
In the '816, there is no need to use a register to zero out memory.  The 
"stz" opcode can be used in the same manner as "sta" to zero out memory.  
Note that, like "sta", stz will store a single or double byte 0 
depending on the state of the M flag. 
 
Remember that, when the accumulator is set to 16 bits, the BIT 
instruction no longer copies bits 6 and 7 to flags in the P register, 
but bits 15 and 14. 
 
@(A): Timing 
 
Beware of absolute long addressing.  It takes 1 more byte and 1 more 
cycle to utilize.  Use it sparingly. 
 
In Native mode, there is no penalty for crossing a page in memory.  This 
should allow some programs to actually run faster in Native mode. 
 
BRL can be used at any location a JMP would be used.  The advantages 
include self-relocatable code, but the disadvantages include an extra 
cycle for execution.   
 
By now, you have noticed that MVN and MVP provide a fast way of moving 
data areas.  However, they can also be used as a fast fill.  Simply 
store the fill pattern into the first address of the memory area, load 
the X register with the start of the fill area.  Load Y with the start 
plus the length of the fill pattern.  Load A with the size of the fill 
area minus the fill pattern size minus 1.  Then, do a mvn h,h, where h 
is the bank you want to fill.  Any size pattern can be used.   
 
@(A): Stack Instructions 
 
Many of the added instructions in the 65816 deal with enhanced stack 
operations.  In addition to the S register and accumulator pushes and 
pulls, you can now programmatically push all the registers except PC 
onto the stack, and pull all but the PBR and PC register off the stack.  
Note that some registers have variable sizes, while others are fixed in 
width.  The breakdown is as follows: 
 
Fixed at 8 bits:   DBR, PBR, P 
Fixed at 16 bits:  D, S, PC 
Variable:          X, Y, A 
 
In addition to using the stack to save and restore data and registers, 
addresses can now be programmatically pushed to and pulled from the 
stack.  The following opcodes are available: 
 
   f4 34 21     pea $1234   ; Push Effective Address 1234 on stack 
   d4 21        pei ($21)   ; Push Effective Indirect Address at D + $21 
                            ; on stack 
   62 e1 7f     per DATA    ; Push Effective Relative Address on stack 
                            ; when executed, the address PC + $7fe1 will 
                            ; be pushed on the stack.  Useful for 
                            ; determining data area locations in 
                            ; relocatable code 
 					  
@(A): Transfer and Exchange Operations 
 
When using the accumulator as an 8 bit register, the special hidden B 
register can be used as a "hidden" register.  Move it into focus with 
the XBA (Exchange B with A) opcode.  Note that this is a swap, not a 
transfer.   
 
Transferring between same size registers in unambiguous.  Transfers 
between different size registers is tricky.  If the accumulator is set 
to 8 bits, only that much can be transferred in, but all 16 bits will be 
transferred out to any 16 bit register, regardless of the state of the M 
flag.  If an index register is set to 8 bits, only that much will be 
transferred in or out. 
 
@(A): Addressing Modes 
 
Beware of Direct Mode.  Any address that can be represented  by a single 
byte will be assembled into Direct Mode.  Sometimes, absolute zero page 
addresses are desired.  Use the "!" directive to force absolute 
addressing. 
 
Beware of Direct Mode II.  Remember that zero-page is no more.  If you 
intend to use z-page as before, remember to set D to $0000. 
 
@(A): Miscellaneous 
 
This article is presented to new CMD SuperCPU programmers.  Whether you 
write SuperCPU applications in Emulation or Native mode, however, you 
will find the following information helpful: 
 
The SuperCPU contains a set of registers to control operation of the 
unit programmatically.  These new registers are located in "mirror" 
locations of the VIC-II (6567/6569) IC.  On a stock system, these 
locations return $ff when read, and writing these locations does not 
affect RAM under the "mirror" locations while I/O is switched in.  These 
locations are considered relatively "safe" and have been chosen to 
contain these important CMD SuperCPU registers: 
 
Location   Purpose 
---------  -------------------------------------------------- 
$D074 (1)  GEOS Optimization (mirror VIC bank 2, $8000-$BFFF) 
$D075 (1)  VIC bank 1 Optimization (mirror $4000-$7FFF) 
$D076 (1)  BASIC Optimization (mirror $0400-$07FF) 
$D077 (1)  No Optimization (Default; mirror all memory) 
 
$D07A (2)  Software Speed Select - Turbo Off (1 MHz) 
$D07B (2)  Software Speed Select - Turbo On (20 MHz) 
 
$D07E (3)  Hardware Register Enable 
$D07F (3)  Hardware Register Disable 
 
Notes: 
(1) Write only, hardware registers must be enabled to access location. 
(2) Write only, may be accessed with hardware registers enabled or 
    disabled, but does not over-ride hardware Speed switch. 
(3) Write only. 
 
The first 4 locations specify how much and what areas of RAM will be 
synchronized between the SuperCPU and on-board RAM images. 
 
These registers have been created using a "sandwich" method that 
minimizes irregular operation due to memory fills.  As such, each 
register has a "shadow" that falls two bytes away from the register 
itself.  During a memory fill, a fill might turn off fast mode by 
writing to $d07a, but any access to $d079 or $d07b will turn fast mode 
back on.  This would cause the machine to operate in the wrong state for 
at most one instruction period.  Only one address of each register is 
documented, as the shadows of each register should not be used for 
program development. 
 
To utilize the above registers, the programmer need simply to write a 
value into the appropriate location.  In the tradition of CMD, it is not 
relevant what value is stored at a location.  Rather, that a memory 
write occurred at that location suffices. 
 
In addition to these outlined registers, there are additional "bit-
mapped" registers in the VIC-II register map that signal the state of 
the SuperCPU hardware and software.  These flags are read only when 
hardware registers are disabled, and read write when the hardware 
registers are enabled.  More information about these flags and their 
locations will be included in the SuperCPU Developer's Guide.  
Programmers should use and modify these flags with extreme caution. 
 
In addition to the above registers, there are two pages of RAM present 
at $d200 and $d300 on the SuperCPU.  Although this memory is present, it 
is dedicated for SuperCPU use and should not be otherwise utilized. 
 
@(A): Conclusion 
 
Well, there you have it.  I am learning something new about this CPU 
every day, and some of these modes still baffle me.  However, I hope 
that each of you takes an interest in developing '816 applications, as 
the possibilities are endless.  Just when you thought you had the 65XX 
line all figured out... 
 
========================================================================= 

Using HTML on the Commodore, Part 1

by Jim Brain (brain@mail.msen.com) 
 
Note:  Due to the recent relocation of myself and my family, I am behind 
on the development of the HTML viewer for the Commodore system.  
Therefore, this article will not focus on the actual viewer.  With the 
development below 50% complete, the modules are subject to change.  
Describing them now would only confuse issues. 
 
@(A): Introduction 
 
HTML.  This simplistic acronym, unknown to most people before 1993, now 
forms the heart of discussions.  Its status is secured, as employers ask 
how much "experience" one has with it, and resumes commonly include it.  
A quick tally in any technical magazine reveals hundreds of references 
to it, and trips to the bookstore yield mountains of titles referring to 
it.   
 
Most Commodore owners have a few questions about this acronym.  First, 
what is it?  Second, why should I care about it?  In this series of 
articles, I will try to answer both questions to your satisfaction. 
 
To answer the first question, let's step back to explain the World Wide 
Web (WWW).  This explanation is not designed to replace more thorough 
treatments of the subject.  In 1991, while working as a researcher at 
the CERN laboratory in Switzerland, Tim Berners-Lee developed a 
hypertext information retrieval system that allowed researchers at the 
lab to design informative online "presentations" of their work.  In each 
presentation, a researcher could reference a document or presentation 
located elsewhere on the lab-wide network of computers.  This reference 
was "live", meaning that a person could select it from the document and 
immediately view the referenced document. Thus, a matrix of related 
documents were created to interconnect the researchers' work. 
 
In an effort to offer the researchers great latitude in presenting their 
works while retaining some standard in layout, Berners-Lee found simple 
ASCII text an inadequate presentation method.  Clearly, a document 
formatting procedure, or "markup language" was needed.  However, 
Berners-Lee found that popular document markup languages did not support 
the concept of referencing, or "linking" between documents in a standard 
and non-proprietary way.  After looking past popular approaches like 
Windows help files, troff, TeX, and Rich Text Format, Berners-Lee found 
a standardized markup language that would support links and provide 
flexibility in creating documents, yet retain some semblance of 
commonality.  The language was the Standard Generalized Markup Language 
(SGML). 
 
SGML in itself was derived from an IBM specific markup language called 
Generalized Markup Language (GML).  After some minor changes, the IBM 
GML specification became standardized.  SGML, though, represents more 
than a simple formatting schema.  SGML allows one to create multiple 
derived markup languages off the SGML base, and a suitable program can 
interpret each derived language independently.  Thus, HTML functions as 
a derivation of SGML. 
 
Berners-Lee created the original specification for HTML while working on 
the WWW framework.   Since mid 1993, when the first graphical HTML 
viewer arrived from the University of Illinois, the HTML specification 
has been revised and updated at least 4 times, but remains an SGML 
derived language. 
 
@(A): The Basics of HTML 
 
HTML, like most formatting or document markup languages, allows the 
document creator to insert special labels, or "tags" into the document, 
which the language processor can parse.  The language processor then 
converts these tags into the special formatting options they represent.  
In a simplistic markup language, one might place an asterisk "*" next to 
any word to be highlighted.  As the "marked up" document is read and 
parse by the language processor, the resulting output would highlight 
each word preceded by an asterisk.  The asterisk itself would be 
stripped from the resulting display, as it does not form part of the 
document itself.  In much the same way, HTML allows creators to insert 
HTML tags into the document being formatted.  An HTML display system 
(commonly called an HTML viewer if the document is local or an HTML 
browser if the document can be accessed from a remote location) then 
parses the tags and renders the presentation of the document on a 
suitable display. 
 
HTML tags come in pairs.  For each "open" tag, there is a corresponding 
"close" tag.  All tags are simple ASCII words or letters preceded by a 
less-than "<" character, and followed by a greater-than ">" character.  
A simple tag is "HTML", which tells the browser that the document to 
follow is marked up in HTML.  This tag takes the form: 
 
<HTML> 
 
Since tags are not case sensitive, <html> can be used as well.  This tag 
is the HTML open tag, and it has a corresponding close tag.  In HTML, a 
close tag is formed by inserting a slash "/" character after the less-
than character and before the tag name.  Thus, </HTML> would form the 
close HTML tag. 
 
Some tags require optional information.  This information is included 
after the tag name and before the greater-than character.  Such tags 
include IMG, which instructs the HTML display system to load and display 
a graphics element at the present location.  Since the location and name 
of the graphics element is needed, it is included as an "attribute" in 
the tag.  To display a photo called jim.gif, I would include: 
 
<IMG SRC=jim.gif> 
 
in my document.  Notice the space between the tag name and the attribute 
name.  That space is necessary. 
 
IMG does indeed have a corresponding close tag, but since IMG doesn't 
turn something on that must be turned off, the closing tag is seldom 
used.  That forms the basis for using closing tags.  Opening tags that 
"turn-on" a formatting style require closing tags.  For opening tags 
that do not "turn-on" a formatting style, closing them off is optional.  
Of course, exceptions exist, but you'll rarely go wrong marking up with 
this rule in mind. 
 
@(A):  The BASIC HTML Tags 
 
The following tags are considered basic since they implement either the 
essential or often used formatting options available in HTML.  Each 
opening tag is listed in its HTML form, and a description of the tag is 
given: 
 
Tag       Description 
------------------------------------------------------------------------ 
<html>    begins an HTML document 
<head>    specifies the heading information (title, etc.) 
<body>    specifies the body of the document (information) 
<p>       Inserts a paragraph.   
<hX>      Renders the following text in heading size X.  1 <= X <= 6. 
          H1 is largest, while H6 is smallest 
<br>      Line break 
<title>   Specifies the title of the document 
<hr>      horizontal rule (line across document) 
<strong>  Emphasize text strongly (typically rendered as bold text) 
<em>      Emphasize text (typically rendered as italics) 
 
Remember, this is but a few of the possible tags. 
 
@(A): Creating an HTML Document 
 
In HTML, HTML documents are referred to as "pages", and each page is 
constructed as a simple ASCII or ISO 8859-1 (superset of ASCII) text 
file. No preprocessing is necessary.  This makes creating documents as 
easy as editing a text document.  HTML files are typically given the 
file extension ".html", and IBM PC computers running MS-DOS typically 
shorten this to ".htm" due to DOS limitations.  However, the former 
extension is most correct.  Although fancy HTML generation applications 
exist, most people on all platforms simply create pages using a text 
editor.  Since Commodore owners can usually find a text editor, 
Commodore enthusiasts can create pages just as easily as anyone.  
Additionally, the WWW and HTML encourage writers to create small pages, 
and break up large documents into linked pages of smaller sizes.  
Typically, HTML documents are less than 10 kilobytes in length.  At that 
size, even an expanded VIC-20 can create full size HTML pages. 
 
Let's create our first document.  Edit a file called template.html and 
place the following text inside it: 
 
<html> 
<head> 
<title>This is an HTML title</title> 
</head> 
<body> 
<h1>This is an example of Heading 1</h1> 
This is a paragraph. 
<p> 
This is another paragraph. 
I want you to see this next sentence.  <strong>Therefore, I am strongly 
emphasizing it</strong>. 
Now we are back to normal. 
This sentence is below the last in the source, but will appear following 
it when displayed. 
</body> 
</html> 
 
Notice which tags require closing.  Also, notice how <HEAD> and <BODY> 
are used in the document.  Notice the two final sentences in the above 
example.  The sentences appear on different lines in the document, but 
HTML specifies that all carriage returns will be translated into spaces.  
It further specifies that if multiple spaces exist in a file, they will 
be reduced to a single space.  Thus, using spaces as alignment helps 
will not work in HTML.  Likewise, using linefeeds and carriage returns 
to specify alignment will also fail.  If a new line is necessary, use 
<p>, which will leave a blank line, or <br>, which start a new line. 
 
@(A): What's in it for Commodore Enthusiasts? 
 
This is an interesting question, and I hope you agree with my answer.  
Many claim that HTML is useless to the Commodore owner since the 
Commodore can't display HTML.  While I am not even sure that is true, 
(I've heard of simple HTML viewer programs for the 128), it doesn't 
matter.  Commodore owners who access the Internet from a "shell" account 
can access the World Wide Web via the "Lynx" text browser.  Since the 
WWW is constructed of HTML pages, those Commodore owners can indeed view 
HTML files while online.  Many Commodore enthusiasts possess useful 
information.  Putting that information on the Internet via HTML and WWW 
makes it widely available to other Commodore and non-Commodore computer 
owners.  Why worry about the latter?  You'd be surprised how many former 
Commodore owners are coming back into the fold after viewing some 
Commodore HTML pages.  The information on those pages triggers fond 
memories.  Many fire off messages inquiring about purchasing a new or 
used CBM machine after seeing these pages. 
 
To the naysayers, I submit that there is nothing PC-centric in the HTML 
standard.  If an HTML viewer doesn't yet exist, it has nothing to do 
with the computer system.   As HTML was created to allow successful 
operation over many different computer systems and graphics 
capabilities, HTML encourages usage on computer systems like the 
Commodore, where there are limitations in display size and resolution.   
 
In fact, the Commodore community should embrace HTML as a markup 
language, for it represents a standard way to effectively mark up 
documentation for viewing on a variety of computer systems.  Using HTML 
opens up a whole set of possibilities for easily created, standardized 
documentation publication. 
 
Disk magazines, like _LOADSTAR_, _DRIVEN_, _VISION_, and _COMMODORE 
CEE_, could produce issues that contain more layout information than now 
offered.  Since the viewer would now be standardized, these publications 
could possibly forego the distribution of the viewer software and offer 
more content in the extra space on disk.  A side benefit is the ability 
for Commodore users to read each issue on any platform.  Possibly you'll 
never need to read LOADSTAR 128 Quarterly on an IBM PC, but what about 
reading it on a 64, while your sole 128 does something else?  Moving to 
HTML would shift a disk magazine's focus and concern from the 
presentation, which would become standard, to content, which is why 
Commodore owners read such magazine anyway.  How many times has 
otherwise great information been presented badly in a disk magazine?  
Use of HTML could help alleviate that problem.  Publishing a disk 
magazine is time consuming because not only must editors work on the 
articles themselves, they must also write the software that presents the 
articles to the viewer.  Using HTML and a pre-written browser would 
allow editors to spend more time on laying out and editing articles. 
 
Disk magazines aren't the only winners here.  Have you ever wanted to 
create a small publication?  The use of HTML and a third-party HTML 
viewer makes it easy for you to do so.  Just like the editors of bigger 
publications, HTML allows you to concentrate on presenting your 
information without worrying about writing the presenter software.  Now, 
obviously not everyone should publish their own magazine, but how about 
help files, information disks, software documentation, club newsletters, 
etc.?  These publications can all benefit from this technology. 
 
These are but a few of the benefits of switching to HTML for document 
layout.  Other uses include upward compatible support.  Using HTML 
allows the Commodore 128 user to view documents created for the 64 in 80 
columns by 50 rows.  C128D owners can take advantage of their 64kB video 
RAM even when viewing documents created on 16kB video RAM C128s.  
Publishers would no longer be constrained by lowest common denominator 
support.  They can now include whatever they want and be assured that 
the presentation will look fine on all platforms.  When a user upgrades 
his machine, he or she can immediate utilize those new features without 
requesting a new version of the publication.  Also, for software, even 
though the software itself might differ by machine, the online 
documentation need be written only once.  As well, never forget that 
marking up in HTML makes migrating your documents to the Internet and 
the WWW a snap! 
 
@(A): Creating an HTML viewer on the Commodore  
 
Obviously, before Commodore users can reap the benefits of HTML, we must 
create both a HTML generator and a viewer.  The generator is easy, as 
HTML is simply ASCII text files.  So, we are left to design and 
implement an HTML viewer.  The following conditions should be met: 
 
o  ability to utilize all Commodore peripherals within reason 
o  ability to work on a stock machine 
o  ability to recognize and display valid HTML 3.0 or lower files 
 
At first, we're going to concentrate on developing our viewer for the 
Commodore 64, although we should strive to offer versions for the 128, 
C65, Plus/4, C16, B series, PET, and VIC-20.  I am reasonably confident 
on all but the last one.   
 
Although we intend to develop a viewer that supports the above, our 
initial development will operate on a much smaller scale. The first 
revision of this viewer will operate on the stock machine and will 
contain support for the basic HTML tags as outlined above.  Our design 
will allow us to extend the capabilities to encompass our goals. 
 
@(A): The Viewer Execution Flow 
 
I am not very good at drawing execution flows, and the native format of 
this magazine doesn't lend itself well to them, anyway.  Therefore, I 
will simply describe the execution flow. 
 
The viewer will start by asking the user for a document to access.  If 
the file does not exist, an error is printed and the user is asked 
again.  If the file exists, the viewer will begin reading it.  If a tag 
is found, the tag should be acted upon.  If text is loaded, it should be 
displayed on the screen using the current markup controls unless the 
control information is incomplete.  In this case, the text should be 
stored for later display.  The file should be parsed in this way, until 
the end is found.  Then, the system will wait for either the user to 
select a link or type in a new document to view. 
 
Most of the time, text can be displayed as soon as it is received.  
However, there are exceptions.  Some tags, like the <TABLE> tag, which 
creates a table on the screen, require that all the data in the table be 
known before the table cell information can be calculated.  In cases 
like these, we must store the data and wait for the </table> tag. 
 
The above flow explanation ignores some subtleties like carriage return 
stripping and multiple space reduction.  Those are left out because at 
least one tag, the <PRE> tag (preformatted text) overrides those rules.  
<PRE> text is displayed in a monospaced font exactly as it is prepared 
in the document.  Text is not wrapped, and spaces are not reduced.  So, 
we will make those formatting options that are normally turned on. 
 
@(A): Conclusion 
 
I regret that we haven't gotten very far in the development process with 
this installment, but we'll make up for lost time in the next 
installment.  One thing that I would like to encourage from readers is 
comments and suggestions.  Do you see a problem with some of the above 
information?  Do you have a better way to parse some of the information?  
Do you see limitations in the data structures? Since we haven't delved 
into some of these aspects yet, do you have some ideas of your own? I 
can guarantee that I'm ready to discuss them with you; however, I can't 
read your mind.  I think it's important that this project be completed, 
as it forms the core of a successful WWW browser, and I see everyone 
wanting to know when one will be available.  I am less concerned that my 
name appear on the finished product.  In fact, I think a product that 
draws on the talent of the entire Commodore community would most likely 
exceed the quality a single individual can afford a piece of software.  
So, fire up those assemblers and put on those thinking caps.   
 
=========================================================================

Creating 3-D Dungeon Crawls

by Todd S. Elliott (telliott@ubmail.ubalt.edu)
http://ubmail.ubalt.edu/~telliott/commodore.html
	     
@(A): Introduction

What? Another article in C=Hacking that deals with the subject of 3-D? 
Well, not in the same vein as Mr. Judd's study in 3 Dimensions for 
rendering shaded 3-D polygons in real time. (See Polygonomy in C=Hacking 
12.) No, this article only deals with the aspect of the 3-D look and 
feel in those dungeon crawls you see for the c64. Some titles spring to 
mind, like the gold box series by SSI in collaboration with TSR, i.e., 
Pool of Radiance, Curse of the Azure Bonds, or other popular titles such 
as the Bard's Tale Trilogy.

With the techniques described, the aspiring Dungeon Master (DM) can 
create a rich world to torture his players at the local terminal of the 
beloved c64! That, and some generous helpings from the local pizza 
delivery company. "Hey! Look out for the grease! Arrrgh! Now the `A' key 
is stained!" ;)

@(A): Nuts and Bolts
	    
Let's begin with the 3-D screen. It is comprised of a 12x12 square of 
custom characters, which never change position. The 12x12 square looks 
like this:

characters 01,02,24,25,48,49,..,96,97,120,121
           03,04,26,27,50,51,..,98,99,122,123
           ..
           ..
           22,23,46,47,70,71,..,118,119,142,143

The 144 characters are positioned in an unusual way: they flow in two 
character columns, run down for 24 characters, then go back up for the 
next two-character columns. Think of these two-character columns as 
SEAMS in the 3-D window. Right now, there are six such SEAMS in the 3-D 
window for the dungeon. Of course, these are not the actual characters 
(screen codes), (I forget what they are right now), but they are in a 
continuous sequence, i.e., no broken or interrupted series of screen 
codes. (If memory serves me correctly, they are the last 144 screen 
codes in the 256 screen code table.) The corresponding color codes never 
change, for the sake of speed.

Next, we deal with the concept of CELLS in the 3-D window. There are a 
total of 13 CELLS which we can utilize individually to show an object, 
which in turn, is displayed in the 3-D window in the correct 
perspective. By objects, I mean walls or doors. The perspective is from 
the user's standpoint. This creates the illusion of the 3-D look and 
feel, but does not simulate true 3-D rendering on the fly such as 
Polygonamy by Mr. Judd. (See Polygonomy, C=Hacking 12.)  Let's take a 
look at all 13 cells, to give us an idea of what each one does:

Cell 01 - Farthest left side object.
Cell 02 - Middle left side object.
Cell 03 - Immediate left side object.
Cell 04 - Farthest right side object.
Cell 05 - Middle right side object.
Cell 06 - Immediate right side object.
Cell 07 - Farthest front object.
Cell 08 - Middle front object.
Cell 09 - Immediate front object . (Currently used for backdrop only; 
          fills the entire 12x12 screen.)
Cell 10 - Farthest left side object situated in front.
Cell 11 - Middle left side object situated in front.
Cell 12 - Farthest right side object situated in front.
Cell 13 - Middle right side object situated in front.

The 3-D engine, before it starts to redraw the 12x12 screen, checks the 
user's (you!) orientation. If you are facing north, the engine will know 
this and configure the 3-D window accordingly. Let's assume that the 
user is facing north, and the 3-D engine now looks in the dungeon map 
for relevant objects to place on the screen. The 3-D engine will look 
for doors or walls only. In future revisions, this is expected to 
change. Currently, the map value for a wall is 128 and for a door is 7.

First of all, the 3-D engine looks in Cell 3. If it finds an object 
there, it will paint a wall or door and will skip the search in Cell 11. 
The reason why Cell 11 was skipped is because an object was found in 
Cell 3, which would overwrite Cell 11. We don't want the 3-D engine 
accidentally overwriting Cell 3 with Cell 11 on top. Next, it searches 
for an object in Cell 6, and if it finds an object there, it will skip 
Cell 13. Last, it will search in Cell 8, and if an object is found, it 
will skip all remaining cells except for Cells 10 & 12. This is to 
ensure that there are no overlapping cells which result in a less-than 
harmonious 3-D look and feel. This hunt and eliminate approach employed 
by the 3-D engine can be referred to as a first-last approach. There are 
three layers of information for the 3-D engine to process, and it starts 
from the 1st layer to the 3rd layer, minimizing conflicts and results in 
a natural 3-D look.

Here's the sample code for the direction of north:

   ;paint the north surroundings
   ; Note: the .Y register refers to the location in the map for the 3-D
   ; engine to search.
   ; position the paint location
   npaint  =*
           lda #101
           sta subtract+1
           sta addition+1
           jsr minus
   ;first block module
           ldy #100:jsr cell3
   ;second block module
           bne +:ldy #74:jsr cell11
   +       ldy #102:jsr cell6
           bne +:ldy #78:jsr cell13
   ;third block module
   +       ldy #76:jsr cell8:bne +
   ;fourth block module
           ldy #50:jsr cell2
   ;fifth block module
           ldy #52:jsr cell5
   ;sixth block module
           ldy #26:jsr cell7:bne +
   ;seventh block module
           ldy #0:jsr cell1
   ;eighth block module
           ldy #2:jsr cell4
   +       ldy #24:jsr cell10
           ldy #28:jsr cell12
   ;position the party
           jmp plus
   
@(A): Drawing the Screen

Now, on to the actual drawing of the 12x12 3-D screen! First, the 3-D 
engine immediately draws a backdrop to Cell 9. This is the floor and the 
sky you see in the 3-D world. (This step may be unnecessary in the 
future.) Then, the 3-D engine takes the object found in a particular 
cell and draws the object on the SEAM in the 12x12 window. Remember the 
SEAM's, eh? Depending on the size of the object, the 3-D engine may 
encompass two or more SEAM's in one sitting. First, it takes the pointer 
values from the graphic tables, extracts the raw graphics data, and 
stashes the same raw data on to the character dot data area. Please note 
that the 3-D engine does not stash the data to the screen; only to the 
character dot data area. Remember that the 12x12 had a character grid- 
the VIC-II chip continuously updates the characters with its 
corresponding dot data. Hence the reason why the characters never change 
in the 12x12 3-D window. This is needed for two reasons: One, the 12x12 
grid uses only 144 of the 256 available characters, leaving some left 
over for regular character. Two, it allows the 3-D engine to `unroll' 
the graphics updating loop using self-modifying code , resulting in 
speed increases.

Here's a sample code for the grunt screen updating routine:

   ;to paint the 3d surroundings
   paint   =*
           lda #59:ldy #128; This is the lo-hi byte representation of
                           ; the character
           sta dummy+2:sty dummy+1; dot data area.
           lda <milleu:ldy >milleu; the pointer to where the backdrop
                                  ; can be found.
           sta dumb+1:sty dumb+2
           ldx #$03
   -       lda #$00
           sta disflag,x; this flag is used for hidden objects.
           tay
   dumb    lda $ffff,y
   dummy   sta $ffff,y; This is the self-modifying code to draw the
                      ; backdrop.
           dey	   
           bne dumb
           inc dummy+2
           inc dumb+2
           dex
           bpl -  
           ldy #127
   -       lda 22016,y
           sta 16256,y; The remaining part of the backdrop is drawn.
           dey
           bpl -
           jmp direction

   ; routine for printing two char wide column on the dungeon window
   table   =*
           lda cassette,y; retrieves the pointer values from a table.
           sta twain+1; The table is stored in the cassette buffer at
                      ; 820.
           iny
           lda cassette,y
           sta twain+2
           lda chartable,x
           sta seam+1; This retrieves the pointer values from a table
                     ; for
           inx       ; the character dot data area.
           lda chartable,x
           sta seam+2
           ldy #192; to output enough bytes to fill 24 characters.
           twain lda $ffff,y; Self-modifying code used here to draw the
                            ; 3-D screen.
   seam    sta $ffff,y
           dey
           bne twain
           dey
           rts

@(A): Conclusions

Whew! The 3-D engine has finally done its work and waits for the user to 
press a key for a new facing. The 3-D engine by itself is quite small 
and flexible enough to handle as much as the programmer wants to throw 
at it! The power is in the tables and the 3-D hunt/eliminate routines.

The 3-D Dungeon Demo can be found in this issue of Commodore Hacking
(Reference: code, SubRef: gfxcode), on the Commodore Hacking MAILSERV
server (Reference: code), at http://www.msen.com/~brain/pub/dungeon.sda
or in the file DUNGEON.SDA available at my site.  There may be a c128 
version in the offing, but in 40 col. mode. Of course, there are no 
planned versions for the c65. ;) Please note that it does not contain 
the source code. However, upon request, I will be happy to send you the 
source code in Buddy format. (Right now, I'm trying to make the source 
code assembler neutral to work in either ACEsembler or the Buddy assembler.
									   
Right now, I have already done work in producing a Dungeon Master's 
environment- with a 12x12 screen grabber routine and a Retouch Studio. 
The 3-D engine will be overhauled completely to create a 3-D environment 
in the hi-res multi-color screen, as opposed to using custom characters. 
In the future, I hope to have a complete environment, where the user can 
design dungeons, comment them, add a bestiary, add custom doors and 
walls, and map editors for the purpose of playing pen & paper dungeon 
games. This way, the program only shows the visual aspects of the pen & 
paper genre; it will not have combat or character interaction. I expect 
a version to be ready by the end of summer '96. I'm not sure how I will 
release the software, but I will choose an appropriate medium for mass 
distribution that is accessible to C= users.

That's it! Feel free to drop me a line regarding this article. I'd be 
happy and will try my best to answer any questions or comments about 
this article. Until then, Happy 8-Bit computing!

=========================================================================

Commodore Trivia

by Jim Brain (j.brain@ieee.org)
          		  
@(A): Introduction

As some may know, these questions are part of a contest held each month on
the Internet, in which the winner receives a donated prize.  I encourage
those who can received the newest editions of trivia to enter the contest.

This article contains the questions and answers for trivia editions #27-28,
with questions for edition #29 and the current contest, #30.  Why two sets
of questions?  Well, as some may know.  I have recently moved, and that
has put me behind in posting answers.  At present, my reference books
are still packed in storage, so I can't finish the answers.
							    
If you wish, you can subscribe to the trivia mailing list and receive the
newest editions of the trivia via Internet email.  To add your name to the
list, please mail a message:
   
To: brain@mail.msen.com
Subject: MAILSERV
Body:
subscribe trivia Firstname Lastname
help
quit
   
@(A): Trivia Questions

Q $1A0) Commodore produced an assembler for the 128 called HCD65.  What
        does HCD stand for?
        
A $1A0) Hedly C. Davis, the writer of the assembler.

Q $1A1) Who wrote most of RAM DOS?

A $1A1) Although many assume Fred Bowen wrote RAMDOS, Hedly Davis actually
        wrote the bulk of it.

Q $1A2) What is the name of the first C64 disk copy program?  (hint: it
        sported a "gas gauge".)

A $1A2) 1541 Backup.

Q $1A3) What was the case color of the original Commodore 64s?

A $1A3) Ivory, just like the case color of the VIC-20.  In fact, early
        cases WERE VIC-20 cases.

Q $1A4) There are at least two ways to enter 64 mode from 128 mode on a C128:
        go 64 and sys 65357.  They produce the same result (64 mode), but
        they differ in at least one noticeable way.  How?

A $1A4) sys 65357 doesn't ask the "Are You Sure?" question.

Q $1A5) What CPU powers the B-128 computer system?

A $1A5) The 6509 CPU.

Q $1A6) What type of drive mechanisms are in the D series hard drives from
        Commodore? 

A $1A6) The D9060 and D9090 drives used "Winchester" hard drive mechanisms.

Q $1A7) Commodore produced a 16kB RAM expander for the Commodore VIC-20.
        What is its model number?

A $1A7) The VIC-1111.

Q $1A8) Commodore produced at least one disk drive with an optical track
        one sensor.  Which drive?

A $1A8) Certain early versions of the 1541C drive had a functional track
        1 sensor.  Later, due to compatibility problems, it was disabled, 
        and then later, the sensor was removed from the mechanism.  In 
        addition, 1571 drives and 1581 units have optical track sensors.

Q $1A9) The Commodore PET series used the IEEE bus to communicate with
        peripherals.  Each peripheral had a unique ID.  What range of IDs
        are supported by the PET?

A $1A9) IDs 4-15 are supported, although you cannot connect all 12 devices
        up at one time.

Q $1AA) Many people have developed Commodore software with the PAL assembler.
        What does PAL stand for?

A $1AA) Personal Assembly Language (PAL).

Q $1AB) Many people remember Compute's Gazette.  This magazine is best known
        for the word processor program it shared with thousands of
        subscribers.  Name the program?

A $1AB) SpeedScript.

Q $1AC) In some 6502 assemblers, the opcode "bge" is available.  It stands 
        for "branch if greater than or equal to".  What more common opcode 
        is this opcode referring to?

A $1AC) bcs (Branch Carry Set)

Q $1AD) If I wanted to do a "blt" (branch if result less than), what 6502 
        opcode would I use?

A $1AD) bcc (Branch Carry Clear)

Q $1AE) Each Commodore peripheral has a device number, which is associated
        with a type of device.  8-15 implied disk drive, 4-5 implies
        printer.  These have remained constant from the PET to the C128.
        However, one peripheral in the PET was phased out and its device
        number was reused.  What device number was reused?

A $1AE) Device #2.  The PET systems used #2 as a second tape drive, but in
        the newer computers, #2 refers to the RS-232 port.

Q $1AF) What is the maximum amount of general purpose RAM can one utilize
        in a stock C64?  (I need an exact number here)

A $1AF) In the Ultimax memory configuration, if you guarantee no interrupts
        can occur, one can utilize all but the first two memory locations
        for general purpose RAM, giving 65534 bytes of RAM.  If you can't
        guarantee you'll never receive an NMI, you lose 2 more bytes for that
        vector, giving 65532 bytes available.

Q $1B0) What was COMPUTE!'s original sub title?
    	
A $1B0) "The Journal for Progressive Computing".

Q $1B1) After COMPUTE! was absorbed by General Media, how did the name
        change?
    	
A $1B0) The name, having gained an exclamation point and lost a period many
         years before, reverted back to the period as the ending punctuation.

Q $1B2) What Commodore content magazine was named after a nautical term?
    	
A $1B0) "Ahoy!"

Q $1B3) What Commodore content magazine was named after a BASIC keyword?
    	
A $1B0) "RUN"

Q $1B4) What CPU gets control first when a Commodore 128 is booted?
    	
A $1B0) The Z80 CPU has control first.

Q $1B5) What CPU powered the Commodore C900?
    	
A $1B0) The Zilog Z8000, from the company who brought us the popular Z80.

Q $1B6) How large is the monitor installed in the SX64?
    	
A $1B0) 5" diagonal.

Q $1B7) What color scheme does the SX64 boot up into?
    	
A $1B0) White screen with cyan border and blue text.

Q $1B8) What is printed as the stock SX64 boot up screen?
    	
A $1B0)      *****  SX-64 BASIC V2.0  *****
         64K RAM SYSTEM  38911 BASIC BYTES FREE
 
        READY.
        _

Q $1B9) The SX64 has a reset switch behind the door that holds the
        monitor controls.  What is strange about the rest switch?
    	
A $1B0) The reset switch only resets the disk drive.  Most people assume it
        resets the entire computer system.

Q $1BA) What common port is not included on the SX64?
    	
A $1B0) The Cassette Port.

Q $1BB) In the mid 1980's, a company called Berkeley Softworks created
        a graphical user environment for the Commodore 64.  What was it
        called?
    	
A $1B0) Graphical Environment Operating System (GEOS).

Q $1BC) Berkeley Softworks eventually changed their name to what?
    	
A $1B0) GEOWorks.  They now develop the GEOS OS for Personal Digital 
        Assistants (PDA).

Q $1BD) Most everyone is familiar with MSD disk drives.  What does MSD
        stand for?
    	
A $1B0) Micro Systems Development, Inc.

Q $1BE) On the NMOS 6502, what two addressing modes have but one opcode
        each that can operate in that mode?
    	   
A $1B0) Actually, there is only one such mode, indirect.  jmp (xxxx) is
        the only opcode that can utilize that addressing mode.

Q $1BF) How many transfer register opcodes are there on the NMOS 6502?
						    		     
A $1B0) 6 (TAX, TAY, TSX, TXA, TXS, TYA).

Q $1C0) What are the two configurations for the LORAM, HIRAM, GAME, and EXROM
        pins that will allow the use of a full 64kB of RAM in the C64?
    	
Q $1C1) What is the first thing that the C64 (and VIC) KERNAL does upon
        powerup?
    	
Q $1C2) What KERNAL routine is used to set a DOS channel to input?  
    	
Q $1C3) What KERNAL routine is used to set a DOS channel to output?  
    	
Q $1C4) Before calling the routines in $1C2 and $1C3, what register must
        you load?
    	
Q $1C5) What 3 devices can the KERNAL NOT load from?
    	
Q $1C6) In the Commodore KERNAL, there are "high" and "low" level routines.
        To which class of routines does "SECOND" belong?
    	
Q $1C7) If a programmer calls the KERNAL routine "STOP" and the RUN/STOP
        key is NOT pressed, what is returned in the .A register?
    	
Q $1C8) The Commodore KERNAL routines are all accessed via a jump table.
        What routine is used to change the values in the KERNAL jump table?
    	
Q $1C9) A call is made to a KERNAL routine, the call returns with the C
        bit set and the .A register holds $02.  What error does this 
        indicate?
    	
Q $1CA) If a call to READST is made, and a $40 is returned in .A, what 
        does this indicate?
    	
Q $1CB) What routine can be called to determine the physical format of the
        Commodore 64 screen in characters?
    	
Q $1CC) The Commodore 64 starts a non-destructive RAM test at what location?
    	
Q $1CD) Which way does the RAM test proceed: up or down?
    	
Q $1CE) Which KERNAL routine is used ONLY in conjunction with a Commodore
        IEEE card? 
    	   
Q $1CF) Many hybrid BASIC/ML programs use SYS to transfer control from BASIC
        to ML.  However, a few use USR(X).  When using the latter function,
        where does BASIC fetch the ML routine's starting address from?

Q $1D0) To load a program from the current location on a cassette tape, what
        two key combination must a user press on a VIC-20 or C64.
    	
Q $1D1) If I issue the BASIC statement OPEN "JIM,S,W", What type of file
        am I opening?
    	
Q $1D2) Is BASIC in the Commodore computer systems an "interpreted" or 
        "compiled" language
    	
Q $1D3) What type of variable is A%?
    	
Q $1D4) If I issue the BASIC line PRINT:PRINT "A","B" what column does
        the "B" show up on when run on a C64?
    	
Q $1D5) What column does "B" show up on if I run the BASIC line in $1D4 on
        a VIC-20?
    	
Q $1D6) Alphabetically, what is the first BASIC 2.0 to have a 3 letter
        abbreviation?
    	
Q $1D7) How many times does the statement FOR T=1TO0 execute?
    	
Q $1D8) What base does the BASIC LOG command use for its logarithm 
        function?
    	
Q $1D9) A = NOT B can be written as which expression:
         
        a) A = -B
        b) A = -(B+1)
    		    
Q $1DA) What does INT(-15.43) return?
    	
Q $1DB) What does ASC$("JIM") return?
    		  
Q $1DC) What is the abbreviation for GET#?
    	
Q $1DD) What is the largest integer value that Commodore BASIC can handle?
    	
Q $1DE) What is the ONLY Commodore Editor key not affected by "quote mode"
          
Q $1DF) What is the range of RND?
						    		     
=========================================================================

? DS, DS$: rem The Error Channel

We here at Hacking Headquarters are actually perfect, but the online
networks occasionally globally alter the issue after it leaves our hands.
The printed version is similarly changed by the print shop.  We think
it's an attempt to discredit us, but we will thwart them again by simply
printing the corrections to the mistakes THEY introduced below.  
	    
@(e)dbldma: Speed up RAMLink transfers with the Double-DMA Technique

Brett Tabke wrote in to correct some misinformation contained in this 
article in Issue #11.  In the article's discussion of RAMDOS, it was
written that "RAMDOS continually pages its code in and out of main
memory" during transfers.  Mr. Tabke, who has researched the RAMDOS code
extensively, notes that the above is incorrect.  RAMDOS pages the main
code in to initiate the transfer, but the bulk of transfers are handled
by the 256 byte interface that remains in memory at all times.  

@(e)mags: Hacking the Mags

We reprinted Jeff Jones' electronic mail address as printed in LOADSTAR
LETTER #31, but Jeff sent us a note mentioning the address had changed,
and the correct email address is jeff@loadstar.com.
   
@(e)cmdcpu: Underneath the Hood of the SuperCPU

In this article in version 1.0 of Issue #12, there were two references to 
"Exploiting the 65C816S CPU", an article pulled from the issue for space 
reasons.  We regret the error.  The full article on the 65C816S appears in 
this issue (Reference: cpu).

@(e)gfx: Taking to TED: The MOS 7360/8360 Display ICs

In early versions of Issue #12, the TED IC article was incorrectly
attributed to Harsfalvi Levente.  Hungarians customarily sign names with
the last name first, opposite English notation (implying that the other
way must be Hungarian notation :-).  The article should be attributed to
Levente Harsfalvi.  Version 1.3 of the issue fixes this problem.

@(e)polygon: Polygonamy: A Study in 3 Dimensions

After the publication of this article in Issue 12, Stephen Judd noted that
the following information was not included in the article:

Memory map:

	$0800-$1BFF  Tables
	$1C00-$1FFF  Color info for bitmap #1
	$2000-$3FFF  Bitmap 1
	$4000-$58FF  Fill routine for bitmap #1
	$5900-$5BFF  Tables
	$5C00-$5FFF  Color info for bitmap #2
	$6000-$7FFF  Bitmap #2
	$8000-$A6FF  Code
	$A700-$BFFF  Fill routine for bitmap #2
	$C000-$C5FF  Yet more tables
	$C600-$C6FF  List of points for plotting routine
	$C700-$C7FF  Fill patterns
	$C800-$CDFF  A few more tables

The fill pattern table may be broken down further.  Each fill pattern
is eight bytes, so to get the address in the fill table multiply the
pattern number by eight:

	0 - Empty (clear)
	1 - $FF (solid)
	2 - Brick
	3 - CrossSmall
	4 - Inverse of 3
	5 - Dither 1
	6 - Dither 2 (inverse of 5)
	7 - Zigs
	8 - Zags
	9 - Zigzag
	10- Holes
	11- Smiley
	12-15 Not used
	16-23 Shockwave    \ Animated patterns, eight frames each
	24-31 Squaredance  /

If you have a freezer cartridge you might want to try changing the
patterns.  You might also turn on the multicolor bit (bit 4 of $D016)
to see what a multicolor Polygonamy might look like, and change the
patterns (not to mention the color info) to be more multicolor-friendly.

@(e)trivia: Commodore Trivia

In early versions of Issue 12, question $186 in the Commodore Trivia 
article was incorrect.  The correct answer appears below:


Q $186) What is the maximum size of RAM available for use for program
        storage on an expanded VIC-20

A $186) If you discount the screen area (512 bytes) and Color RAM
        (512 bytes), up to 28159 bytes can used for BASIC programs
        and variables (original 3583 bytes and 3 banks of 8192 bytes each),
        and up to 40448 bytes can be used for ML programs.  (0-32767 minus
        512 bytes for screen and 40960-49151).		 

=========================================================================

The Next Hack

  
Hacking Headquarters>look
       	
You are in a room where editors and authors are busily preparing issue
#14.  You scan along the room and note the following paragraphs hastily
left on the various desks:				     
    
o  In part 2 of "Using HTML on the Commodore", Jim Brain will delve
   more deeply into HTML parsing engine design and relate some of the
   tricky cases the parsere engine will have to deal with.
							  
o  In another part 2, Alan Jones continues on in his discussion of
   complex computations on Commodore systems.  In this installment,
   Alan will jump into Linear Programming.  Equations and algorithms
   will be presented, as well as sample code implementations.

o  Attention all VIC-20 enthusiasts!  If you need some good technical
   information on your beloved machine, look no further than our next
   issue.  Pinout diagrams, cartridge tricks, and important memory
   locations will be presented.
   
o  In a new column, "Twiddle the Bits", Todd Elliott will show how to 
   modify a C128D to include a CMD HD and a FD4000.  Todd will detail
   how he created his "Tower of Power".
   
o  Although we didn't have room this time, Commodore Hacking will
   begin reviewing new software titles, starting with the recently
   introduced "Novaterm 9.6", "The Compleat Lee O 128", and "The 
   Compleat Crossword".
   
o  And, of course, C=Hacking's regular goodies.

So, fire up that label program and print off one for your copy of
Commodore Hacking #14.

=========================================================================

Hacking the Code

Being a technical, developer oriented magazine, some articles featured
in C=H include executables or other binary files as part of the article. 
All such binary files are included on the soft copy of this issue in this
section.  In an effort to retain the integrity of such binary files through
distribution over various computer networks, the binaries in this section 
have been encoded using the UUcode format, a popular Internet 
binary-to-readable text encoding method. In order to execute or otherwise
utilize these binary files, one must feed this section of the magazine
to a UUdecoding application.  Typical examples include UUXFER for the 64,
uudecode on the ACE OS for the 64 and 128, and uudecode on most UNIX OS 
machines.  Some encoders can decode multiple files, while others will
require the user to manually split this section into individual pieces
prior to decoding.

In addition to this section, there are other ways to retrieve the
binary files featured in this issue.  For those with World Wide Web
access, the files are available at http://www.msen.com/~brain/pub/
To retrieve "dim4.lnx", simply access the URL: 

http://www.msen.com/~brain/pub/dim4.lnx

For those with electronic mail access only, the Commodore Hacking
MAILSERV server also contains a copy of these files.  To retrieve a 
copy of "dim4.lnx", send the following email message:

To: brain@mail.msen.com
Subject: MAILSERV
Body of Message:

send dim4.lnx
help
quit

For some articles published in Commodore, the author or authors may also
have other methods for accessing files mentioned in the article.  These
methods are described in the respective article.

Commodore Hacking always attempts to provide the reader with as many
options as possible to retrieve uncorrupted binary files.  Although none
of these above methods is foolproof, the added redundancy helps overcome
any shortcomings.
				       
WARNING:  The UUCode format translates files from binary to ASCII, not
PETSCII.  Therefore, either decode this section before downloading this
section to a PETSCII mode computer system, or download this section without
translation to PETSCII.  Some decoder programs can handle PETSCII converted
UUCode files, but the practice is not recommended because conversion is
typically done in a telecommunications program and accuracy in
translation cannot be guaranteed.

@(A)democode: Binary for Dim4
    			 
begin 600 dim4.lnx
M`0A;"`H`ES4S,C@P+#`ZES4S,C@Q+#`ZES8T-BS"*#$V,BDZF2*3$1$1$1$1
M$1$B.IDB("`@("!54T4@3%E.6"!43R!$25-33TQ612!42$E3($9)3$4B.HDQ
M,`````T@,B`@*DQ93E@@6%9)22`@(%=)3$P@0T]23$59#2`X(`U$24TTH*"@
MH*"@H*"@H*"@#2`Q-R`-4`T@,S0@#41)331254Y-12U214%$344-(#4@#5`-
M(#$P,2`-1$E--"Y.04U%4Z"@H*"@H`T@,2`-4PT@,S@@#4U!24XT+E.@H*"@
MH*"@H*`-(#<T(`U0#2`Q,#`@#4=205!(24-3+E.@H*"@H*`-(#4P(`U0#2`V
M,B`-3T)*14-44RY3H*"@H*"@H`T@,3`Q(`U0#2`Q-3,@#4U54TE#+E.@H*"@
MH*"@H*`-(#8P(`U0#2`S,R`-1$E--"Y415A4H*"@H*"@H`T@-S0@#5`-(#(W
M(`T`````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````$(#`C)!Y[_K#8U-@"@`'CN,-!.$=#F`;D*%IE``\C0
M]TQ``Q8\"Z(%TX)JP;4@6UN@VUL@7)S<G`#IZNSN\/+T]OC\_@`#!PD-#Q,5
M&1TA)2DM,S<]0TE/5UUE;W>!BSD`M"$JT'PAVN'X,_//M*D'9'\'`QH/)+0#
M:[!#4Y5!X`R`:$5EU,"W_4:0R(6PJ'%TU:H4//,?SNHQ4_"%2=(OTR&D'2(Y
M=28B\2DM%4G+E)&CM4$_8B:9@`^(0MP=D&)6LZOYGU_5-55PI<!<E;=404/M
M2'(!'@H'"L(^$8(8B*C@E),([%6_TEY`Y%:H&C?',N8R)4$'CR$@4Q-F[@A&
M^RI",9,)L!Q+!R^:V/M!$4*/<+M)_Q&*"OLGKMB-$TVK$!V9`X:PH3*`IS)J
M2A5AO_@4RP"W0@CH;]*`!T!G#"@#=B@#.13!/?2%*(IBRH$`YL%7!%#-!;Z)
M#ABL#-&>J@\R.T'`1#R(0[MB=.BPFVOQM8;-&LCG?^GRL!?:",W^5D(03`KZ
M#,T'F^I0[O$O#)0$=$/,_UB)YIND"MW02L@L)94VDP(*987\4S8(;^.4(54R
MS]`1)QNB-+1M.I94U``U4F"[=-^<-`BN:"--A<A8N(U$%2)DX3%258B<<;O[
MK%+^8IN54L$W&0MJI<LM1S6U(!(613RD8_C[=+G2[(!GD)P)F4]'42UT!>F?
M2+$@`&*K>8$T/4YZAC`EC'-A"'*%H14BR/PUOQ1QLEKNODBV/&#SF2U&X)T1
MF)@RWY"\ILVT+$4\*XU&O2DKMX*'UAR+@H4RT^",/=NZ$$YC3W=K$<LP0I)0
M7ZQ2UNNTT"H)`9F#?*Z)N<9HLXWPUZHYGH1:?[*ECLU>(AL_$,$L2$F0A9R;
MV%2$;RI*R"BE0E2A(>`M5..R)`_`&`B%,=K>C7-;'YX\)'8%R`]%JX`HJ8S#
M*.,0BA)?`2:Q".$I?6LIXO18):.C5")+1<A4W"WK(>YZTRFI=4-J!F(Y,:"D
MS_;DJ(;4,3#0@8@25!K!4U4"$^\-U)$$`!IG[(Y+$6"Q7R&T$T*@%%6`V#&Z
M<=S&!5\"+!""*^O5S^(TR$2LK%;V"B.N2QA9;!9._!88TH`*Y$C*$4%,@DC_
MIPZ^,01:5)!H"1$D5)"002=`4'3H^)@'3;D\0W)1L7!5R`Z@!4S=%X*<"B"*
MH&8F`CDP((HDK=6#155A](X+HF"2BA&]D=+[98F5T*H15=;2S#2;PE:P82`J
ME?6`H%J5@6C3,CP0=[O=[J(GH(-?_9)AX(/B)"K"**L;*G78ZH9*(;:ZH5*)
MK6XH4\KJAIJJ$V0,8&-"C3%`C`DZQ@`L)GR:5#?(!!)#6)VPJ>(R!G@QP<48
M0,6$&6.`$A-PC$%[4\755-W`INI$(@58,$J%L&@=I4)XM)!2(4Q:2:D0+BVE
MM+B,1'76-&1EB&)!:SE@C`%L3*@Q!H@Q0<<8@,6$SQ.&`"<FD!C"G`G")QPI
MQ@`O)K@8`ZB8,&,,4&("CC%H?W+1>P0YF^6<^.!,;!]$&('"/56`@9ZD"C;+
M08*@@8D61%`H$B3DH5ES`]4<1@NG#L\C*F!TA?B,3/O<`*G4+X"15B#02FP5
M&B)_2U[.=)1$#!;>F%2HZZ((RDJ0`AF*F`G$+B=8'/8G!3$1A!U9]EM7[21M
M$D;4\,J;_9GI?A3>"@;O$$V-S@N17/9!)L17FF:]@,K!,H$X*4X25LX/02"(
M2@LH1"L>?FZ`J>JB=+CP`JFJ24/!8D.X$M>XD1>L54KA`)):J@'(E<RTN)_5
MC=+P$_$%21.AU=>PFC(A@&63.$+J?W"U_J6A&/6H;@G*T4*C(TJ*N>PL-.XN
MZKYU1Y3Z1^G,_ML&KA<`.8CZHF)A/[$_+(]@T0.06P0",&W"9R3W2CA(F"6Q
M@H_K$-`0R\\@%00J6R\-CBA&YL'::$:I.-#O2&;]I5%E`W$>[3`.*1H.K/<`
MM@AP8LR`RODMB());EF_C[@/$33?TJBCQADFGVLA2?"^:3@I?^B/%)>+A$-#
M+EL<?)Q\?#]?Z])0$MT*T^=_?#-/7..JVV&L%"XY&)9`H$F@E\$$4V'2()BS
MN=WM4C-R-'EJ=KMHI&(-P9[:>OOJ:@2ZN1ET9.:`8^AYL,*!BJD:JU:R+V@1
M.H82MT5XMPS$.<:C#B'6(BWR[F@W4(`,[5_54FP7K!16,,0^(S8@0TPWD@6@
MAZ35:N3PZC!"Y3,0Y7-@Z>[FG2A"YX-PPW%5M:N0=^><D1L.BM1@IJ21$F<B
M56021VXD&SN+8WHEPV0DPUQT:CUS$9A6QH4HZ#/T$(#%^35\0B*9>5GJP("2
MS107T`TQ_YM4H`$1IY(Q,J%5*O!@G[CJ^JH39NZO.C'W77_?+[C<90JZ)\(<
M0O2ES25D7^*<0@`U"^DW_CQ7T*]S!OV#?OM&_9IYVYQ"=:$:YQB2#<7TB;&%
M2(]GM)I2(K6:L:1(?CV+B\RM\E_(2/R:T4U1R9(&"`F*D->-DMQ[I;K_1%),
MHG:,D)P(U]?A('(N.CF<4@\WNG@470@29D8G[%2K*F3$==9'9R!20[57:$YT
MUIR(;Q;57![?AGOHGZ/JZZ[ONKO^O^*#@/=2TW$1L:X>@>P-NER;O71/A$](
MNR<PB.72ZHGNB78AB"M`",G%N<,#1(30+:(,&]&)&M)I1^)%@R/B)2.1"W06
M`3`Y`3`(`3`.`3`D`3`&J?:=!P,`QU%5ID("G=Y&`)A/\0E0+"1``2)$?10Q
M`V^C(,:BP`,I\%I#2L:`CA!M$!056HF+6ND!6!R@-F!`P%$0(&`(&(13Y:[C
M(W+7\Y-XCW<?YA[O.DP]#A3?.!0!W?&-0R&0WK6[>`QWYW@2-$>#B&Y\QW=\
M$;IC.\;CF=`<3X7FR+#0$%,EZA`%*>D!(R22(*(B&J$Q;V0C5"(*4E++"RF)
M(BKB$5K1,?(A0("N3G$FO%[F:1.D6=K4:)HF\0HC11E2\3L_!!N#U@<-NH9Q
MI,BX']614,>%@H=^!]D98H^1&Z($P$P`9V1@).AY4'K1`\,"Q".#B0%+L=&^
MH!D@`S`[607W_'6G,9*T*=6D9)L2>O*6.!(GV9A;'+.FJ5;E*%P#94G]9W+#
M*#IZ:HJ:,L#D47'QT14?/S='3\_'4W/STU=<?'34W/ST%!PT/$1,4'#$S-#P
M:`#B.]Y%`'`0$:&X4'P#NN,]WF,O8)#8C@?%=:`\G@3-$:$@(>)IT!P5#A8B
M_@`<B7]`1^(NT!_7@?[X$VPD[@7UL<,@??P/VN./D)&HD;`1T4/A(^*ZT*^?
M@2/Q;^A(W!WZX_K0'W^(C<0]HCYVY'/C/]$>,?(918V*C1@ZBX]$CFA'\1W?
M$8)A(B)%\:+X-G3'>[S'WD$BL1TGBNM#>3Q7WD@141'QE&B.%A,7$?_Q']],
M-_[C/YK4<V,_HA1?D>Y8CRG%=:0]GB3-T:3D).*)TAQ54E9B.D59P.#$!-I"
M)F<F4!>T.#6!OK#-N0D4)HPN5,64V9T)5":M+F3-M-V]"94&3FXN;J@U8F9G
M8T.U`4-+"QOJ#9W=7=U0<=3<WM:&FD/&UE8V"$UT(78F6Q1UHDX\(HHJD3&5
M96PJ9>OM9FBJI32<TKLH1:^$1^<@XI23]U6(TNX\=I-.(6H1T4*T(R*&5A(/
MX?-.V%KO_"A$"'J4_"6Z>A7A)%=FW.67@1"NU,B1Z#)HL!@&"FH,(B2C@`"`
MJ+1Z8"SZZ1NPSIL_XKL88#M:?H:>[46F#G?O-Q3H(VI1%0VH51!JS`@U)3".
M"LU>FE`X(!`O38VY)L,AD_&0J8;B[H:J"!"39!Q$,A`BQ5!>*"]A4*OE(H!J
M+N!P7%RBA50N+55HQ*!&)S>`R00M@"<%<90-&,=`CCNBM5$'IA`2FBUIP6Q9
M4V:%IDB9L$0`2H+'2$XG`E0B#LF&4><5N%J0)4A-JQ2Y7&MJ``X!WS58&>>5
MM%<29*7-*UEH%11-5@3GE;17$F6ES2MA("F`P!ATD@R0BY!2BG^4H*N-(,*E
MPDP(B&U`QL0H&V)A'E+`'$%TH$P_'E%;K$,$)#204$%(9\00B)1!A4%08<35
M(2(2FDBH(J2+$$,BN5I4D6-#&RE"10]2`2I"2/96RTX,866(>'0FHX_"`G1N
MI@3U*-(,42+E01P5*>]$0:J3L)7#4B1V8C5V4N:Z*)B4;#J;TI!0X#G&UD(H
MUWVYI$13R9"Z0#RY]YFY-\,2S/Y:,$HB7^6F6LLOZ">),A0"45:M5\10>M9*
MK??-">5:IWCGW*250@FQU$Q)"ZE=I+U'@Y.D*Z*^DA*KZ?B"6))?LC8EM2V%
MB(8P]MX4(I)LSBD1&$&'T+@'@8@G3XMG8AIL-V3J]A&^I%3@"W0/R46Q\TZ:
M1M6LP,2HF3QOM,D6&K>6-_L2<%9:`@]J!O%!E&>14'H+3Z'@@Y!Y):Z@&&FI
M0=:AMRL5V[.P#=#0$+%5'L:E0XN*>'*P0T+=H:9/^]`0`=7$SH?@M'1H45/.
M4RSL?&N:-^V9AH:()J(<A$N'%BD%+85]$/XO0U'^T**F7O6'%BU5DD-KCE)*
M<NBHBA0EJHFL+"Y#,QE:]-/>9!KBR?&)DOT4AFX2N13FLS>C44(,X_$!BIVL
M-2(9)282X5H8`HK,$F4A5A@OGFZE6U5!A%#L'(&J(U$X(VB.!?'Y"0I$$%08
M1,-DA=4O*2RC/,FAT:>YTU-N&"J2GKPBS(@GH_1,6IR0VCDA5#0P-1%?\H$*
MAH(+`RV2XDJQ,`DC`T!(,T2=&QP>H>DF:BXTCYH,2$,Q&X)\`AL81NE1HD!&
M()Z;`3```!*Y`!>9(P?(T/?&`2D%C2#0Y@&((!P$\`NB""#*`R`-!(C0]:`?
M(!P$H@2(A/OP,\K``K`&RB#*`Q`&(,H#&&D$J+EC!ZH@R@,8>7`'JJ7]>7T'
MA?W0#\`$D`O@$-`'J0S0WB#*`XH8;0X$JJ7];0\$J(HXY?N%_)CI`(7]I/O(
ML?P@#02(T/A,20.I`(7\A?V*\">I!-`6K>@#T`/.Z0/.Z`.I"(W4`ZT)%HV*
M!PZ*!R;\)OW.U`/*T-FE_*I@J3>%`<XPT*D;C1'03``0C58BK0X$T`/.#P3.
M#@1@R*(!(,H#\/B8*1#0U;DC!ZH@R@,8>3,'J&```````0$!`@(#!```````
M``$"`P0&"`H.$AH```````````$!`0(#!`4````````!`@,$!@@*#A8F````
M````!`4'"`0%!@<("@L+```0,+``$#!P\/#P\/`````````````!!0TM,`$`
M@(:,DIB@IJRPMKS"R,S2UMK>XN;J%L#%Q2[WBVMQ`0$,_OGU\>WIX=W5S<6]
MM:VEF9&%>6UA64U!,249#0'U4`"N^<"TJ*"4B'QP:%Q43$0\-"PD(!@D@+_?
M<Z,!_0@#:AM!@0%"PH(@WQ85%QH<'R(E*"HM,`7\\ND)P`&V`H0K0+H"Q"N@
MKX#``@H+2"PX%A!9L"QH3DI2ZNZJG-NFJ5+:E6;J2FZ5-:E6DINE36FV5.TG
M>;35?6I*;I4UIOFZE7UK3Z]OF_572^O>J55JE.RI6_*6KJE7UE3>J[Z2FZ5-
M.EIMU7E.UK3Z]MU55.TE.II\^NTOJW*?94I+Z]TZNVIVNK9*5U3DIZJJ7-=E
M4]94I+ZM2^O4ZJJ5]94[JEVUWR53ZI4V^]E4V^\E4]94E/>N5/75979/4Z5=
M7DZ5>5JME:O6^ZY4VZZKN=/JW6K*UF=TO4MOIJZK65[3U:^J<U2EJ3U]I2UU
M7E.ZI4V^56^E*4H!""@("@"9(I,1!30MGBI+*@4@0T].5$535#\B.H%)LC&D
M,34P,#J"`%8(%`"9(A%))TT@4T]24EDL($D@5$A/54=(5"!93U4@4T%)1"`T
M+9XJ1"H%(@!T"!D`F2)#3TY415-4+BXN(CJ!2;(QI#$P,#`Z@@"I"!X`F2(1
M$2`>$D1)3322!2`M+2!!($U)3D0@15A004Y$24Y'($584$52245.0T4@0EDB
M`-@(*`"9(A&;("`@4U1%4$A%3B!,+B!*541$(($M+2"94TI51$1`3E=5+D5$
M52(`!@DR`)DBGR`@2%144#HO+U!50E=%0BY!0TY3+DY752Y%1%4O)3=%2E5$
M1"\B`#0)/`"9(A$%5U))5%1%3B!$55))3D<@1D]54B!7145+4RP@1D]54B!$
M05E3(@!C"48`F2)!1E1%4B!02$0@455!3$E&64E.1R!%6$%-4RP@4U1!4E1)
M3D<@3TXB`'()4`"9(DI53D4@-"XB`*()6@"9(A%"12!355)%(%1/(%1262!4
M2$5312`25$]0(%-%0U)%5)(@2T594SHB`-$)9`"9(A&;("!;-%T@(%M&-%T@
M(%M$72`@6RY=("!;4B]372`@6U-004-%72(``PIE`)DB!1$H0E54(%E/52!$
M241.)U0@2$5!4B!!0D]55"!42$5-($923TT@344I(@`-"F8`B2`Q-#``/@IG
M`)DBFR`@(%M$72`%*$9/55)42"!,151415(@3T8@5$A%($%,4$A!0D54(2DB
M`&L*:`"9(IL@("!;+ET@!2A)1$5.5$E&2452(#0T(2!.3U1%(%1(050@250B
M`)D*:0"9(B`@("`@("!$3T53($Y/5"!!3%=!65,@2$%612!!3B!%1D9%0U0I
M(@#)"FL`F2*;("`@6U(O4UT%("A42$4@-C142"`H/31>,RD@241%3E1)1DE%
M4B$I(@#?"HP`F2(1*%!215-3($$@2T59*2(`]@J6`*$@020ZBR!!)+(B(B"G
M(#$U,``B"S`"F2(1!5-014-)04P@5$A!3DM3(%1/(($25U)/3D=705F2!2!&
M3U(B`%`+.@*9(E-51T=%4U1)3D<@04)#4E5.0TA%4BP@5TA)0T@@34%$12!4
M2$E3(@!]"T0"F2)!5"!,14%35"!03U-324),12$@*$%,0D5)5"!004E.1E5,
M(#HI(@"M"TX"F2(104Q33R!34$5#24%,(%1(04Y+4R!43R`>$EM&54Y'55-=
MD@4@1D]2(@#8"U@"F2)(14Q01E5,($-254Y#2$E.1R!354='15-424].4RP@
M159%3B(`_PMB`IDB5$A/54=((%1(15D@1$E$3B=4(%=/4DL@3U54(#HI+B(`
M+PQL`IDB$5=!5$-(($9/4B!!($953$P@1$E35%))0E5424].($E.0TQ51$E.
M1R(`60QV`IDB0T]-4$Q%5$4@4T]54D-%($%.1"!$3T-5345.5$%424].+B(`
M``"<MS7W<M^7SDIR7+?9SY*<MWI*<]UG6<]TWNEF4E*;E6K;4K.92SN2I*DI
M^WRE5\W]4^2I)>YR7/DJ=IN>YR9*DF?9N?Z<Y9DIV7.<]WGN=EUG9<]\I+EF
M4E*[56DM4K.926N27J?)SWS?.2G+DIVW/?F6924JME:S92M+DIRY.GI.Y*<N
M3MRE*4I*U>2IKF^:E*E)6YJ\E2E*;6%I;C0N;PUG<F%P:&EC<RYO#6]B:F5C
M=',N;PUM=7-I8RYO#4E"551)3TX@24Y#3%5$24Y'(@!9#'8"F2)#3TU03$54
M12!33U520T4@04Y$($1/0U5-14Y4051)3TXN(@```)RW-?=RWY?.2G)<M]G/
MDIRW>DISW6=9SW3>Z6924IN5:MM2LYE+.Y*DJ2G[?*57S?U3Y*DE[G)<^2IV
MFY[G)DJ29]FY_ISEF2G9<YSW>>YV76=ESWRDN6924KM5:2U2LYE):Y)>I\G/
M?-\Y*<N2G;<]^99E)2JV5K-E*TN2G+DZ>D[DIRY.W*4I2DK5Y*FN;YJ4J4E;
MFKR5*4H`<"HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!-
M04E.-"Y3#2H-*J!T2$E3H$E3H%1(1:!-04E.H%!!4E2@3T:@5$A%H$-/1$6@
M1D]2H%1(1:`T2Z!$14U/H$-/3E1%4U0N#2J@:52@24Y)5$E!3$E:15.@5$A%
MH%9!4DE/55.@5$%"3$53H$%.1*!#3TY404E.4Z!42$6@34%)3@TJH$Q/3U`L
MH$%3H%=%3$R@05.@5$A%H%)/5$%424].H$%.1*!04D]*14-424].H%)/551)
M3D53+@TJ#2J@<U1%4$A%3J!L+J!J541$H#8O-"\Y-@TJH'=2251414Z@24Z@
M0:!015))3T2@3T:@0T]/3$E.1Z!/1D:@1E)/3:!P2&2@<55!3$E&24524PTJ
MH$9/55*@1$%94Z!!1E1%4J!42$6@455!3%,LH$].H&I53D6@-"Z@H&9/55*@
M1$%94Z!/1@TJH$-/1$E.1RX-#2!D<VL@(DU!24XT(@T-(')E;`T-9')A=R!E
M>'0@.V585$523D%,H%!23T-%1%5215,-9FEL;"!E>'0-<W!L870@97AT#7-Y
M;6T@97AT#61E9F]B<R!E>'0-;75S:6YI="!E>'0-#2J@=T521:!IH$Y/5*!3
M3Z!,05I9H%!%4DA!4%.@04Q,H%9!4DE!0DQ%4Z!#3U5,1*!"1:!0550-*J!)
M3E1/H$%.H$E.0TQ51$6@1DE,12X-#2J@8T].4U1!3E13#0UB=69F,2!E<74@
M)#,P,#`@.V9)4E-4H$-(05)!0U1%4J!3150-8G5F9C(@97%U("0S.#`P(#MS
M14-/3D2@0TA!4D%#5$52H%-%5`T-<VEN=&%B(&5Q=2`D,&8P,"`[=$%"3$6@
M3T:@4TE.15,LH%))1TA4H$)%3$]7H%53#6AI<VEN(&5Q=2`D-C`@.W-)3J!4
M04),1:!#55)214Y43%F@4U1!4E13H$%4H"0V,#`P#7!A='1E<FXQ(&5Q=2`D
M8S$P,"`[=$%"3$6@3T:@4$%45$523E.@5$^@1DE,3*!7251(#7!A='1E<FXR
M(&5Q=2`D8S$X,`UM=7-T86)S(&5Q=2`D8S(P,"`[;55324.@4D]55$E.1:!5
M4T53H"1C,C`P+21C,V9F#6]B;&ES='<@97%U("1C-#`P(#MT2$6@04-454%,
MH$]"2D5#5*!03TE.5%,-;V)L:7-T>"!E<74@)&,T.#`-;V)L:7-T>2!E<74@
M)&,U,#`-;V)L:7-T>B!E<74@)&,U.#`-<&QI<W1W(&5Q=2`D8S8P,"`[;$E3
M5*!/1J!23U1!5$5$*U!23TI%0U1%1*!03TE.5%,-<&QI<W1X(&5Q=2`D8S8X
M,`UP;&ES='D@97%U("1C-S`P#7!L:7-T>B!E<74@)&,W.#`-8FET<"!E<74@
M)&,X,#`@.V))5*!404),1:!&3U*@3$E.1:!23U5424Y%#6QO-#`@97%U("1C
M.3`P(#MT04),15.@3T:@-#`J6"\X#6AI-#`@97%U("1C.3@P(#MT3Z!,3T-!
M5$6@3T9&4T54H$E.5$^@0E5&1D52#6QO.38@97%U("1C83`P(#M&3U*@0:!'
M259%3J!#3TQ534X-:&DY-B!E<74@)&-A.#`-<F5V;&ES="!E<74@)&-B,#`@
M.W53142@0EF@4UE-34544EF@4D]55$E.10UC;VYL:7-T,2!E<74@)&-C,#`@
M.V9)4E-4H%!/24Y4H$E.H$-/3DY%0U1)3TZ@3$E35`UC;VYL:7-T,B!E<74@
M)&-D,#`@.W-%0T].1*!03TE.5*!)3J!#3TY.14-424].H$Q)4U0-9')A=V-O
M;B!E<74@)&-E,#`@.VQ)4U2@3T:@0T].3D5#5$E/3J!)3D1)0T53#6-O;F9L
M86<@97%U("1C9C`P(#MF3$%'4Z!43Z!+1450H$923TV@4D5$4D%724Y'H%-4
M549&#0US8W)N;&]C(&5Q=2`Q,#(T(#MW2$521:!)4Z!42$6@4T-2145.H$Q/
M0T%4140_#0TJH'9I8PT-=FUC<V(@97%U("1D,#$X#6)K9VYD(&5Q=2`D9#`R
M,`UB;W)D97(@97%U("1D,#(Q#0TJH&M%4DY!3`T-8VEN="!E<74@)&9F.#$-
M:6]I;FET(&5Q=2`D9F8X-`UC:')O=70@97%U("1F9F0R#7-C;FME>2!E<74@
M)&9F.68-9V5T:6X@97%U("1F9F4T#0TJH'-/346@5D%224%"3$53#0UM=7-V
M87)S(&5Q=2`D,#,@.VQ/0T%424].4Z`D,#,M)#!DH$%21:!54T5$H$)9#2`[
M5$A%H$U54TE#H%)/551)3D4N#0US:6XQ(&5Q=2`D-3<@.W!/24Y415)3H%1/
MH%-)3D6@04Y$H$-/4TE.10UC;W,Q(&5Q=2`D-3D@.U1!0DQ%4RX-<VEN,B!E
M<74@)#5B#6-O<S(@97%U("0U9`UP<F]J=&%B(&5Q=2`D-68@.W!/24Y415*@
M5$^@4%)/2D5#5$E/3J!404),15,-#6-O;'-T97`@/2`D-3$@.VQ)3D53.J!H
M3U>@34%.6:!"651%4Z!015*@0T],#6-O=6YT<'1S(#T@)#4R#7=X:6YC(#T@
M)#4S#7AY:6YC(#T@)#4T#7EZ:6YC(#T@)#4U#7AZ:6YC(#T@)#4V#7-W>"`]
M("0V,PUS>'D@/2`D-C0@.W1(15-%H$%21:!42$6@04Y'3$53H%53142@0ED-
M<WEZ(#T@)#8U(#MR;W1P<F]J#7-X>B`]("0V-@T-9'@@97%U("0V-PUD>2!E
M<74@)#8X#0UN=6UT;W)O="!E<74@)#8Y(#MN54U"15*@3T:@4$])3E13H%1/
MH%)/5$%41:!)3J!R;W1P<F]J#0UP;VEN=#$@97%U("0V82`[<T]-1:!34$%2
M1:!03TE.5$524PUP;VEN=#(@97%U("0V8PUS8W)E96YP(&5Q=2`D-F4@.W!/
M24Y415*@55-%1*!"6:!30U)%14Z@4$Q/5%1%4@UC;VQO<G`@97%U("0W,"`[
M4$])3E1%4J!)3E1/H$-/3$]2H')A;0UC;VQO<B!E<74@)#<R(#MC3TQ/4J!4
M3Z!35$]21:!)3J!#3TQ/4J!R86T-#6YU;7-I9&4@97%U("0X8B`[(Z!/1J!#
M2$%24Z!015*@4TE$1:!/1J!3455!4D4-#6)U9F9E<B!E<74@)&$S(#MP3TE.
M5$52H%1/H$1205=)3D>@0E5&1D52#0UN=6UO8C$@97%U("1A-2`[;E5-0D52
MH$]&H%!/24Y44Z!)3J!/0DI%0U2@,0UN=6UO8C$R(&5Q=2`D838-=&]T;G5M
M(&5Q=2`D83<@.W1/5$%,H$Y534)%4J!/1J!03TE.5%.@24Z@3$E35`UO9F9S
M970@97%U("1A."`[;T9&4T54H$E.5$^@1U))1`UN=6UC;VYS(&5Q=2`D83D@
M.W1/5$%,H$Y534)%4J!/1J!#3TY.14-424].4PT-8V]U;G0@97%U("1A82`[
M8:!#3U5.5$52#7-T87)C:&%R(&5Q=2`D86(@.V)!4TE#04Q,6:!-14%355)%
M4Z!72$E#2*!/0DI%0U0-(#M71:!!4D6@3TX-<F%N9&]M(&5Q=2`D86,@.W53
M142@0EF@9V5T<F%N9*`H5%=/H$)95$53*0UO;&1C;VP@97%U("1A90UC;W5N
M=#-D(&5Q=2`D868@.V%.3U1(15*@0T]53E1%4@UI;6]N;V(@97%U("1B,"`[
M:2=-H$].H$]"2D5#5*!.54U"15(N+BX-#61O='1E9"!E<74@)&(Q(#MF3$%'
MH$9/4J!$3U14142@3$E.15,N#61O=&9L86<@97%U("1B,B`[9DQ!1Z!43Z!$
M4D%7H$]2H$Y/5*!$4D%7#2`[1$]45$5$H$Q)3D53+@T->#$@97%U("1F8B`[
M<$])3E13H$9/4J!$4D%724Y'H$&@3$E.10UY,2!E<74@)&9C(#MT2$531:!:
M15)/H%!!1T6@041$4D534T53#7@R(&5Q=2`D9F0@.T1/3B=4H$-/3D9,24-4
MH%=)5$B@8F%S:6,->3(@97%U("1F90UO;&1X(&5Q=2`D9F0-8VAU;FL@97%U
M("1F90UT96UP,2!E<74@)&9B(#MO1J!#3U524T4LH$-/54Q$H$-/3D9,24-4
MH%=)5$B@6#$-=&5M<#(@97%U("1F8R`[=$5-4$]205)9H%9!4DE!0DQ%4PUZ
M=&5M<"!E<74@)#`R(#MU4T5$H$9/4J!"549&15*@4U=!4"Z@H&1/3B=4H%1/
M54-(+@UA8V,@97%U("0R,B`[=5-%1*!"6:!-051(H%)/551)3D4-875X(&5Q
M=2`D,C0-97AT(&5Q=2`D,C8-#2HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM#2H-*J!T2$6@3T)315)6051)3TZ@25.@5$A!5*!!1E1%4J!!H')S
M+W)E<W1O<F6@04Y$H'-Y<PTJH%1(1:!04D]'4D%-H%=/4DM3H$9)3D4NH*!T
M2$E3H%!!4E2@5$A%4D5&3U)%H%)%1$E214-44PTJH%1(1:!B87-I8Z!614-4
M3U*@5$^@5$A%H%!23T=204V@04Y$H$-!3$Q3H%1(1:!B<FN@4D]55$E.12X-
M#2!L9&$@(SQS=&%R=`T@<W1A("0P,S`R#2!L9&$@(SYS=&%R=`T@<W1A("0P
M,S`S#2!J;7`@)&9E-C8@.W=!4DV@4U1!4E2@4D]55$E.12X-#7-T87)T(&5N
M="`[<U1!4E1)3D>@041$4D534Z!/1J!04D]'4D%-#2!L9&$@(R0S-@T@<W1A
M("0P,2`[8F%S:6.@1T]%4Z!/550-#2J@;&1AH'9M8W-B#2J@86YDH",E,#`P
M,#$Q,3&@.W-#4D5%3J!-14U/4EF@5$^@,3`R-`TJH&]R8:`C)3`P,#$P,#`P
M#2J@;&1AH'9M8W-B#2J@86YDH",E,3$Q,3`P,#&@.W-405)4H$A%4D6@4T^@
M5$A!5*!35T%0H$)51D9%4E,-*J!O<F&@(R4P,#`P,3$Q,*`[5TE,3*!73U)+
MH%))1TA4#2J@<W1AH'9M8W-B#0T@;&1A(",E,#`P,3$Q,3`@.V1/4DL-('-T
M82!V;6-S8@T-('-E:0T@:G-R(&UU<VEN:70@.VE.251)04Q)6D6@355324,-
M(&-L:2`[<U1!4E2@55"@355324,-#2HJ*BJ@8TQ%05*@4T-2145.H$%.1*!3
M152@55"@(D))5$U!4"(-<V5T=7`-#2J@;&1AH",\8G5F9C$-*J!S=&&@8G5F
M9F5R#2J@;&1AH",^8G5F9C$-*J!S=&&@8G5F9F5R*S$-*J!L9'F@(R0P,`TJ
MH&QD>*`C,3:@.V%34U5-24Y'H$)/5$B@0E5&1D524Z!!4D4-*J!L9&&@(R0P
M,*`[0D%#2RU43RU"04-+#2HZ8FQO;W"@<W1AH"AB=69F97(I+'D-*J!I;GD-
M*J!B;F6@.F)L;V]P#2J@:6YCH&)U9F9E<BLQ#2J@9&5X#2J@8FYEH#IB;&]O
M<`T-*BHJ*J!C3$5!4J!&4D].5*!"549&15*@1D]2H$-)4D-,1:!03$]45$52
MH%1(24Y'+@TJ#2J@;&1AH",^8G5F9C(-*J!S=&&@>G1E;7`-*J!J<W*@8VQR
M8G5F9@T-#2HJ*BJ@<T54H%50H$)51D9%4E,-#2J@;&1AH",\8G5F9C$-*J!S
M=&&@8G5F9F5R#2!L9&$@(SYB=69F,0TJH'-T8:!B=69F97(K,0T@<W1A('IT
M96UP(#M:5$5-4*!724Q,H$U!2T6@3$E&1:!324U03$6@1D]2H%53#0T@;&1A
M(",V#2!S=&$@8V]U;G0-#2!L9&$@(S`P#2!L9'@@(R0Q-0TZ;#$@<W1A("0U
M,2QX#2!D97@-(&)P;"`Z;#$-*J!S=&&@=WAI;F,-*J!S=&&@>'EI;F,-*J!S
M=&&@>7II;F,-*J!S=&&@>'II;F,-*J!S=&&@<W=X#2J@<W1AH'-X>0TJH'-T
M8:!S>7H-*J!S=&&@<WAZ#2!S=&$@)&0P,C`-('-T82!I;6]N;V(-#2J@;&1A
MH",P,*`[=5-%H%1(25.@0TA!4D%#5$52H%1/+BXN#2J@:G-RH&-L96%R<V5T
MH#MC3$5!4J!!3D2@4T54H%50H%-#4D5%3@T-#2HM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM#2J@<T54H%50H%1!0DQ%4PTJ#2J@=$A%H%!23T=2
M04V@15A014-44Z!!H%-)3D=,1:!324Y%H%1!0DQ%H$%4H"1C,#`P#2J@3T:@
M1BA8*3TV-"I324XH6"DK-C0LH%@],"XN,3(W#2H-*J!F25)35*!42$6@5$%"
M3$6@25.@15A414Y$142@0EF@,S*@0EE415.@5$^@1T5.15)!5$4-*J!!H%-)
M35!,1:!#3U-)3D6@5$%"3$6@*$-/4RA8*:`]H%-)3BA8*U!)+S(I*2X-*J!F
M4D]-H%1(25.@5$%"3$6@0:!315))15.@3T:@5$%"3$53H$E3H$-214%4140L
M#2J@1RA2+%@IH#V@4BI324XH6"DLH%9)0:!42$6@4D5,051)3TX-*J"@H*"@
MH*!'*%(L6"F@/:!2*D8H6"DO-C2@+:!2#2H-*J!M3U)%3U9%4BR@0:!04D]*
M14-424].H%1!0DQ%H$]&H$@H4BQ8*3U2*D0O*%HM6C`I#2J@25.@4U150TN@
M24Z@5$A%H%-!346@,C4V+4)95$6@0TA53DLN#0UT86)L97,-*J!S152@55"@
M8FET<*!404),1:!&3U*@3$E.1:!$4D%724Y'H%)/551)3D4N#6)I='!T86(-
M*J!L9'F@(S`P#2!T87D@.V&@0T].5$%)3E.@6D523PT@;&1A(",D9F8@.WE%
M4RR@::!214%,3%F@3D5%1*!42$%4H$)95$4A#3IL;V]P,R!S=&$@8FET<"QY
M#2!L<W(-(&)N92`Z8V]N=`T@;&1A(",D9F8-.F-O;G0@:6YY#2!B;F4@.FQO
M;W`S#0TJH'-%5*!54*!#3TQ534Z@24Y$15B@5$%"3$53H$9/4J!D<F%W#61R
M87=T86(-.FQO;W`@='EA#2!A;F0@(R1F.`T@<W1A(&%U>`T@;&1A(",U(#LT
M,"I8H$1)5J`X/34J6*!!3D2@)&8X#2!S=&$@86-C#2!J<W(@;75L=`T@<W1A
M(&AI-#`L>0T@;&1A(&%C8PT@<W1A(&QO-#`L>0T@;&1A(",Q,B`[;D]7H#DV
M*EB@1$E6H#@-('-T82!A8V,-(&IS<B!M=6QT#2!S=&$@:&DY-BQY#2!L9&$@
M86-C#2!S=&$@;&\Y-BQY#2!I;GD-(&)P;"`Z;&]O<`T-*J!S152@55"@5%))
M1Z!404),15,-#2!L9'D@(S,Q(#MF25)35*!%6%1%3D2@5$A%H%1!0DQ%#3IE
M>'1E;F0@;&1A('-I;G1A8BQY#2!S=&$@<VEN=&%B*S$R."QY#2!D97D-(&)P
M;"`Z97AT96YD#0T@;&1A(",S,@T@<W1A(&-O<S$-('-T82!C;W,R#2!L9&$@
M(S$R."LS,B`[.3:@14Y44DE%4Z!&3U*@6E1!0@T@<W1A('!R;VIT86(-(&QD
M82`C)#DP(#MS5$%25*!)3J!42$6@34E$1$Q%H$%.1`T@<W1A('-I;C$K,2`[
M34]61:!/551705)$4PT@<W1A('-I;C(K,0T@;&1A(",D,#`-('-T82!S:6XQ
M#2!S=&$@<VEN,@T-('1A>`TZ;&]O<#$@;&1Y(",P,`T@<W1X(&%U>`TZ;&]O
M<#(@;&1A('-I;G1A8BQY#2!S=&$@86-C#2!J<W(@;75L="`[84-#54U53$%4
M3U*@0T].5$%)3E.@2$DLH&%C8Z!,3PT@87-L(&%C8R`[;D585"R@1$E6241%
MH$)9H#8T#2!R;VP-(&%S;"!A8V,-(')O;`T@<V5C#2!S8F,@875X(#MA3D2@
M4U5"5%)!0U2@3T9&H%(-('-T82`H<VEN,2DL>2`[<U1/4D6@4$]3251)5D6@
M4J!)3J!43U"@2$%,1@T@96]R(",D9F8-(&-L8PT@861C(",D,#$-('-T82`H
M<VEN,BDL>2`[,B=3H$-/35!,14U%3E2@24Z@0D]45$]-H$A!3$8-(&EN>0T@
M8FYE(#IL;V]P,@T-*CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T-
M*@TJH'1(25.@4T]-15=(052@3D5!5*!42$E.1Z!-55-4H$)%H$-(3U!0142@
M3U54H%1/H$=%5`TJH%1(1:!42$E.1Z!43Z!#4E5.0TB@86YDH%)53J`Z*`TJ
M#2!D;R`P#0TZ=&5S="!L9&$@<VEN,2LQ(#MT15-4H%1(3U-%H%1!0DQ%4R$-
M('-T82!C;W,Q*S$@.V=%5*!!H%1!0DQ%H$]&H$-/4TE.15.@5$]/#3IC:7)C
M;&4-*J!L9&&@(S`P#2J@<W1AH&)U9F9E<@T@;&1A("AC;W,Q*2QY(#M8/5)#
M3U,H5"D-(&-L8PT@861C(",T."`[8T5.5$52H$E.H$&@.398.3:@1U))1`T@
M=&%X#2!L9&$@;&\Y-BQX(#MT15-4H$]55*!42$6@0T],54U.H$E.1$E#15,-
M('-T82!B=69F97(-(&QD82!H:3DV+'@-(&-L8PT@861C(",^8G5F9C(-('-T
M82!B=69F97(K,2`[;D]7H%=%)U)%H$E.H%1(1:!224=(5*!#3TQ534X-(&QD
M82`H<VEN,2DL>0T@8VQC#2!A9&,@(S0X#2!S='D@=&5M<#$-('1A>2`[63U2
M*E-)3BA4*0T@;&1A(&)I='`L>`T@;'-R(#MO3DQ9H%=!3E2@5$A%H$))5`T@
M96]R(&)I='`L>`T@;W)A("AB=69F97(I+'D-('-T82`H8G5F9F5R*2QY#2!L
M9'D@=&5M<#$-(&EN>0T@8G!L(#IC:7)C;&4-(&9I;@TJ/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/0T-(&EN8R!S:6XQ*S$@.VU/5D6@5$^@5$A%
MH$Y%6%2@4$%'10T@9&5C('-I;C(K,0T@;&1X(&%U>`T@:6YX#2!C<'@@(S0Y
M(#MN3U1%H%1(052@5$A)4Z!/5D525U))5$53H$]224=)3D%,#2!B;F4@.FQO
M;W`Q(#M404),12$-#0TJ#2J@=%)9H%1(25.@2$521:!43Z!3146@24:@86)#
M4E5.0TB@5TE,3*!42$5.H%=/4DN@4DE'2%0N#2H-*J!S96D-*J!J<W*@;75S
M:6YI=*`[<U1!4E2@55"@355324,-*J!C;&D-#2H-*J!S152@55"@4D5615)3
M1:!404),12Z@H'1(25.@4T544Z!54*!!H%1!0DQ%H$]&H%)%5D524T5$#2J@
M0DE4H%!/4TE424].4RR@1D]2H%531:!)3J!2149,14-424Y'H$%.H$]"2D5#
M5*!42%)/54=(#2J@6#TP+@UR979S970-*J!YH$E3H%-%5*!43Z!:15)/H$%"
M3U9%#2J@;&1YH",P,`TZ8W)O=R!S='D@=&5M<#$-(&QD>"`C.`TZ<V5R=F\@
M;'-R('1E;7`Q#2!R;VP-(&1E>`T@8FYE(#IS97)V;PT@<W1A(')E=FQI<W0L
M>0T@:6YY#2!B;F4@.F-R;W<-#2H-*J!S152@55"@0U535$]-H$-(05)!0U1%
M4J!$051!#2H-(&QD>"`C,S$@.S2@0TA!4E.@*J`X#3IJ;V5L(&QD82!C:&%R
M9&%T+'@-('-T82`X*C(T-RMB=69F,2QX(#MC2$%24Z`R-#<M,C4PH$%21:!#
M55-43TT-('-T82`X*C(T-RMB=69F,BQX#2!E;W(@(R1F9@T@<W1A(#@J,C4Q
M*V)U9F8Q+'@@.U=)5$B@,C4Q+3(U-*!2159%4E-%1`T@<W1A(#@J,C4Q*V)U
M9F8R+'@-(&1E>"`[,C4UH$E3H$-,14%2H$-(05)!0U1%4@T@8G!L(#IJ;V5L
M#0TJ#2J@<T]25"U/1J!3145$H%1(1:!204Y$3TV@3E5-0D52H$=%3D52051/
M4@TJ#2J@;&1AH"1D8S`YH#MT;V2@4T5#3TY$4Z!214<-*J!S=&&@<F%N9&]M
M#0TJ#2J@:4Y)5$E!3$E:051)3TZ@1T])3D>@24Y43Z!42$6@34%)3J!,3T]0
M#2H-:6YI=&UA:6X-(&1E8R!I;6]N;V(-(&QD>"!I;6]N;V(-(&)P;"`Z8V]N
M=#`-(&QD>"`C,R`[=T6@05)%H$].H$]"2D5#5*`SH$Y/5PT@<W1X(&EM;VYO
M8@TJH'-%5*!54*!42$6@4$%45$523J!&24Q,H%1!0DQ%#2!L9'@@(S0P#3IC
M86UB;W0@='AA#2!A;F0@(R0P-R`[34]$54Q/+3@-('1A>0T@;&1A(#(U,BHX
M*V)U9F8Q+'D-('-T82!P871T97)N,2QX#2!L9&$@,C4T*C@K8G5F9C$L>0T@
M<W1A('!A='1E<FXR+'@-(&1E>`T@8G!L(#IC86UB;W0-(&QD82`C,C4Q(#MF
M24Q,H$-(05(-(&)N92`Z9&]N90T-.F-O;G0P(#MC<'B@(S`PH#MO0DI%0U2@
M,#\-(&)N92`Z8V]N=#$-(&QD>"`C-#`-.F9R86YK('1X80T@86YD(",D,#<@
M.TU/1%5,3RTX#2!T87D-(&QD82`R-#<J."MB=69F,2QY#2!S=&$@<&%T=&5R
M;C$L>`T@;&1A(#(T."HX*V)U9F8Q+'D-('-T82!P871T97)N,BQX#2!D97@-
M(&)P;"`Z9G)A;FL-(&QD82`C,C4S(#MF24Q,H$-(05(-(&)N92`Z9&]N90T-
M.F-O;G0Q(&-P>"`C,#$@.V]"2D5#5*`Q/PT@8FYE(#IC;VYT,@T@;&1X(",T
M,`TZ8VQA>71O;B!T>&$-(&%N9"`C)#`W(#M-3T153$\M.`T@=&%Y#2!L9&$@
M,C4Q*C@K8G5F9C$L>0T@<W1A('!A='1E<FXQ+'@-(&QD82`R-#DJ."MB=69F
M,2QY#2!S=&$@<&%T=&5R;C(L>`T@9&5X#2!B<&P@.F-L87ET;VX-(&QD82`C
M,C0W(#MF24Q,H$-(05(-(&)N92`Z9&]N90T-.F-O;G0R(&QD>"`C-#`-.FUI
M:V4@='AA#2!A;F0@(R0P-R`[34]$54Q/+3@-('1A>0T@;&1A(#(U-"HX*V)U
M9F8Q+'D-('-T82!P871T97)N,2QX#2!L9&$@,C0X*C@K8G5F9C$L>0T@<W1A
M('!A='1E<FXR+'@-(&1E>`T@8G!L(#IM:6ME#2!L9&$@(S(U,"`[9DE,3*!#
M2$%2#3ID;VYE(&IS<B!C;&5A<G-E=`T-*@TJH'1(25.@1U59H$-,14%24Z!4
M2$6@3T)*14-4H$Q)4U13+@TJ#2!L9'@@(S`P#2!T>&$-.FQO<"!S=&$@;V)L
M:7-T=RQX#2!S=&$@;V)L:7-T>2QX#2!I;G@-(&)N92`Z;&]P#2!S=&$@;VQD
M8V]L#2!S=&$@8V]U;G0S9`T@<W1A(&1O=&9L86<@.V1205>@1$]45$5$H$Q)
M3D53#2!B97$@9&]N96ME>2`[<TM)4*!+15E04D534Z!214%$H%1(1:!&25)3
M5*!424U%#2`[5$A23U5'2"R@4T^@5T6@1$].)U2@1T54H$1/54),10T@.TM%
M65!215-315.@0EF@04-#241%3E0N#0TJ+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+0TJH&U!24Z@3$]/4`T-*BHJ*J!F25)35"R@5$A%H'-U<&5R
MH'-E8W)E=*!#2$%204-415)3#6UA:6X-:W!R97-S(&IS<B!S8VYK97D-(&QD
M82`D8V(-(&-M<"`C,3$@.S2@1T]%4Z!)3E1/H%154D)/H$U/1$4-(&)N92`Z
M9C0-(&QD>"`C)&9D#2!S='@@>'EI;F,-(&QD>"`C)#`T#2!S='@@>'II;F,-
M.F8T(&-M<"`C-2`[9C2@*$]2H&8S*:!'3T53H$E.5$^@-&2@34]$10T@8FYE
M(#ID#2!L9&$@(S`R#2!S=&$@=WAI;F,-(&QD82`C,#`-('-T82!X>6EN8PT@
M<W1A('EZ:6YC#2!S=&$@>'II;F,-.F0@8VUP(",Q."`[9*!'3T53H$E.5$^@
M3D]234%,H$U/1$4-(&)N92`Z9&]T#2!L9'@@(R1F9@T@<W1X('AY:6YC#2!L
M9'@@(S`Q#2!S='@@=WAI;F,-('-T>"!Y>FEN8PT@:6YX#2!S='@@>'II;F,-
M.F1O="!C;7`@(S0T(#LT-"R@5$A%H$1/5"R@5$]'1TQ%4Z!$3U14142@3$E.
M15,-(&)N92`Z,V0-(&QD82!D;W1F;&%G#2!E;W(@(R0P,0T@<W1A(&1O=&9L
M86<-.C-D(&-M<"`C-C,@.W)U;B]S=&]PH$=/15.@24Y43Z`S9*!-3T1%#2!B
M;F4@.G-P86-E#2!L9'@@(S`P#2!S='@@=WAI;F,-('-T>"!X>6EN8R`[=$A)
M4Z!43Z!&4D5%6D6@4U!,051424Y'#2J@<W1XH'EZ:6YC#2J@<W1XH'AZ:6YC
M#3IS<&%C92!C;7`@(S8P(#MS4$%#1:!!1%9!3D-%4Z!43Z!42$6@3D585*!/
M0DI%0U0-(&)N92`Z8V]N=`T@:FUP(&EN:71M86EN#3IC;VYT#61O;F5K97D-
M#2HJ*BJ@8TQ%05*@0E5&1D52#6-L<F)U9F8-(&QD82!Z=&5M<"`[:$E'2*!"
M651%#2!S=&$@8G5F9F5R*S$-(&QD82`C,#`-('-T82!B=69F97(-#6-L<F1R
M87<@;&1X(",P-B`[9$].)U2@3D5%1*!43Z!#3$5!4J!72$],1:!42$E.1PTJ
MH&QD8:`C,#`-.F9O;VP@;&1Y(",P,`TZ9&]P92!S=&$@*&)U9F9E<BDL>0T@
M:6YY#2!B;F4@.F1O<&4-(&EN8R!B=69F97(K,0T@9&5X#2!B;F4@.F9O;VP-
M#2HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!U4$1!5$6@
M04Y'3$53#0UU<&1A=&4@;&1A('-W>`T@8VQC#2!A9&,@=WAI;F,-(&%N9"`C
M)#=F#2!S=&$@<W=X#2!L9&$@<WAY#2!C;&,-(&%D8R!X>6EN8PT@86YD(",D
M-V8-('-T82!S>'D-(&QD82!S>7H-(&-L8PT@861C('EZ:6YC#2!A;F0@(R0W
M9@T@<W1A('-Y>@T@;&1A('-X>@T@8VQC#2!A9&,@>'II;F,-(&%N9"`C)#=F
M#2!S=&$@<WAZ#0T@;&1A('AY:6YC(#MM05E"1:!IH$1/3B=4H%=!3E2@5$^@
M4U!,050-(&)E<2`Z8V]N=`T@9&5C(&-O=6YT(#MI4Z!)5*!424U%H%1/H%-0
M3$%4H$%.H$]"2D5#5`T@8FYE(#IC;VYT(#M/3J!42$5213\-(&QD82`C.`T@
M<W1A(&-O=6YT#2!L9&$@(S4-('-T82!N=6US:61E#3IO;W!S(&IS<B!G971R
M86YD(#MG152@0:!204Y$3TU)4TB@3E5-0D52#2!A;F0@(R0P9@T@8VUP(",V
M(#MD3TXG5*!704Y4H$)!0TM'4D]53D2@0T],3U(A#2!B97$@.F]O<',-('-T
M82!C;VQO<@T@;&1A(&]L9&-O;"`[841604Y#1:!#3TQ534X-(&-L8PT@861C
M(",P-@T@8VUP(",T,`T@8F-C(#IO:PT@<V)C(",T,`TZ;VL@=&%X#2!S=&$@
M;VQD8V]L#2!J<W(@9V5T<F%N9`T@86YD(",R,@T@=&%Y(#MR3U<-(&QD82!S
M=&%R8VAA<@T@8FYE(#IO;G=A<F1S#2!L9&$@(S(T-"`[,C0T+3(U/3(Q.0TZ
M;VYW87)D<R!S96,-('-B8R`C,C4-(&)M:2`Z<F5A9'D@.VA)5*`Q,3F@04Y$
MH%=%)U)%H$1/3D4-(&1E8R!C;W5N=#-D(#MIH%=!3E2@-Z`S9*!/0DI%0U13
MH$9/4J!%5D5260T@8FUI(#IN;W<T9"`[-&2@3T)*14-4H"@XH%1/5$%,+*!,
M3T]+4Z!"151415(I#2!L9&$@(S$Y-`T@8FYE(#IR96%D>0TZ;F]W-&0-(&EN
M8R!C;W5N=#-D#2!I;F,@8V]U;G0S9`T@;&1A(",Q,@T@<W1A(&YU;7-I9&4-
M(&QD82`C,#`-.G)E861Y('-T82!S=&%R8VAA<@T@:G-R('-P;&%T#3IC;VYT
M#2!L9&$@;V)L:7-T=PT@8VUP(",R-"`[8TA%0TN@24:@3T)*14-4H$E3H$%,
M3*!3152@55`-(&)C<R!R;W1A=&4-(&IS<B!D969O8G,@.W-%5*!54*!/0DI%
M0U13#0TJ+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0TJ#2J@<D]4
M051%H$%.1*!04D]*14-4H%!/24Y44PTJ#2J@=$A%4D6@25.@2E535*!/3D6@
M3$].1Z!,25-4H$]&H%!/24Y44RR@0E54H&F@5T%.5`TJH%1/H$)%H$%"3$6@
M5$^@4D]4051%H$]"2D5#5%.@24Y$259)1%5!3$Q9+*!33Z!71:!.145$#2J@
M5$^@0D6@0T%214953"X-*@TJH'1(1:!23U1!5$E/3J!354)23U5424Y%H%=)
M3$R@3D5%1*!!H%!/24Y415*@24Z@>*!!3D2@00TJH$-/54Y415*@4T54H%50
MH$)9H%1(1:!#04Q,24Y'H%)/551)3D4LH%1(1:!03TE.5$52H'@-*J!)4Z!!
M3J!)3D1%6*!43Z!42$6@3$E35*!/1J!03TE.5%.@5$^@0D6@4D]4051%1"R@
M04Y$H%1(10TJH$-/54Y415*@5$5,3%.@252@2$]7H$U!3EF@4$])3E13H%1/
MH%)/5$%41:!54TE.1PTJH%1(1:!!3D=,15.@4U=8+%-862Q365HL4UA:+$54
M0Z!72$E#2*!-05F@5$A54Z!"1:!#2$%.1T5$#2J@24Y$15!%3D1%3E1,62Z@
MH"AIH$1/H$Y/5*!!3E1)0TE0051%H$A!5DE.1Z!-3U)%H%1(04X-*J`R-3:@
M4$])3E13(2D-#7)O=&%T90T-(&QD82!N=6UO8C$@.VY534)%4J!/1J!03TE.
M5%.@24Z@4%))34%260T@<W1A(&YU;71O<F]T#2!L9&$@(S0X#2!S=&$@;V9F
M<V5T#2!L9'@@(S`P#0T@:G-R(')O='!R;VH-#2!L9&$@;G5M;V(Q,B`[;E5-
M0D52H$]&H%!/24Y44Z!)3J!314-/3D1!4ED-('-T82!N=6UT;W)O=`T@;&1A
M(",R,`T@<W1A(&]F9G-E=`T@;&1A('-W>"`[>D523Z!/552@5$A%H%@TH%)/
M5$%424].4PT@<&AA#2!L9&$@(S`P#2!S=&$@<W=X#2!J<W(@<F]T<')O:B`[
M:T5%4*!XH%=(15)%H$E4H$E3#2!P;&$-('-T82!S=W@-#2!L9'@@;G5M8V]N
M<R`[;E5-0D52H$]&H$-/3DY%0U1)3TY3#2!L9&$@(S`P#3IC;"!S=&$@8V]N
M9FQA9RQX(#MR15-%5*!42$6@1%)!5Z!&3$%'4PT@9&5X#2!B;F4@.F-L#2!S
M=&$@8V]N9FQA9PT-(&QD82`C.38-('-T82!C;VQS=&5P(#MN54U"15*@3T:@
M0EE415.@4$52H$-/3%5-3@T-*J!T2$6@1%)!5TE.1Z!23U5424Y%H%=/4DM3
MH$%3H$9/3$Q/5U,ZH$-/3DY%0U1)3TY3#2J@1E)/3:!42$6@0T].3D5#5$E/
M3J!,25-4H$%21:!354-#15-3259%3%F@4D5!1*!)3J!!3D0-*J!*3TE.140L
MH%5.5$E,H$&@6D523Z!)4Z!(250NH*!T2$6@3D585*!03TE.5*!)4Z!42$5.
M#2J@4D5!1*!)3J!!4Z!!H$Y/4DU!3*!)3D1%6"Z@H&E&H%I%4D\LH%1(14Z@
M5T6@05)%H$1/3D4L#2J@3U1(15)725-%H%1(25.@3D]234%,H$E3H$-(14-+
M142@5$^@4T5%H$E&H%1(1:!&04-%#2J@25.@5DE324),12Z@H&E&H$Y/5*!4
M2$5.H$E4H%-+25!3H%1/H%1(1:!.15A4H%!/24Y4+`TJH$]42$525TE31:!)
M5*!$3T53H%1(1:!$4D%724Y'H%1(24Y'H$%"3U9%+@TJ#2J@85.@14%#2*!#
M3TY.14-424].H$E3H$1205=.H$&@0T]24D534$].1$E.1Z!&3$%'H$E3#2J@
M4T54H$E.H$&@4TE-24Q!4J!#3TY.14-424].H$Q)4U0NH*!T2$E3H%=!62R@
M0T].3D5#5$E/3E,-*J!32$%2142@0D545T5%3J!625-)0DQ%H$9!0T53H$1/
MH$Y/5*!.145$H%1/H$)%H$1205=.H%1724-%+@T-.F-H87)G92!L9'D@(S`P
M#2!L9&$@9')A=V-O;B`[94E42$52H#"@3U*@0T]53$2@0D6@)#@P#2!S=&$@
M9&]T=&5D(#MZ15)/H$]55*!$3U14142@1DQ!1PTZ;&]O<#(@<W1Y(&%U>"`[
M;D5%1*!43Z!S='F@04Y95T%94PT@87-L(#MP24-+H$]&1J!42$6@9&]T=&5D
MH$9,04<-(')O;"!D;W1T960@.V1O='1E9*!724Q,H$)%H#`PH$]2H#`Q#2!L
M<W(@.W)%4U1/4D6@5$^@04-454%,H$E.1$58#2!T87D-(&QD82!C;VYF;&%G
M+'D@.VA!5D6@5T6@04Q214%$6:!$4D%73J!42$E3H$-/3DY%0U1)3TX_#2!B
M;F4@.FYO9')A=R`[:4:@4T\LH%1(14Z@1$].)U2@1%)!5Z!)5*!!1T%)3B$-
M(&]R82`C,#$-('-T82!C;VYF;&%G+'D-(&QD82!C;VYL:7-T,2QY("`[9DE2
M4U2@4$])3E2@5$^@0T].3D5#5`T@=&%X#2!L9&$@<&QI<W1X+'@-('-T82!X
M,0T@;&1A('!L:7-T>2QX#2!S=&$@>3$-(&QD82!C;VYL:7-T,BQY(#MP3TE.
M5*!43Z!#3TY.14-4H$E4H%1/#2!T87@-(&QD82!P;&ES='@L>`T@<W1A('@R
M#2!L9&$@<&QI<W1Y+'@-('-T82!Y,@T@;&1A(&1O='1E9`T@86YD(&1O=&9L
M86<@.V%21:!71:!$4D%724Y'H$1/5%1%1*!,24Y%4S\-(&)N92`Z;F]D<F%W
M(#MD;W1F;&%G/3&@345!3E.@1$].)U2@1%)!5PT@:G-R(&1R87<-.FYO9')A
M=R!L9'D@875X#2!I;GD-(&QD82`C,#`-('-T82!D;W1T960@.VU!2T6@252@
M6D523Z!)3J!#05-%H$E4H%=!4TXG5`T@;&1A(&1R87=C;VXL>2`[;$E35*!/
M1J!#3TY.14-424].H$E.1$E#15,-(&)N92`Z;&]O<#(-.F1O;F4-(&QD82`C
M-#`@.W-(2494H%1/H#58-:!'55D-('-T82!C;VQS=&5P#2!L<W(-('-T82!O
M9F9S970-#3IN97AT(&EN>0T@;&1A(&1R87=C;VXL>2`[9U)!0J!.15A4H$Y/
M4DU!3`T@8F5Q(#IA;&QD;VYE(#MI1J!:15)/+*!42$5.H$%,3*!$3TY%#2!T
M87@-(&QD82!P;&ES='HL>"`[;U1(15)725-%+*!#2$5#2Z!)1J!625-)0DQ%
M#2!C;7`@(S`S(#M%6%!%4DE-14Y404Q,6:!/0E1!24Y%1`T@8FUI(#IS:VEP
M(#MI1J!.3U0LH%1(14Z@1T^@5$^@3D585*!03TE.5`T@:6YY#2!L9&$@9')A
M=V-O;BQY(#MI1J!33RR@5$A%3J!$4D%7H$E4(0T@8FYE(#IL;V]P,@T-.G-K
M:7`@:6YY#2!L9&$@9')A=V-O;BQY#2!B;F4@.G-K:7`-(&)E<2`Z;F5X=`T-
M.F%L;&1O;F4-#2!J<W(@9FEL;"`[9DE,3*!)3J!42$6@-5@UH#-DH$]"2D5#
M5`T@.T%4H&)U9F9E<BLD,#0X,`T@:G-R('-Y;6T@.V9)3$R@3U54H%1(1:!3
M64U-151262U214Q!5$5$H$]"2E,-#0UO8FID;VYE#2HJH'=!252@1D]2H%)!
M4U1%4J!2149215-(#2HZ=V%I=*!L9&&@)&0P,3(-*J!B;F6@.G=A:70-#2HJ
M*BJ@<U=!4*!"549&15)3#0US=V%P8G5F(&QD82!V;6-S8@T@96]R(",D,#(@
M.W!215146:!44DE#2UDLH$5(/PT@<W1A('9M8W-B#2!L9&$@(R0P.`T@96]R
M('IT96UP(#M:5$5-4#U(24=(H$)95$6@2E535*!&3$E04PT@<W1A('IT96UP
M(#M"1517145.H"0S,*!!3D2@)#,X#0T@:FUP(&UA:6X@.V%23U5.1*!!3D2@
M05)/54Y$H%=%H$=/+BXN#0TJ+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+0TJ*J!R3U1!5$4LH%!23TI%0U0LH$%.1*!35$]21:!42$6@4$])3E13
M#2H-*J!T2$E3H$=56:!324U03%F@1T]%4Z!$3U=.H%1(1:!03TE.5*!,25-4
M+*!23U1!5$E.1Z!!3D0-*J!04D]*14-424Y'H%!/24Y44RZ@H&E4H$Y%1413
MH'B@4$%34T5$H$E.H$%3H$%.H$E.251)04P-*J!)3D1%6*!)3E1/H%1(1:!,
M25-4H$]&H%!/24Y44RR@04Y$H$E4H$%,4T^@3D5%1%.@00TJH$-/54Y415*@
M;G5M=&]R;W2@4T54H%50H$%(14%$H$]&H%1)344NH*!I5*!/3DQ9H%!23TI%
M0U13#2J@0:!#15)404E.H$Y534)%4J!/1J!03TE.5%.@4T^@5$A!5*!$249&
M15)%3E2@3T)*14-44PTJH$U!6:!"1:!-04Y)4%5,051%1*!$249&15)%3E1,
M62X-*@TJH&E4H$9)4E-4H%)/5$%415.@*#)D*:!)3J!42$6@5RU8H%!,04Y%
M+*!42$5.H%@M62R@5$A%3@TJH%DM6BR@04Y$H$9)3D%,3%F@6"U:+@TJH&E4
MH%1(14Z@4%)/2D5#5%.@5$A23U5'2*!42$6@3U))1TE.+*!&25)35*!)3E1/
MH%1(10TJH$A94$524$Q!3D6@5SU#3TY35"R@5$A%3J!)3E1/H%1(1:!03$%.
M1:!:/4-/3E-4+@TJH'1(14Z@5$A%H%!/24Y44Z!!4D6@4U1/4D5$H$%3H$%.
MH%@M6:!,25-4H$]&H$-/3U)$4RP-*J!7251(H$%.H$E.5$52345$24%41:!,
M25-4H$]&H%@M62U:H$-/3U)$4RR@4T^@00TJH$A)1$1%3J!&04-%H$Y/4DU!
M3*!#04Z@0D6@14%324Q9H$E-4$Q%345.5$5$+@TJ#2J@;D]41:!42$%4H&F@
M1$].)U2@5T]24EF@04)/552@1T545$E.1Z!324=.4Z!224=(5*!/4@TJH%1(
M24Y'H$Q)2T6@5$A!5*`M+:!IH$1/3B=4H$U)3D2@0:!2149,14-4142@4T],
M551)3TXN#2H-*J!N3U1%H%1(052@4$])3E13H$]224=)3D%41:!)3J!O8FQI
M<W2@04Y$H$5.1*!54*!)3@TJH'!L:7-T+@TJ#2J@;4E.2:!354)23U5424Y%
M.J!43Z!3059%H%-/346@4U!!0T4LH%1(1:!23U1!5$E/3@TJH%!!4E2@25.@
M4U5"0T].5%)!0U1%1*!/552@5$^@04Y/5$A%4J!,25143$6@4D]55$E.12P-
M*J!R;W0N#0UR;W1P<F]J#2!L9&$@;V)L:7-T=RQX#2!S=&$@=&5M<#$-(&QD
M82!O8FQI<W1X+'@-(&QD>2!S=W@-(&IS<B!R;W0@.V&@0T].5$%)3E.@=RR@
M5$5-4#&@>`T@<W1A('!L:7-T=RQX#2!L9&$@;V)L:7-T>2QX(#MN15A4+*!8
M60T@;&1Y('-X>0T@:G-R(')O=`T@<W1A('!L:7-T>"QX#2!L9&$@;V)L:7-T
M>BQX(#MU3D2@5DA9+5I%10T@;&1Y('-Y>@T@:G-R(')O=`T@<W1A('!L:7-T
M>2QX#2!L9'D@=&5M<#$@.U1%35`QH$A!4Z!23U1!5$5$H%H-(&QD82!P;&ES
M='@L>"`[;D5%1*!23U1!5$5$H%B@3D]7#2!S=&$@=&5M<#$-('1Y82`[8T]/
M4D1)3D%415.@1$^@3D]4H$-/34U55$4A#2!L9'D@<WAZ#2!J<W(@<F]T(#MN
M3U>@6%H-('-T82!P;&ES='@L>`T@;&1A('1E;7`Q#2!S=&$@<&QI<W1Z+'@@
M.VY/5Z!%5D5264].1:!32$]53$2@0D6@4D]4051%1`T-(&QD82!P;&ES='<L
M>"`[<T\LH$Q%5"=3H$=%5*!04D]*14-424Y'(0T@8VQC#2!A9&,@(S0X(#MD
M3TXG5*!&3U)'152@5$^@4TA)1E2@6B$-('1A>0T@;&1A('!L:7-T>"QX(#MF
M25)35*!)3E1/H%<]0T].4U0-(&-L8PT@861C("-H:7-I;BLT.`T@<W1A('!R
M;VIT86(K,0T@;&1A("AP<F]J=&%B*2QY#2!S=&$@<&QI<W1X+'@-(&QD82!P
M;&ES='DL>`T@8VQC#2!A9&,@(VAI<VEN*S0X#2!S=&$@<')O:G1A8BLQ#2!L
M9&$@*'!R;VIT86(I+'D-('-T82!P;&ES='DL>`T@;&1A('!L:7-T>BQX#2!C
M;&,-(&%D8R`C:&ES:6XK-#@-('-T82!P<F]J=&%B*S$-(&QD82`H<')O:G1A
M8BDL>0T@<W1A('!L:7-T>BQX#0T@8VQC#2!A9&,@(S0X#2!T87D@.VY/5Z!)
M3E1/H%H]0T].4U0-(&QD82!P;&ES='@L>`T@8VQC#2!A9&,@(VAI<VEN*S0X
M#2!S=&$@<')O:G1A8BLQ#2!L9&$@*'!R;VIT86(I+'D-(&-L8PT@861C(&]F
M9G-E=`T@8G!L(#IO:S(@.V=505)$H$%'04E.4U2@8V]M<&QE=&5L>:!44D%3
M2$E.1Z!-14T-(&QD82!O9F9S970@.V1/3B=4H$=)5D6@252@0:!#2$%.0T4-
M.F]K,B!S=&$@<&QI<W1X+'@-(&QD82!P;&ES='DL>`T@8VQC#2!A9&,@(VAI
M<VEN*S0X#2!S=&$@<')O:G1A8BLQ#2!L9&$@*'!R;VIT86(I+'D-(&-L8PT@
M861C(&]F9G-E=`T@8G!L(#IO:S,-(&QD82!O9F9S970@.WI!4*!)5*!43Z!4
M2$6@3U))1TE.#3IO:S,@<W1A('!L:7-T>2QX#0T@:6YX#2!D96,@;G5M=&]R
M;W0-(&)E<2`Z9&]N90T@:FUP(')O='!R;VH-.F1O;F4@<G1S#0TJ+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0TJH'-554)23U5424Y%H')O=`TJ
M#2J@=$A)4Z!,25143$6@1U59H$Y%1413H$%3H%-%5"U54*!414U0,3U8,:!!
M3D2@83U8,@TJH$%.1*!42$6@05!04D]04DE!5$6@04Y'3$6@3D5%1%.@5$^@
M0D6@4T54H%50H$E.H'DN#2J@=5!/3J!215154DXLH%)/5$%4142@6#*@25.@
M4U1/4D5$H$E.H%1%35`Q#2J@04Y$H%)/5$%4142@6#&@25.@24Z@80T-<F]T
M#2!C;&,@(#MN15A4+*!860T@861C("-H:7-I;BLT.`T@<W1A('-I;C(K,0T@
M<W1A(&-O<S(K,0T@;&1A('1E;7`Q#2!C;&,-(&%D8R`C:&ES:6XK-#@-('-T
M82!S:6XQ*S$-('-T82!C;W,Q*S$-(&QD82`H<VEN,2DL>0T@8VQC#2!A9&,@
M*&-O<S(I+'D-('-T82!T96UP,0T@;&1A("AC;W,Q*2QY#2!S96,-('-B8R`H
M<VEN,BDL>0T@<G1S#0TJ#2J@8VQE87)S970-*@TJH'1(25.@3$E45$Q%H%-5
M0E)/551)3D6@1DE,3%.@5$A%H%-#4D5%3J!7251(H%1(1:!#3TY414Y44PTJ
MH$]&H&&@04Y$H%!,04-%4Z!!H#$R6#$RH$-(05)!0U1%4J!"3$]#2Z!)3J!4
M2$6@34E$1$Q%#2J@3T:@5$A%H%-#4D5%3BR@24Z@041$251)3TZ@5$^@0TQ%
M05))3D>@5$A%H%-#4D5%3J!!3D0-*J!3151424Y'H%1(1:!"04-+1U)/54Y$
MH$-/3$]24RR@151#+@TJ#6-L96%R<V5T#2!P:&$-(&QD82`C)#`R(#MR140-
M('-T82`D9#`R,2`[=$A)4Z!)4Z!$3TY%H%-/H%1(052@3TQ$15(-(&QD82`C
M,C@-(&IS<B!C:')O=70@.RA.3U2@5$^@345.5$E/3J!.15=%4BD-(&QD82`C
M,30W(#M-04-(24Y%4Z!724Q,H%-%5*!54`T@:G-R(&-H<F]U=`T@;&1A(",V
M(#M#3U)214-43%D-('-T82`D9#`R,2`[*$%.1*!42$6@1DQ!4TB@3$]/2U.@
M0T]/3*!43T\I#0T@;&1X(",P,`T@<&QA(#MC55-43TV@0TA!4D%#5$52#3IG
M>7!S>2!S=&$@<V-R;FQO8RQX#2!S=&$@<V-R;FQO8RLR-38L>`T@<W1A('-C
M<FYL;V,K-3$R+'@-('-T82!S8W)N;&]C*S<V."QX#2!I;G@-(&)N92`Z9WEP
M<WD-#2!L9&$@(S<@.WE%3$Q/5PT@<W1A(&-O;&]R(#MT4EF@3U54H%1(052@
M4TY!6EI9H$Y%5Z!23U5424Y%#2!L9&$@(S$R#2!S=&$@;G5M<VED92`[,3*@
M0TA!4E.@4$52H%-)1$4-*J!L9&&@(S`PH#M35$%25*!#2$%2#2!T>&$-('-T
M82!S=&%R8VAA<@T@;&1X(",Q-"`[0T],#2!L9'D@(S4@.U)/5PT@:FUP('-P
M;&%T(#MS<&QA=*!724Q,H%)%5%523J!&3U*@55,-#2HM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!AH$1%4U1254-4259%H#A8.*`M/J`Q
M-J!"252@355,5$E03%F@4D]55$E.10TJ#2J@86-C*F%U>*`M/J!;86-C+$%#
M0U5-54Q!5$]27:`H3$]7+$A)*:`Q-J!"252@4D5354Q4#2J@875XH%)%34%)
M3E.@54Y#2$%.1T5$#0UM=6QT(&-L8PT@;&1A(",P,`T@;&1X(",D,#@-.FQO
M;W`@<F]R#2!R;W(@86-C#2!B8V,@.F-O;G0-(&-L8PT@861C(&%U>`TZ8V]N
M="!D97@-(&)P;"`Z;&]O<`TJH'-T8:!A=7@-(')T<PT-*BTM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2T-*@TJH&=E=')A;F0-*@TJH&=%3D52051%
MH$&@4T]-15=(052@4D%.1$]-H%)%4$5!5$E.1Z!315%514Y#12Z@H&F@55-%
M#2J@0:!465!)0T%,H$Q)3D5!4J!#3TY'4E5%3E1)04R@04Q'3U))5$A-#2J@
MH*"@H*!I*$XK,2F@/:`H:2A.*2I!H"N@0RF@34]$H$T-*J!7251(H$T]-C4U
M,S8LH$$]-2R@04Y$H$,],3,X-#&@*"0S-C$Q*2Z@H$.@5T%3H$-(3U-%3@TJ
MH%1/H$)%H$&@4%))346@3E5-0D52H$Y%05*@*#$O,J`MH#$O-J!345)4*#,I
M*2I-+@TJ#2J@;D]41:!42$%4H$E.H$=%3D5204R@5$A%H$A)1TA%4J!"2513
MH$%21:`B34]21:!204Y$3TTB#2J@5$A!3J!42$6@3$]715*@0DE44RR@4T^@
M1D]2H$E.4U1!3D-%H$E.H%1(25.@4%)/1U)!30TJH%-)3D-%H$].3%F@4TU!
M3$R@24Y414=%4E.@*#`N+C$U+*`P+BXS.2R@151#+BF@05)%H$1%4TE2140L
M#2J@5$A%6:!32$]53$2@0D6@5$%+14Z@1E)/3:!42$6@2$E'2*!"651%H')A
M;F1O;2LQ+*!72$E#2`TJH$E3H%)%5%523D5$H$E.H&$N#2H-9V5T<F%N9`T@
M;&1A(')A;F1O;2LQ#2!S=&$@=&5M<#$-(&QD82!R86YD;VT-(&%S;`T@<F]L
M('1E;7`Q#2!A<VP-(')O;"!T96UP,0TJH&%S;`TJH')O;*!T96UP,0TJH&%S
M;`TJH')O;*!T96UP,0T@8VQC#2!A9&,@<F%N9&]M#2!P:&$-(&QD82!T96UP
M,0T@861C(')A;F1O;2LQ#2!S=&$@<F%N9&]M*S$-('!L80T@861C(",D,3$-
M('-T82!R86YD;VT-(&QD82!R86YD;VTK,0T@861C(",D,S8-('-T82!R86YD
M;VTK,0T@<G1S#0TJ+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0TJ
M#2J@=$A)4Z!)4Z!33TU%H$-54U1/3:!#2$%204-415*@1$%403N@5$A%4T4-
M*J!715)%H%-43TQ%3J!&4D]-H'!/3%E'3TY!35DN#2H-8VAA<F1A=`UC<F]S
M<W-M(&AE>"`U-65E-35B8C4U964U-6)B#61I=&AE<C$@:&5X(&%A-35A834U
M86$U-6%A-34->FEG<R!H97@@965D9&)B-S=E961D8F(W-PUZ86=S(&AE>"`W
M-V)B9&1E93<W8F)D9&5E#6TK,2R@5TA)0T@-*J!)4Z!215154DY%1*!)3J!A
M+@TJ#6=E=')A;F0-(&QD82!R86YD;VTK,0T@<W1A('1E;7`Q#2!L9&$@<F%N
M9&]M#2!A<VP-(')O;"!T96UP,0T@87-L#2!R;VP@=&5M<#$-*J!A<VP-*J!R
M;VR@=&5M<#$-*J!A<VP-*J!R;VR@=&5M<#$-(&-L8PT@861C`'`J+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0TJ#2J@1U)!4$A)0U,N4PTJ#2J@
M=$A)4Z!)4Z!!H%-%5*!/1J!'4D%02$E#4Z!23U5424Y%4Z!&3U*@1$E--"R@
M1D]2H%5310TJH%=)5$B@;4523$E.H#$R."=3H$Q)3DM%4BX-*@TJH&-54E)%
M3E1,6:!)5*!#3TY404E.4Z!42$6@3$E.1:!$4D%724Y'H%)/551)3D4LH%1(
M10TJH$9)3$R@4D]55$E.12R@04Y$H$&@4D]55$E.1:!43Z!03$%#1:!"3$]#
M2U.@3T8-*J!'4D%02$E#4Z!#2$%204-415)3H$].H%1(1:!30U)%14XN#2H-
M*J!H25-43U)9.@TJH*!S;&J@H*"@-B\Y+SDVH*`M<U!,252@24Y43Z!214Q/
M0T%404),1:!,24Y+15*@1DE,10TJH*"@H*"@H*"@H*"@H*"@H*`M:4U03$5-
M14Y4142@34]$249)142@1DE,3*!23U5424Y%#2J@H*"@H*"@H*`V+S$PH*"@
MH"UP552@3TQ$H%)/551)3D6@0D%#2Z!)3J`Z*0TJH*"@H*"@H*"@H*"@H*"@
MH*`M<U150TN@24Z@34]$54Q%H%1/H$=%3D52051%H%-934U%5%))0Z!/0E,-
M*J"@H*"@H*"@H#8O,36@H*"@+69)6$5$H%50H%-934U%5%)9H%-/H%1(052@
M2$6@55-%4PTJH*"@H*"@H*"@H*"@H*"@H*"@4$%45$523E.@04Y$H%-50T@N
M#2J@H*"@H*"@H*`V+S$WH*"@H"UF25A%1*!54*!S<&QA="R@14Y(04Y#142@
M<WEM;:!0051415).4PTJH*"@H*"@H*"@-B\R,:"@H*`M9DE8142@55"@<W!L
M872@5$^@2T5%4*!&4D]-H%=2251)3D>@5$^@8VEA(0TJH*"@H*"@H*"@-B\R
M,J"@H*`M841$142@1$]45$5$H$Q)3D6@0T%004))3$E460T-(&1S:R`B1U)!
M4$A)0U,BH#MA4U-%34),1:!43Z!$25-+#0T@<F5L(#MR96Q/0T%404),10T-
M*J!C3TY35$%.5%,-#6)U9F8Q(&5Q=2`D,S`P,"`[;$]#051)3TY3H$]&H$12
M05=)3D>@0E5&1D524PUB=69F,B!E<74@)#,X,#`-8G5F9F5R,2!E<74@8G5F
M9C$K)#`T.#`@.V]&1E-%5*!43Z!314-/3D1!4EF@3T)*14-44PUB=69F97(R
M(&5Q=2!B=69F,BLD,#0X,`T-<&%T=&5R;C$@97%U("1C,3`P(#ML25-4H$]&
MH$9)3$R@4$%45$523@UP871T97)N,B!E<74@)&,Q.#`@.RA3152@55"@0EF@
M0T%,3$E.1Z!23U5424Y%*0UB:71P(&5Q=2`D8S@P,"`[8DE4H%1!0DQ%H$9/
M4J!,24Y%H%)/551)3D4-;&\T,"!E<74@)&,Y,#`@.W1!0DQ%4Z!/1J`T,"I8
M+S@-:&DT,"!E<74@)&,Y.#`@.W1/H$Q/0T%41:!/1D93152@24Y43Z!"549&
M15(-;&\Y-B!E<74@)&-A,#`@.T9/4J!!H$=)5D5.H$-/3%5-3@UH:3DV(&5Q
M=2`D8V$X,`UR979L:7-T(&5Q=2`D8V(P,"`[;$E35*!/1J!2149,14-4142@
M6`T-<V-R;FQO8R!E<74@,3`R-"`[=TA%4D6@25.@5$A%H%-#4D5%3J!,3T-!
M5$5$/PT-*J!S3TU%H%9!4DE!0DQ%4PT-8V]L<W1E<"`]("0U,2`[;$E.15,Z
MH&A/5Z!-04Y9H$)95$53H%!%4J!#3TP-8V]U;G1P=',@/2`D-3(-#6YU;6]B
M,2!E<74@)&$U(#MN54U"15*@3T:@4$])3E13H$E.H$]"2D5#5*`Q#6YU;6]B
M,3(@97%U("1A-@UT;W1N=6T@97%U("1A-R`[=$]404R@3E5-0D52H$]&H%!/
M24Y44Z!)3J!,25-4#6]F9G-E="!E<74@)&$X(#MO1D93152@24Y43Z!'4DE$
M#0UD;W1T960@97%U("1B,2`[9DQ!1Z!&3U*@1$]45$5$H$Q)3D6@*#$]1$]4
M5$5$*0T-<&]I;G0Q(&5Q=2`D-F$@.W-/346@4U!!4D6@4$])3E1%4E,-<&]I
M;G0R(&5Q=2`D-F,-<V-R965N<"!E<74@)#9E(#MP3TE.5$52H%53142@0EF@
M4T-2145.H%!,3U1415(-8V]L;W)P(&5Q=2`D-S`@.U!/24Y415*@24Y43Z!#
M3TQ/4J!R86T-8V]L;W(@97%U("0W,B`[8T],3U*@5$^@4U1/4D6@24Z@0T],
M3U*@<F%M#6YU;7-I9&4@97%U("0X8B`[(Z!/1J!#2$%24Z!015*@4TE$1:!/
M1J!3455!4D4-#6YU;71O<F]T(&5Q=2`D-CD@.VY534)%4J!/1J!03TE.5%.@
M5$^@4D]4051%H$E.H')O='!R;VH-#6)U9F9E<B!E<74@)&$S(#MP3TE.5$52
MH%1/H$1205=)3D>@0E5&1D52#7@Q(&5Q=2`D9F(@.W!/24Y44Z!&3U*@1%)!
M5TE.1Z!!H$Q)3D4->3$@97%U("1F8R`[=$A%4T6@6D523Z!004=%H$%$1%)%
M4U-%4PUX,B!E<74@)&9D(#M$3TXG5*!#3TY&3$E#5*!7251(H&)A<VEC#7DR
M(&5Q=2`D9F4-;VQD>"!E<74@)&9D#6-H=6YK(&5Q=2`D9F4-9'@@97%U("0V
M-PUD>2!E<74@)#8X#71E;7`Q(&5Q=2`D9F(@.V]&H$-/55)312R@0T]53$2@
M0T].1DQ)0U2@5TE42*!8,0UT96UP,B!E<74@)&9C(#MT14U03U)!4EF@5D%2
M24%"3$53#7IT96UP(&5Q=2`D,#(@.W53142@1D]2H$)51D9%4J!35T%0+J"@
M9$].)U2@5$]50T@N#6%C8R!E<74@)#(R(#MU4T5$H$)9H$U!5$B@4D]55$E.
M10UA=7@@97%U("0R-`UE>'0@97%U("0R-@T-*BTM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2T-*@TJH'-934U415)9H%)/551)3D4-*@TJH'1(25.@
M4D]55$E.1:!&24Q,4Z!/552@5$A%H%1/4*!&3U52H$]"2D5#5%.@0EF@0U)%
M051)3D<-*J!42$6@9#2@4UE-34544EDM4D5,051%1*!/0DI%0U13H$923TV@
M5$A%H%-%0T].1$%26:!/0DI%0U0L#2J@1D]2H$&@5$]404R@3T:@1D]54J!/
M0DI%0U13+@T-<WEM;2!E;G0-#2!L9'@@(S,Y#2!L9'D@(S`P#2!L9&$@>G1E
M;7`-(&-M<"`C/F)U9F8Q#2!B97$@.F)U9C$-(&IM<"`Z8G5F,@T-.F)U9C$@
M.V9)4E-4H$&@4D5&3$5#5$E/3J!42%)/54=(H%D],`T@;&1A(&)U9F9E<C$L
M>2`[9U)!0J!#3TQ534Y3+*!/3D6@052@0:!424U%#2!E;W(@(R1F9@T@;W)A
M('!A='1E<FXQ+'D-('-T82!B=69F97(Q*S(P,"QX#2!L9&$@8G5F9F5R,2LT
M,"QY(#MC3TR@,@T@96]R(",D9F8-(&]R82!P871T97)N,2QY#2!S=&$@8G5F
M9F5R,2LR-#`L>`T@;&1A(&)U9F9E<C$K.#`L>2`[8T],H#,-(&5O<B`C)&9F
M#2!O<F$@<&%T=&5R;C$L>0T@<W1A(&)U9F9E<C$K,C@P+'@-(&QD82!B=69F
M97(Q*S$R,"QY(#MY3U6@1T54H%1(1:!024-455)%#2!E;W(@(R1F9@T@;W)A
M('!A='1E<FXQ+'D-('-T82!B=69F97(Q*S,R,"QX#2!L9&$@8G5F9F5R,2LQ
M-C`L>0T@96]R(",D9F8-(&]R82!P871T97)N,2QY#2!S=&$@8G5F9F5R,2LS
M-C`L>`T@:6YY#2!D97@-(&)P;"`Z8G5F,0T-(&QD>2`C,SD@.VY/5Z!$3Z!2
M149,14-424].4Z!42%)/54=(H%@],`TZ;#$@;&1A(&)U9F9E<C$L>0T@=&%X
M#2!L9&$@<F5V;&ES="QX#2!A;F0@<&%T=&5R;C$L>0T@<W1A(&)U9F9E<C$K
M-38P+'D@.V-/3%5-3C&@+3Z@0T],54U.H#$P#2!L9&$@8G5F9F5R,2LT,"QY
M#2!T87@-(&QD82!R979L:7-T+'@-(&%N9"!P871T97)N,2QY#2!S=&$@8G5F
M9F5R,2LU,C`L>2`[,J`M/J`Y#2!L9&$@8G5F9F5R,2LX,"QY#2!T87@-(&QD
M82!R979L:7-T+'@-(&%N9"!P871T97)N,2QY#2!S=&$@8G5F9F5R,2LT.#`L
M>0T@;&1A(&)U9F9E<C$K,3(P+'D-('1A>`T@;&1A(')E=FQI<W0L>`T@86YD
M('!A='1E<FXQ+'D-('-T82!B=69F97(Q*S0T,"QY#2!L9&$@8G5F9F5R,2LQ
M-C`L>2`[-:`M/J`Q#2!T87@-(&QD82!R979L:7-T+'@-(&%N9"!P871T97)N
M,2QY#2!S=&$@8G5F9F5R,2LT,#`L>0T-(&QD82!B=69F97(Q*S(P,"QY(#MN
M3U>@1$^@252@1D]2H%D],*!2149,14-424].#2!T87@-(&QD82!R979L:7-T
M+'@-(&%N9"!P871T97)N,BQY#2!S=&$@8G5F9F5R,2LW-C`L>2`[8T],54U.
M,:`M/J!#3TQ534Z@,3`-(&QD82!B=69F97(Q*S(T,"QY#2!T87@-(&QD82!R
M979L:7-T+'@-(&%N9"!P871T97)N,BQY#2!S=&$@8G5F9F5R,2LW,C`L>2`[
M,J`M/J`Y#2!L9&$@8G5F9F5R,2LR.#`L>0T@=&%X#2!L9&$@<F5V;&ES="QX
M#2!A;F0@<&%T=&5R;C(L>0T@<W1A(&)U9F9E<C$K-C@P+'D-(&QD82!B=69F
M97(Q*S,R,"QY#2!T87@-(&QD82!R979L:7-T+'@-(&%N9"!P871T97)N,BQY
M#2!S=&$@8G5F9F5R,2LV-#`L>0T@;&1A(&)U9F9E<C$K,S8P+'D@.S6@+3Z@
M,0T@=&%X#2!L9&$@<F5V;&ES="QX#2!A;F0@<&%T=&5R;C(L>0T@<W1A(&)U
M9F9E<C$K-C`P+'D-#2!D97D-(&)M:2`Z9&]N93$-(&IM<"`Z;#$-.F1O;F4Q
M(')T<PT-.F)U9C(@.W-!346@5$A)3D<LH$9/4J!"549&15*@,@T@;&1A(&)U
M9F9E<C(L>2`[9U)!0J!#3TQ534Y3+*!/3D6@052@0:!424U%#2!E;W(@(R1F
M9@T@;W)A('!A='1E<FXQ+'D-('-T82!B=69F97(R*S(P,"QX#2!L9&$@8G5F
M9F5R,BLT,"QY(#MC3TR@,@T@96]R(",D9F8-(&]R82!P871T97)N,2QY#2!S
M=&$@8G5F9F5R,BLR-#`L>`T@;&1A(&)U9F9E<C(K.#`L>2`[8T],H#,-(&5O
M<B`C)&9F#2!O<F$@<&%T=&5R;C$L>0T@<W1A(&)U9F9E<C(K,C@P+'@-(&QD
M82!B=69F97(R*S$R,"QY(#MY3U6@1T54H%1(1:!024-455)%#2!E;W(@(R1F
M9@T@;W)A('!A='1E<FXQ+'D-('-T82!B=69F97(R*S,R,"QX#2!L9&$@8G5F
M9F5R,BLQ-C`L>0T@96]R(",D9F8-(&]R82!P871T97)N,2QY#2!S=&$@8G5F
M9F5R,BLS-C`L>`T@:6YY#2!D97@-(&)P;"`Z8G5F,@T-(&QD>2`C,SD@.VY/
M5Z!$3Z!2149,14-424].4Z!42%)/54=(H%@],`TZ;#(@;&1A(&)U9F9E<C(L
M>0T@=&%X#2!L9&$@<F5V;&ES="QX#2!A;F0@<&%T=&5R;C$L>0T@<W1A(&)U
M9F9E<C(K-38P+'D@.V-/3%5-3C&@+3Z@0T],54U.H#$P#2!L9&$@8G5F9F5R
M,BLT,"QY#2!T87@-(&QD82!R979L:7-T+'@-(&%N9"!P871T97)N,2QY#2!S
M=&$@8G5F9F5R,BLU,C`L>2`[,J`M/J`Y#2!L9&$@8G5F9F5R,BLX,"QY#2!T
M87@-(&QD82!R979L:7-T+'@-(&%N9"!P871T97)N,2QY#2!S=&$@8G5F9F5R
M,BLT.#`L>0T@;&1A(&)U9F9E<C(K,3(P+'D-('1A>`T@;&1A(')E=FQI<W0L
M>`T@86YD('!A='1E<FXQ+'D-('-T82!B=69F97(R*S0T,"QY#2!L9&$@8G5F
M9F5R,BLQ-C`L>2`[-:`M/J`Q#2!T87@-(&QD82!R979L:7-T+'@-(&%N9"!P
M871T97)N,2QY#2!S=&$@8G5F9F5R,BLT,#`L>0T-(&QD82!B=69F97(R*S(P
M,"QY(#MN3U>@1$^@252@1D]2H%D],*!2149,14-424].#2!T87@-(&QD82!R
M979L:7-T+'@-(&%N9"!P871T97)N,BQY#2!S=&$@8G5F9F5R,BLW-C`L>2`[
M8T],54U.,:`M/J!#3TQ534Z@,3`-(&QD82!B=69F97(R*S(T,"QY#2!T87@-
M(&QD82!R979L:7-T+'@-(&%N9"!P871T97)N,BQY#2!S=&$@8G5F9F5R,BLW
M,C`L>2`[,J`M/J`Y#2!L9&$@8G5F9F5R,BLR.#`L>0T@=&%X#2!L9&$@<F5V
M;&ES="QX#2!A;F0@<&%T=&5R;C(L>0T@<W1A(&)U9F9E<C(K-C@P+'D-(&QD
M82!B=69F97(R*S,R,"QY#2!T87@-(&QD82!R979L:7-T+'@-(&%N9"!P871T
M97)N,BQY#2!S=&$@8G5F9F5R,BLV-#`L>0T@;&1A(&)U9F9E<C(K,S8P+'D@
M.S6@+3Z@,0T@=&%X#2!L9&$@<F5V;&ES="QX#2!A;F0@<&%T=&5R;C(L>0T@
M<W1A(&)U9F9E<C(K-C`P+'D-#2!D97D-(&)M:2`Z9&]N93(-(&IM<"`Z;#(-
M.F1O;F4R(')T<PT-#2HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M#2H-*J!F24Q,H%)/551)3D4-*@TJH'1(25.@25.@5$A%H$],1*!#3T]+244M
M0U545$52+*!34$E&1D5$H%50H$%.1*!!H$))5`TJH$]05$E-25I%1"R@4TE.
M0T6@252@25.@3TY,6:!54T5$H$].H%1(1:!&25)35*`U6#6@1U))1`TJ#2J@
M9FEL;&QI<W2@+2V@0:!(04Y$6:!404),1:!43Z!414Q,H%=(24-(H%)/5U.@
M2$%61:!"145.#2J@H*"@H*"@H*"@H*"@1DE,3$5$+@T-9FEL;"!E;G0-#2J@
M;&1YH",S.0TJH&QD8:`C,#`-*CIL,:!S=&&@9FEL;&QI<W0L>0TJH&1E>0TJ
MH&)P;*`Z;#$-#2!L9'D@(S,Y#3IL;V]P,2!L9&$@(R0X,"`[;D5%1*!43Z!!
M1$2@)#`T.#"@5$^@1T54H%1/#2!S=&$@8G5F9F5R(#M&25)35*`U6#6@1U))
M1`T@;&1A('IT96UP#2!C;&,-(&%D8R`C)#`T#2!S=&$@8G5F9F5R*S$-#2J@
M=$A%H$],1*!705DN#2J@;$]44Z!/1J!!1$13H$%.1*!354-(+*!"552@4T5%
M35.@5$^@0D6@0:!"252@1D%35$52#0T@;&1X(",P-0TZ;&]O<#(@;&1A("AB
M=69F97(I+'D-(&)N92`Z9V]T8VAA#2!L9&$@(R1F9B`[9DE,3*!&3$%4+*!0
M051415).4Z!,051%4@T@<W1A("AB=69F97(I+'D-(&QD82!B=69F97(-(&%D
M8R`C-#`-('-T82!B=69F97(-(&)C8R`Z8V]N=`T@:6YC(&)U9F9E<BLQ#2!C
M;&,-.F-O;G0@9&5X#2!B;F4@.FQO;W`R#2!B97$@.FYO=&AI;F<-#3IG;W1C
M:&$@;&1X(",D9F8-.FPQ(&EN>`T@87-L(#MB250LH$))5"R@5TA/)U.@1T]4
MH%1(1:!"250_#2!B8V,@.FPQ#0T@;&1A(&)I='`L>`T@96]R(",D9F8-(&]R
M82`H8G5F9F5R*2QY#2!S=&$@*&)U9F9E<BDL>0T-*J!N3U>@5T]22Z!"04-+
M5T%21%,N#2J@<D5-14U"15(ZH"0P-#@PH"N@,38PH#V@)#`U,C`-(&QD82`C
M)#(P#2!S=&$@8G5F9F5R#2!L9&$@>G1E;7`-(&-L8PT@861C(",D,#4-('-T
M82!B=69F97(K,0T-.FPT('-E8PTZ;&]O<#,@;&1A("AB=69F97(I+'D-(&)N
M92`Z9&EN9PT@;&1A(",D9F:@.V9)3$R@1DQ!5"R@4$%45$523E.@3$%415(-
M('-T82`H8G5F9F5R*2QY#2!L9&&@(&)U9F9E<@T@<V)C(",T,`T@<W1A(&)U
M9F9E<@T@8F-S(#IL;V]P,Z`[8D]53D2@5$^@2$E4H%-/34542$E.1Z!33T].
M15(-(&1E8R!B=69F97(K,:`[3U*@3$%415(N#2!B8V,@.FPT#0TZ9&EN9R!L
M9'@@(R0P.*`[=T6@2$%61:!!H%=)3DY%4B$-.FPR(&1E>`T@;'-R#2!B8V,@
M.FPR#2!L9&&@(&)I='`L>`T@;W)A("AB=69F97(I+'D-('-T82`H8G5F9F5R
M*2QY#0TZ;F]T:&EN9Z!D97D-(&)P;"`Z;&]O<#&@.VM%15"@1T])3D>@54Y4
M24R@>:!(2513H%I%4D\-#2J@=T5,3"R@04Y/5$A%4J!03U-324))3$E462R@
M0E54H$U!64)%H$Y/5*!!4Z!'3T]$#2H-*J!I5*!'3T53H%1(4D]51TB@5$A%
MH$Q)4U2@5D525$E#04Q,62R@5$A54Z!32TE04$E.1PTJH$%,3*!42$]31:!#
M3TQ534XM041$4RZ@H'1(1:!$3U=.4TE$1:!)4Z!!3$R@5$A%#2J@0T]-4$%2
M25-/3E,NH*!I5*!!4U-53453H%1(052@052@3$5!4U2@3TY%H$Q)3D4-*J`H
M12Y'+J!9/3(P*:!724Q,H$Y%142@5$^@0D6@0T]-4$Q%5$5,6:!&24Q,142@
M1T])3D<-*J!&3U)705)$4RX-*@TJ.FQO;W`RH&QD>:"@(S,YH#MF3U)705)$
M4Z!005)4#2HZ;&]O<#&@;&1AH&9I;&QL:7-T+'D-*J!B;F6@.G-K:7`-*J!L
M9&&@*&)U9F9E<BDL>0TJH&)E<:`Z;F]T>65T#2J@<W1AH&9I;&QL:7-T+'F@
M.VY/3EI%4D^@24U03$E%4Z!&24Q,140-*J!T87B@.V]/4%,LH%1)346@5$^@
M1DE,3`TJH&QD8:"@8FET<"QX#2HZ;F]T>65TH&5O<J`C)&9F#2J@<W1AH"AB
M=69F97(I+'D-*CIS:VEPH&1E>0TJH&)P;*`Z;&]O<#$-*J!L9&&@8G5F9F5R
M#2J@8G!LH#IB86-KH#LD6%@X,*`KH#$V,*`]H%A8,#"@*Z`S,@TJH&-L8PTJ
MH&%D8Z`C-#`-*J!S=&&@8G5F9F5R#2J@8F-CH#IL;V]P,@TJH&EN8Z!B=69F
M97(K,0TJH&)C<Z`Z;&]O<#(-*@TJ.F)A8VN@.VY/5Z!73U)+H$)!0TM705)$
M4PTJ.FQO;W`SH'-E8Z`[=$A)4Z!,1513H%53H%%5252@14%23%DLH$].0T4-
M*J`[159%4EE/3D6@25.@1DE,3$5$+@TJH&QD>:`C,SF@.V9/4E=!4D13H%!!
M4E0-*CIL;V]P-*!L9&&@9FEL;&QI<W0L>0TJH&)E<:`Z<VMI<#(-*J!C;&.@
M.V9,04>@24:@04Y9H$5.5%)9H$Y/3EI%4D\-*J!L9&&@*&)U9F9E<BDL>0TJ
MH&)E<:`Z;F]T979E;@TJH'1A>*`[;T]04RR@5$E-1:!43Z!&24Q,#2J@;&1A
MH*`C,#`-*J!S=&&@9FEL;&QI<W0L>:`[>D523Z!/552@1DE,3*!&3$%'4PTJ
MH'-E8PTJH&QD8:!B:71P+'@-*CIN;W1E=F5N#2J@<W1AH"AB=69F97(I+'D-
M*CIS:VEP,J!D97D-*J!B<&R@.FQO;W`T#2J@8F-SH#ID;VYEH#MW1:!#04Z@
M1DE.25-(H$5!4DQ9#2J@;&1AH&)U9F9E<@TJH'-E8PTJH'-B8Z`C-#`-*J!S
M=&&@8G5F9F5R#2J@8G!LH#ID;VYEH#LD6%@X,*!)4Z!!4Z!,3U>@05.@252@
M1T]%4RX-*J!B8W.@.FQO;W`S#2J@9&5CH&)U9F9E<BLQ#2J@8F-CH#IL;V]P
M,PTJ.F1O;F4-(')T<PT-#2HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM#2J@9%)!5TE.)Z!!H$Q)3D4NH*!AH$9!2$Z@3$%(3BX-#2HJ*J!S3TU%
MH%5314953*!-04-23U,-#6-I;FET(&UA8R`@.VU!0U)/H%1/H$E.251)04Q)
M6D6@5$A%H$-/54Y415(-(&QD82!=,2`[1%B@3U*@1%D-(&QS<@T@/#P\("`[
M=$A%H$18+S*@34%+15.@0:!.24-%4J!,3T]+24Y'H$Q)3D4-#2HJ*BHJH&U!
M0U)/H%1/H%1!2T6@0:!35$50H$E.H'@-#7AS=&5P(&UA8PT@;&1X(&1X(#MN
M54U"15*@3T:@3$]/4*!)5$52051)3TY3#2`^/CX@8VEN:70L9'@->&QO;W`@
M;'-R(&-H=6YK#2!B97$@9FEX8R`[=5!$051%H$-/3%5-3@T@<V)C(&1Y#2!B
M8V,@9FEX>2`[=$E-1:!43Z!35$50H$E.H'D-8V]N="!D97@-(&)N92!X;&]O
M<`UD;VYE(&QD82!C:'5N:R`[<$Q/5*!42$6@3$%35*!#2%5.2PT@;'-R(#MM
M04M%H%-54D6@5$^@1T54H$%4H$Q%05-4H#&@4$E814P-(&5O<B!O;&1X#2!A
M;F0@9&]T=&5D#2!O<F$@*&)U9F9E<BDL>0T@<W1A("AB=69F97(I+'D-(')T
M<PT-9FEX8R!P:&$-(&QD82!O;&1X#2!A;F0@9&]T=&5D(#M$3U14142@3$E.
M1:!-05-+#2!O<F$@*&)U9F9E<BDL>2`[<$Q/5`T@<W1A("AB=69F97(I+'D-
M(&QD82`C)&9F(#MU4$1!5$6@0TA53DL-('-T82!O;&1X#2!S=&$@8VAU;FL-
M(&QD82!B=69F97(@.VE.0U)%05-%H%1(1:!#3TQ534X-(&-L8PT@861C(&-O
M;'-T97`-('-T82!B=69F97(-(&)C8R!C,@T@:6YC(&)U9F9E<BLQ#6,R#2!P
M;&$-('-E8PT@<V)C(&1Y#2!B8W,@8V]N="`[=5"@04)/5D4-(&%D8R!D>`T@
M:68@:2Q=,2`[9$^@5T6@55-%H&EN>:!/4J!D97D_#2!I;GD-(&5L<V4-(&1E
M>0T@9FEN#2!B8W,@8V]N="`[84Q705E3H$)204Y#2$53#2IC;VYTH&1E>`TJ
MH&)N9:!X;&]O<`TJH&IM<*!D;VYE#0UF:7AY(&%D8R!D>`T@<&AA#2!L9&$@
M;VQD>`T@96]R(&-H=6YK#2!A;F0@9&]T=&5D#2!O<F$@*&)U9F9E<BDL>0T@
M<W1A("AB=69F97(I+'D-(&QD82!C:'5N:PT@<W1A(&]L9'@-('!L80T@:68@
M:2Q=,2`[=5!$051%H'D-(&EN>0T@96QS90T@9&5Y#2!F:6X-(&)C<R!C;VYT
M(#MA9&.@4T544Z!42$6@0T%24EF@04)/5D4-(#P\/"`@.V5.1*!/1J!M04-2
M3Z!84U1%4`T-*BHJ*BJ@=$%+1:!!H%-415"@24Z@>0T->7-T97`@;6%C#2!L
M9'@@9'D@.VY534)%4J!/1J!,3T]0H$E415)!5$E/3E,-(&)E<2!D;VYE(#MI
M1J!$63TPH$E4)U.@2E535*!!H%!/24Y4#2`^/CX@8VEN:70L9'D-('-E8PUY
M;&]O<"!P:&$-('1Y82`[;TY,6:!03$]4H$].H$5614Z@3$E.15.@248-(&%N
M9"!D;W1T960@.T1/24Y'H%1(1:!$3U14142@5$A)3D<N#2!B;F4@<VMI<&ET
M(#LH1$]45$5$/3`QH$E&H%=%H$%21:!$3U1424Y'*0T@;&1A(&]L9'@-(&]R
M82`H8G5F9F5R*2QY#2!S=&$@*&)U9F9E<BDL>0US:VEP:70@<&QA#2!I9B!I
M+%TQ#2!I;GD-(&5L<V4-(&1E>0T@9FEN#2!S8F,@9'@-(&)C8R!F:7AX#6-O
M;G0@9&5X#2!B;F4@>6QO;W`-9&]N92!L9&$@;VQD>`T@;W)A("AB=69F97(I
M+'D-('-T82`H8G5F9F5R*2QY#2!R=',-#69I>'@@861C(&1Y#2!L<W(@;VQD
M>`T@<V5C("`[:4U03U)404Y4(0T@8FYE(&-O;G0@.U50#2J@8F5QH&9I>&,-
M*J!D97@-*J!B;F6@>6QO;W`-*J!J;7"@9&]N90T-9FEX8R!P:&$-(')O<B!O
M;&1X(#MC05)26:!)4Z!3152@*%1224-+62$I#2!L9&$@8V]L<W1E<`T@861C
M(&)U9F9E<@T@<W1A(&)U9F9E<@T@8F-C(&,R#2!I;F,@8G5F9F5R*S$-8S(@
M<&QA#2!S96,@(#MC05)26:!.145$4Z!43Z!"1:!3150-(&)C<R!C;VYT#2J@
M9&5X#2J@8FYEH'EL;V]P#2J@:FUPH&1O;F4-(#P\/"`@.V5.1*!/1J!M04-2
M3Z!94U1%4`T-*BHJ*J!I3DE424%,H$Q)3D6@4T5455`-#2J@8V]L<W1E<*`M
M+:!H3U>@34%.6:!"651%4Z!015*@0T],54U.+*!%251(15*@-#"@3U*@.38-
M*J!L;S0P+*!H:30P+*!%5$,NH"TMH'1!0DQ%4Z!/1J`T,"I8+S@-*J!X,2QX
M,BQY,2QY,J`M+:!03TE.5%.@5$^@1%)!5Z!,24Y%H$)%5%=%14X-*J!B=69F
M97*@+2V@>G"@4$])3E1%4J!43Z!"549&15*@5$^@1%)!5Z!)3E1/#2J@>G1E
M;7"@+2V@8T].5$%)3E.@2$E'2*!"651%H$]&H$)51D9%4J!"05-%#2J@9&]T
M=&5DH"TMH'-%5*!43Z`D,#&@24:@1$])3D>@1$]45$5$H$1205=3H"A$24Q)
M1T5.5$Q9*0T-9')A=R!E;G0-#3IS971U<"!S96,@(#MM04M%H%-54D6@6#$\
M6#(-(&QD82!X,@T@<V)C('@Q#2!B<&P@.F-O;G0-(&QD82!Y,B`[:4:@3D]4
M+*!35T%0H'`QH$%.1*!P,@T@;&1Y('DQ#2!S=&$@>3$-('-T>2!Y,@T@;&1A
M('@Q#2!L9'D@>#(-('-T>2!X,0T@<W1A('@R#0T@<V5C#2!S8F,@>#$@.VY/
M5Z!A/418#3IC;VYT('-T82!D>`T@;&1X('@Q(#MP552@6#&@24Y43Z!X+*!.
M3U>@5T6@0T%.H%1205-(H'@Q#0UC;VQU;6X@;&1A(&-O;'-T97`@.V9)3D2@
M5$A%H$9)4E-4H$-/3%5-3J!&3U*@>`T@8VUP(",Y-B`[84Y$H%-%5*!54*!4
M2$6@1%)!5TE.1Z!"549&15)3#2!B97$@.F-O;G0Y-@T@;&1A(&QO-#`L>"`[
M:4:@-#`LH%1(14Z@5T6@3D5%1*!43Z!/1D93152@24Y43PTJH&-L8PT@861C
M(",D.#`@.U1(1:!"549&15*@0EF@."HQ,BHQ,CTD-#@P#2!S=&$@8G5F9F5R
M#2!L9&$@:&DT,"QX#2!A9&,@(R0P-"`[8T]53$2@159%3J!)3D-/4E!/4D%4
M1:!)3E1/H%1!0DQ%#2!B8V,@.F1O;F4-#3IC;VYT.38@;&1A(&QO.38L>"`[
M;U1(15)725-%H%=%H%-405)4H$%4H$)%1TE.3DE.1PT@<W1A(&)U9F9E<B`[
M3T:@0E5&1D52#2!L9&$@:&DY-BQX#2!C;&,-.F1O;F4@861C('IT96UP#2!S
M=&$@8G5F9F5R*S$-#2!S96,-(&QD82!Y,B`[8T%,0U5,051%H$19#2!S8F,@
M>3$-(&)P;"`Z8V]N=#(@.VE3H%DR/EDQ/PT@96]R(",D9F8@.V]42$525TE3
M1:!$63U9,2U9,@T@861C(",D,#$@.V-!4E)9H'-H;W5L9*!"1:!#3$5!4@TZ
M8V]N=#(@<W1A(&1Y#2!C;7`@9'@@.W=(3R=3H$))1T=%4CJ@1%F@3U*@1%@_
M#2!B8V,@<W1E<&EN>"`[:4:@1%@LH%1(14XN+BX-(&IM<"!S=&5P:6YY#0US
M=&5P:6YX(&QD82!D;W1T960-(&)E<2`Z8V]N=`T@;&1A(",E,3`Q,#$P,3`@
M.V1/5%1%1*!,24Y%H$U!4TL-.F-O;G0@96]R(",D9F8-('-T82!D;W1T960-
M(&QD>2!Y,0T@8W!Y('DR(#M9,2Q9,BQ/3$18+$-(54Y+H%-(05)%H%-!346@
M345-#2!L9&$@8FET<"QX(#MXH$-54E)%3E1,6:!#3TY404E.4Z!8,0T@<W1A
M(&]L9'@-('-T82!C:'5N:PT@8F-S('AD96-Y(#MD3Z!71:!35$50H$9/4E=!
M4D13H$]2H$)!0TM705)$4Z!)3J!Y/PT->&EN8WD@/CX^('AS=&5P+&EN>0T-
M>&1E8WD@/CX^('AS=&5P+&1E>0T-<W1E<&EN>2!L9'D@>3$@.VY/5$6@::!!
M4U-5346@9&]T=&5DH#V@,#"@3U*@,#$-(&QD82!B:71P+'@@.W@]6#$-('-T
M82!O;&1X#2!L<W(@(#MYH$1/15-.)U2@55-%H$-(54Y+4PT@96]R(&]L9'@@
M.W-/H%=%H$I54U2@5T%.5*!42$6@0DE4#2!S=&$@;VQD>`T@8W!Y('DR#2!B
M8W,@>61E8WD-#7EI;F-Y(#X^/B!Y<W1E<"QI;GD-#7ED96-Y(#X^/B!Y<W1E
M<"QD97D-#2HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!T
M2$E3H%)/551)3D6@5TE,3*!03$%#1:!!H%-154%21:!#2%5.2Z!/1J!#2$%2
M04-415)3#2J@052@0:!34$5#249)142@4$Q!0T6@24Z@345-3U)9+*!!3D2@
M4U1/4D4-*J!#3TQ/4J!)3J!42$6@0T]24D534$].1$E.1Z!#3TQ/4J!-14U/
M4EDN#2H-*J!O3J!%3E1263J@>3U23U<LH'@]0T],54U.+*!A/7-405)424Y'
MH$-(05)!0U1%4@TJH*"@H*"@H*"@H*!C;VQO<CU#3TQ/4J"@;G5M<VED93TC
MH$]&H$-(05)!0U1%4E.@4$52#2J@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@
MH*"@H*"@H%-)1$6@3T:@4U%505)%#0US<&QA="!E;G0-('-T82!T96UP,0T@
M;&1A(",P,`T@<W1A('-C<F5E;G`K,0T@='EA(#MN3U>@5T6@3D5%1*!43Z`J
M-#`-(&%S;"`[5TA)0TB@25.@*C,RH"N@*C@-(&%S;`T@87-L#2!S=&$@=&5M
M<#(@.U1)3453H#B@*$Y/H%=/4E-%H%1(04Z@,3DV*0T@87-L#2!R;VP@<V-R
M965N<"LQ#3IC;VYT,2!A<VP-(')O;"!S8W)E96YP*S$-.F-O;G0R(&%D8R!T
M96UP,@T@<W1A('-C<F5E;G`-('-T82!C;VQO<G`-(&QD82!S8W)E96YP*S$-
M(&%D8R`C,#0@.W-#4D5%3J!35$%25%.@052@)#`T,#`-('-T82!S8W)E96YP
M*S$-(&%D8R`C)&0T(#M#3TQ/4J!!5*`D9#@P,`T@<W1A(&-O;&]R<"LQ(#MW
M3U<LH$Q/5%.@3T:@0T]$1:!42$521:`Z*`T-('-T>"!T96UP,@T@;&1A(&YU
M;7-I9&4-('-T82!A=7@@.VY%142@5$A)4Z!'55F@5$]/H#HH#3IL,B!L9&$@
M=&5M<#$-(&QD>"!N=6US:61E#2!L9'D@=&5M<#(-.FPQ('-T82`H<V-R965N
M<"DL>0T@<&AA#2!L9&$@8V]L;W(-('-T82`H8V]L;W)P*2QY#2!P;&$-(&EN
M>0T@861C(&YU;7-I9&4@.V-(05)!0U1%4E.@05)%H$]21$52142@5D525$E#
M04Q,60T@9&5X#2!B;F4@.FPQ#2!I;F,@=&5M<#$-(&QD82!S8W)E96YP#2!C
M;&,-(&%D8R`C-#`-('-T82!S8W)E96YP#2!S=&$@8V]L;W)P#2!B8V,@.F-O
M;G0T#2!I;F,@<V-R965N<"LQ#2!I;F,@8V]L;W)P*S$-.F-O;G0T(&QD82!C
M;VQO<G`K,0T@8VUP(",D9&(@.V1/3B=4H$=%5*!43T^@0DE'(2$A#2!B8V,@
M.F-O;G0U#2!L9&$@8V]L;W)P#2!C;7`@(R1C,2`[=T4G4D6@4$%35*!42$6@
M3$%35*!23U<LH$%.1`T@8F-S(#ID;VYE(#MIH$1/3B=4H$9%14R@3$E+1:!7
M4DE424Y'H%1/H&-I80TZ8V]N=#4@9&5C(&%U>`T@8FYE(#IL,@T-.F1O;F4@
M<G1S(#MG3T]$H&Q/4D2@::!(3U!%H%1(050G4Z!)5"X-ZSU=DJS;.OF2KNL^
MW;JG)79ZLV:Y*O.[K+DJ2;SM.\K/L^WKJEF3;Y5V2KJLFRU=DJS;.LN2K3M6
MS;5O)79*O.[K+DJ2;3M6S;5O*ZI9DV^5=DJZK-LM79*MFWKY5V2K+LZTY*MZ
M[[=O.V;.L^2I[M-R7+?)RW3>YSWR?/2G+?)S]*=5\G.<]\G/<[2GV<]\GN=E
MTW+<US7Y5V2K.L^Z5=DJTK>L^2IZLV:U=DJV;>M.2KNL^W;JFM79*LVSMZ4I
M2@!P*BTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T-*@TJH$]"2D5#
M5%,N4PTJ#2J@=$A%4T6@05)%H%1(1:!23U5424Y%4Z!72$E#2*!3152@55"@
M5$A%H$]"2D5#5%.@1D]2#2J@5$A%H$U!24Z@4%)/1U)!32Z@H&E4H$E3H$%,
M5T%94Z!!4U-5345$H%1(052@5$A%#2J@5RU#3T]21$E.051%H$]&H%1(1:!&
M25)35*!03TE.5*!/1J!!3EF@3T)*14-4#2J@5TE,3*!%5D5.5%5!3$Q9H$)%
MH$].1:`H,C2@04-454%,3%DI+*!33Z!42$6@0T%,3$E.1PTJH%)/551)3D6@
M5TE,3*!+3D]7H%=(14Z@5$A%H$]"2D5#5*!(05.@0D5%3J!#3TU03$5414Q9
M#2J@1$5&24Y%1*`H04Y$H%-50E-%455%3E1,6:!32TE0H%1(15-%H%)/551)
M3D53*2X-*@TJH'1/H")'4D]7(J!!3J!/0DI%0U2@5$A%4T6@1U594Z!324U0
M3%F@4U1!4E2@0:!#3T]21$E.051%#2J@052@6D523Z!!3D2@1U)!1%5!3$Q9
MH%)!35"@252@55"@5$^@,C0N#2H-*J!S5$502$5.H&PNH&I51$0-*J`V+S$U
M+SDV#2H-*J!H25-43U)9.@TJH*"@H*"@H*`V+S$UH"US4$Q)5*!)3E1/H$]"
M2D5#5*!&24Q%+*!#3$5!3D5$H%50H$&@1D57H%1(24Y'4PTJH*"@H*"@H*`V
M+S(QH"UA1$1%1*!/0DI%0U13H$%.1*!33D5!2UDM4$541:!$149)3DE424].
MH$%,1UD-*J"@H*"@H*"@-B\R,J`M841$142@1$]45$5$H$Q)3D6@0T%004))
M3$E462Z@H'1/H$U!2T6@5$A)3D=3#2J@H*"@H*"@H*"@H*"@H$U/4D6@0T]-
M4%)%2$5.4TE"3$4LH$Q)3D53H$-/3DY%0U1)3D>@(DE.3D52(@TJH*"@H*"@
MH*"@H*"@H*!!3D2@(D]55$52(J!03U)424].4RR@12Y'+J!03TE.5%.@5TE4
M2*!7/3$-*J"@H*"@H*"@H*"@H*"@5$^@4$])3E13H%=)5$B@5STM,2R@05)%
MH$1205=.H$1/5%1%1"Z@H'-%10TJH*"@H*"@H*"@H*"@H*!/0DI%0U2@,Z!$
M149)3DE424].H$Q)4U2@1D]2H$U/4D6@24Y&3RX-*J"@H*"@H*"@-B\R,Z`M
M841$142@5$A%H%)%34%)3DE.1Z!/0DI%0U13#0T@9'-K(")/0DI%0U13(@T-
M(')E;`T-*J!C3TY35$%.5%,-#6)U9F8Q(&5Q=2`D,S`P,"`[9DE24U2@0TA!
M4D%#5$52H%-%5`UB=69F,B!E<74@)#,X,#`@.W-%0T].1*!#2$%204-415*@
M4T54#0US:6YT86(@97%U("1C,#`P(#MT04),1:!/1J!324Y%4PUH:7-I;B!E
M<74@)#8P(#MS24Z@5$%"3$6@0U524D5.5$Q9H%-405)44Z!!5*`D-C`P,`UO
M8FQI<W1W(&5Q=2`D8S0P,"`[=$A%H$%#5%5!3*!/0DI%0U2@4$])3E13#6]B
M;&ES='@@97%U("1C-#@P#6]B;&ES='D@97%U("1C-3`P#6]B;&ES='H@97%U
M("1C-3@P#7!L:7-T=R!E<74@)&,V,#`@.VQ)4U2@3T:@4D]4051%1"M04D]*
M14-4142@4$])3E13#7!L:7-T>"!E<74@)&,V.#`-<&QI<W1Y(&5Q=2`D8S<P
M,`UP;&ES='H@97%U("1C-S@P#6)I='`@97%U("1C.#`P(#MB252@5$%"3$6@
M1D]2H$Q)3D6@4D]55$E.10UL;S0P(&5Q=2`D8SDP,"`[=$%"3$53H$]&H#0P
M*E@O.`UH:30P(&5Q=2`D8SDX,"`[=$^@3$]#051%H$]&1E-%5*!)3E1/H$)5
M1D9%4@UL;SDV(&5Q=2`D8V$P,"`[1D]2H$&@1TE614Z@0T],54U.#6AI.38@
M97%U("1C83@P#7)E=FQI<W0@97%U("1C8C`P(#MU4T5$H$)9H%-934U%5%)9
MH%)/551)3D4-8V]N;&ES=#$@97%U("1C8S`P(#MF25)35*!03TE.5*!)3J!#
M3TY.14-424].H$Q)4U0-8V]N;&ES=#(@97%U("1C9#`P(#MS14-/3D2@4$])
M3E2@24Z@0T].3D5#5$E/3J!,25-4#61R87=C;VX@97%U("1C93`P(#ML25-4
MH$]&H$-/3DY%0U1)3TZ@24Y$24-%4PUC;VYF;&%G(&5Q=2`D8V8P,"`[9DQ!
M1U.@5$^@2T5%4*!&4D]-H%)%1%)!5TE.1Z!35%5&1@T-<V-R;FQO8R!E<74@
M,3`R-"`[=TA%4D6@25.@5$A%H%-#4D5%3J!,3T-!5$5$/PT-*J!S3TU%H%9!
M4DE!0DQ%4PT-8V]L<W1E<"`]("0U,2`[;$E.15,ZH&A/5Z!-04Y9H$)95$53
MH%!%4J!#3TP-8V]U;G1P=',@/2`D-3(-=WAI;F,@/2`D-3,->'EI;F,@/2`D
M-30->7II;F,@/2`D-34->'II;F,@/2`D-38-<W=X(#T@)#8S#7-X>2`]("0V
M-"`[=$A%4T6@05)%H%1(1:!!3D=,15.@55-%1*!"60US>7H@/2`D-C4@.W)O
M='!R;VH-<WAZ(#T@)#8V#0UN=6UO8C$@97%U("1A-2`[;E5-0D52H$]&H%!/
M24Y44Z!)3J!/0DI%0U2@,0UN=6UO8C$R(&5Q=2`D838-=&]T;G5M(&5Q=2`D
M83<@.W1/5$%,H$Y534)%4J!/1J!03TE.5%.@24Z@3$E35`UO9F9S970@97%U
M("1A."`[;T9&4T54H$E.5$^@1U))1`UN=6UC;VYS(&5Q=2`D83D@.W1/5$%,
MH$Y534)%4J!/1J!#3TY.14-424].4PT-:6UO;F]B(&5Q=2`D8C`@.W=(24-(
MH$]"2D5#5*!!3:!IH$]./PT-<VEN,2!E<74@)#4W(#MP3TE.5$524Z!43Z!3
M24Y%H$%.1*!#3U-)3D4-8V]S,2!E<74@)#4Y(#M404),15,N#7-I;C(@97%U
M("0U8@UC;W,R(&5Q=2`D-60-<')O:G1A8B!E<74@)#5F(#MP3TE.5$52H%1/
MH%!23TI%0U1)3TZ@5$%"3$53#7!O:6YT,2!E<74@)#9A(#MS3TU%H%-005)%
MH%!/24Y415)3#7!O:6YT,B!E<74@)#9C#7-C<F5E;G`@97%U("0V92`[<$])
M3E1%4J!54T5$H$)9H%-#4D5%3J!03$]45$52#6-O;&]R<"!E<74@)#<P(#M0
M3TE.5$52H$E.5$^@0T],3U*@<F%M#6-O;&]R(&5Q=2`D-S(@.V-/3$]2H%1/
MH%-43U)%H$E.H$-/3$]2H')A;0UN=6US:61E(&5Q=2`D.&(@.R.@3T:@0TA!
M4E.@4$52H%-)1$6@3T:@4U%505)%#0UN=6UT;W)O="!E<74@)#8Y(#MN54U"
M15*@3T:@4$])3E13H%1/H%)/5$%41:!)3J!R;W1P<F]J#0UB=69F97(@97%U
M("1A,R`[<$])3E1%4J!43Z!$4D%724Y'H$)51D9%4@UX,2!E<74@)&9B(#MP
M3TE.5%.@1D]2H$1205=)3D>@0:!,24Y%#7DQ(&5Q=2`D9F,@.W1(15-%H%I%
M4D^@4$%'1:!!1$1215-315,->#(@97%U("1F9"`[1$].)U2@0T].1DQ)0U2@
M5TE42*!B87-I8PUY,B!E<74@)&9E#6]L9'@@97%U("1F9`UC:'5N:R!E<74@
M)&9E#61X(&5Q=2`D-C<-9'D@97%U("0V.`UT96UP,2!E<74@)&9B(#MO1J!#
M3U524T4LH$-/54Q$H$-/3D9,24-4H%=)5$B@6#$-=&5M<#(@97%U("1F8R`[
M=$5-4$]205)9H%9!4DE!0DQ%4PUZ=&5M<"!E<74@)#`R(#MU4T5$H$9/4J!"
M549&15*@4U=!4"Z@H&1/3B=4H%1/54-(+@UA8V,@97%U("0R,B`[=5-%1*!"
M6:!-051(H%)/551)3D4-875X(&5Q=2`D,C0-97AT(&5Q=2`D,C8-#2HM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!S971C;VYS#2H-*J!T
M2$E3H%!23T-%1%521:!31513H%50H$-/3DY%0U1)3TZ@3$E35%,-*@TJH&E.
M4%544SH-*J"@H*!N=6UC;VYSH$-/3E1!24Y3H%1/5$%,H$Y534)%4J!/1J!#
M3TY.14-424].4PTJH*"@H'!L:7-T=Z!#3TY404E.4Z!42$6@0T].3D5#5$E/
M3J!,25-4+*!%+D<NH&]B,6-O;@TJH*"@H'!L:7-T>:!#3TY404E.4Z!42$6@
M3D]234%,+4-/3DY%0U1)3TZ@3$E35*!%+D<NH&YO<FTQ#2H-*J!I5*!214%,
M3%F@25.@1D%35$52H$%.1*!32$]25$52H%1/H$I54U2@0T]06:!42$6@3$E3
M5%,N#2J@;TZ@15A)5"R@8V]N;&ES=#$LH&-O;FQI<W0R+*!!3D2@9')A=V-O
M;J!!4D6@4T54H%50+@TJ#0US971C;VYS#2!L9'@@(S`P(#MN3U>@4T54H%50
MH$-/3DY%0U1)3TY3#2!L9'D@(S`P#3IL,R!L9&$@<&QI<W1W+'D@.V9)4E-4
MH%!/24Y4#2!S=&$@8V]N;&ES=#$L>`T@:6YY#2!L9&$@<&QI<W1W+'D@.W-%
M0T].1*!03TE.5`T@<W1A(&-O;FQI<W0R+'@-(&EN>0T@:6YX#2!C<'@@;G5M
M8V]N<R`[=$]404R@3E5-0D52H$]&H$-/3DY%0U1)3TY3#2!B;F4@.FPS#2`[
M9DE.04Q,62R@4T54H%50H%1(1:!.3U)-04R@0T].3D5#5$E/3E,-(&QD>"`C
M,#`-.FPT('1X82`[*'-405)4H%=)5$B@0:!,25-4H$]&H%1(1:`T9*!#3TY3
M*0T@<W1A(&1R87=C;VXL>`T@:6YX#2!C<'@@<&QI<W1Y(#MN54U"15*@3T:@
M-&2@0T].3D5#5$E/3E,-(&)N92`Z;#0-(&QD>2`C,#`@.VY/5Z!&24Y)4TB@
M55"@5$A%H$Q)4U0-.FPU(&QD82!P;&ES='DK,BQY#2!S=&$@9')A=V-O;BQX
M#2!I;G@-(&EN>0T@8W!Y('!L:7-T>2LQ(#MT2$6@3E5-0D52H$]&H%!/24Y4
M4Z!)3J!42$6@3$E35`T@8FYE(#IL-0T@<G1S#0TJ+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+0TJ#2J@9W)O=PTJ#2J@=$A)4Z!354)23U5424Y%
MH")'4D]74R*@5$A%H%!/24Y44RR@0EF@4D%-4$E.1Z!42$5-#2J@3U545T%2
M1%.@1E)/3:!42$6@3U))1TE.+J"@8EF@55-%H$]&H$&@34%32Z!)5*!)4PTJ
MH%!/4U-)0DQ%H%1/H$=23U>@4U5"4T544Z!/1J!03TE.5%.@052@0:!424U%
M+@TJ#2J@;TZ@14Y44EDLH'F@0T].5$%)3E.@5$A%H$Y534)%4J!/1J!03TE.
M5%.@5$^@1U)/5RTQH"@P+BYY*2P-*J!P;VEN=#&@25.@4T54H%50H$%3H$&@
M4$])3E1%4J!43Z!42$6@4$])3E2@3$E35"P-*J!!3D2@8:!#3TY404E.4Z!!
MH$U!4TLN#2H-*J!T2$6@4$])3E2@3$E35*!73U)+4Z!!4Z!&3TQ,3U=3.J!4
M2$521:!!4D6@0:!43U1!3*!/1@TJH$9/55*@0T]/4D1)3D%415.@1D]2H$5!
M0TB@5D525$58+*!!3D2@14%#2*!#3T]21$E.051%H$E3#2J@14E42$52H#`L
MH#$LH$]2H"TQ+J"@=$A54Z!71:!#04Z@4D504D5314Y4H$5!0TB@0T]/4D1)
M3D%410TJH$)9H%173Z!"2513+*!!3D2@5$A%H$953$R@5D5#5$]2H$U!6:!"
M1:!215!215-%3E1%1*!"6:!!#2J@4TE.1TQ%H$)95$4NH*!L152@,#`],"R@
M,#$],2R@04Y$H#$Q/2TQ+*!42$5.H$%.H$5.5%)9#2J@3$E+10TJH*"@H*"@
MH#`Q,3`P,#`PH*`]H"0V,`TJH%=/54Q$H$-/4E)%4U!/3D2@5$^@0:!615)4
M15B@052@*%<L6"Q9+%HI/2@Q+"TQ+#`L,"DN#2H-*J!T2$6@4U5"4D]55$E.
M1:!404M%4Z!42$E3H$Y534)%4BR@86YD4Z!)5*!7251(H%1(1:!-05-+#2J@
M4U1/4D5$H$E.H'1E;7`Q+*!!3D2@4$%24T53H%1(1:!215-53%1)3D>@5D%,
M544NH*!I1@TJH$&@0T]/4D1)3D%41:!)4Z`Q+*!42$5.H%1(1:!#3U)215-0
M3TY$24Y'H$-/3U)$24Y!5$6@24X-*J!42$6@4$])3E2@3$E35*`H;V)L:7-T
M=RR@151#+BF@25.@24Y#4D5-14Y4140NH*!I1@TJH$&@0T]/4D1)3D%41:!)
M4Z`M,2R@;V)L:7-T=Z!)4Z!$14-214U%3E1%1"Z@H&E&H#`LH%1(14X-*J!)
M5*!)4Z!)1TY/4D5$+J"@:4Z@5$A)4Z!705DLH$E.1$E6241504R@4$])3E13
MH$U!6:!"10TJH$=23U=.H$]55%=!4D13+*!&4D]-H#"@5$^@,C0NH*!B6:!5
M4TE.1Z!42$6@34%32Z!)5*!)4PTJH%!/4U-)0DQ%H%1/H$=23U<LH%-!62R@
M3TY,6:!42$6@6"U#3T]21$E.051%4RR@3U*@3TY,60TJH%!/4TE4259%H$-/
M3U)$24Y!5$53+@TJ#6=R;W<-('-T82!T96UP,0TZ;&]O<"!T>6$-('1A>`T@
M;&1A("AP;VEN=#$I+'D-(&%N9"!T96UP,0TZ8VAE8VMW(&%S;`T@8F-C(#IP
M;W-W#2!A<VP@.VI54U2@05-354U%H$Y%1T%4259%#2!D96,@;V)L:7-T=RQX
M#2!B;F4@.F-H96-K>`TZ<&]S=R!A<VP-(&)C8R`Z8VAE8VMX#2!I;F,@;V)L
M:7-T=RQX#3IC:&5C:W@@87-L#2!B8V,@.G!O<W@-(&%S;`T@9&5C(&]B;&ES
M='@L>`T@8FYE(#IC:&5C:WD-.G!O<W@@87-L#2!B8V,@.F-H96-K>0T@:6YC
M(&]B;&ES='@L>`TZ8VAE8VMY(&%S;`T@8F-C(#IP;W-Y#2!A<VP-(&1E8R!O
M8FQI<W1Y+'@-(&)N92`Z8VAE8VMZ#3IP;W-Y(&%S;`T@8F-C(#IC:&5C:WH-
M(&EN8R!O8FQI<W1Y+'@-.F-H96-K>B!A<VP-(&)C8R`Z<&]S>@T@87-L#2!D
M96,@;V)L:7-T>BQX#2!B;F4@.F1O;F4-.G!O<WH@87-L#2!B8V,@.F1O;F4-
M(&EN8R!O8FQI<W1Z+'@-#3ID;VYE(&1E>0T@8G!L(#IL;V]P#2!R=',-#0TJ
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0TJ#2J@9$5&24Y%H$]"
M2D5#5%,-*@TJH'1(25.@3D585*!04D]#14154D6@25.@5$A%H%!23U1/5%E0
M24-!3*!04D]#14154D4-*J!&3U*@4T545$E.1Z!54*!!3D2@1$5&24Y)3D>@
M0:!005)424-53$%2H$]"2D5#5*!'4D]54"X-*J!I5*!$3T53H%-/H$)9H")'
M4D]724Y'(J!42$6@4$])3E13H$%.1*!3151424Y'H$%.1TQ%4PTJH$%04%)/
M4%))051%3%DNH*!W2$5.H$1/3D4LH%1(15)%H$E3H$&@0T]-4$Q%5$6@4$])
M3E0-*J!,25-4H%1/H$)%H%)/5$%4140LH$540RX-#2J@;G5M;V(QH*"@+2V@
M;E5-0D52H$]&H%!/24Y44Z!)3J!/0DI%0U2@3TY%#2J@=&]T;G5MH*"@+2V@
M=$]404R@3E5-0D52H$]&H%!/24Y44Z!43Z!"1:!23U104D]*)T0-#61E9F]B
M<R!E;G0-(&QD82!I;6]N;V(-(&)N92`Z8VAE8VLQ#2!J;7`@9&5F;V(P#3IC
M:&5C:S$@8VUP(",Q#2!B;F4@.F-H96-K,@T@:FUP(&1E9F]B,0TZ8VAE8VLR
M(&-M<"`C,@T@8FYE(#IC:&5C:S,-(&IM<"!D969O8C(-.F-H96-K,PT-*@TJ
MH&1E9F]B,Z`M+:!S152@55"@3T)*14-4H",S+*!!H$-50D4-*@UD969O8C,-
M.FEN:70-#2!L9&$@(S,P(#MS25A4145.H#1D+*!%24=(5*`S9"M325B@3D]2
M34%,4PT@8VUP('1O=&YU;0T@8F5Q(#IG<F]W(#MO3DQ9H%)53J!42$6@24Y)
M5*!23U5424Y%H$].0T4-#2!S=&$@=&]T;G5M#2!L9&$@(S$V#2!S=&$@;G5M
M;V(Q(#MP4DE-05)9H"@T9"D-(&QD82`C,30-('-T82!N=6UO8C$R(#MS14-/
M3D1!4EF@*#-D*:`KH$Y/4DU!3%,-(&QD82`C-#0-('-T82!N=6UC;VYS(#LT
M-*!#3TY.14-424].4Z`H,"XN-#,I#0T@;&1A(",D9C@@.W1(25.@2T5%4%.@
M5$A%H#-DH$]"2D5#5*!&4D]-#2!L9'@@(S@@.T=%5%1)3D>@5$]/H$))1Z`H
M4TY%04M9+*!%2"D-.FPQ('-T82!O8FQI<W1W*S$U+'@-(&1E>`T@8FYE(#IL
M,0T-*J!S152@55"@5$A%H$-/3DY%0U1)3TZ@3$E35%,-*F]B,6-O;J`M/J!P
M;&ES='<LH#0TH%!44PTJ;F]R;3&@+3Z@<&QI<W1Y+*`T,*!05%.@5$]404P-
M(&QD>2`C.#<@.S0T*C*@4$])3E13H%!%4J!#3TY.14-424].#3IL;V]P(&QD
M82!O8C-C;VXL>0T@<W1A('!L:7-T=RQY#2!L9&$@;F]R;3,L>2`[>45!2"R@
M4T^@5T6@0T]06:!!H$)53D-(H$]&#2!S=&$@<&QI<W1Y+'D@.T585%)!H$I5
M3DLLH$))1Z!72$]/4"X-(&1E>0T@8G!L(#IL;V]P#0T@:G-R('-E=&-O;G,-
M*@TJH&F@05-354U%H$Y/4DU!3%.@2$%61:!"145.H$-,14%2142@3U54H$)9
MH$-!3$Q)3D>@4D]55$E.10TJ#2!L9&$@(S(T(#MN3U>@4T54H%50H%1(1:!.
M3U)-04Q3#2!S=&$@;V)L:7-T>"LR-"`[*R\MH#$L,"PPH$540RZ@1D]2H$&@
M0U5"10T@<W1A(&]B;&ES='DK,C8-('-T82!O8FQI<W1Z*S(X#2!L9&$@(S(U
M-BTR-`T@<W1A(&]B;&ES='@K,C4-('-T82!O8FQI<W1Y*S(W#2!S=&$@;V)L
M:7-T>BLR.0T-.F=R;W<-(&QD82`C/'9E<G0S#2!S=&$@<&]I;G0Q#2!L9&$@
M(SYV97)T,PT@<W1A('!O:6YT,2LQ#2!L9'D@(S(S(#MN54U"15*@3T:@4$])
M3E13H%1/H$=23U>@,"XN>0T-*J!G4D]7H%1(1:!8+4-/3U)$4Z!&25)35"X-
M#3IX8V]O<F1S(&QD82!O8FQI<W1X#2!C;7`@(S(T#2!B97$@.GEC;V]R9',-
M(&QD82`C)3`P,3$P,#`P(#MM05-+#2!J;7`@9W)O=R`[9W)O=Z!724Q,H')T
M<Z!&3U*@55,N#0TZ>6-O;W)D<R!L9&$@;V)L:7-T>0T@8VUP(",R-`T@8F5Q
M(#IZ8V]O<F1S#2!L9&$@(R4P,#`P,3$P,`T@:FUP(&=R;W<-#3IZ8V]O<F1S
M(&QD82!O8FQI<W1Z(#MH059%H&F@2$E4H#(TH"A-05B@5D%,544IH%E%5#\-
M(&-M<"`C,C0-(&)E<2`Z=V-O;W)D<PT@:6YC('-X>2`[;4%+1:!42$6@3T)*
M14-4H$&@3$E45$Q%#2!I;F,@<WEZ(#M.24-%4J!,3T]+24Y'+@T@;&1A(",E
M,#`P,#`P,3$-(&IM<"!G<F]W#0TZ=V-O;W)D<R!L9&$@;V)L:7-T=PT@8VUP
M(",R,PT@8FYE(#IC;VYT#2!L9'D@(R1F9@T@<W1Y('AY:6YC#2!L9'D@(S`Q
M(#MS5$%25*!42$6@04Y'3$53H$=/24Y'#2!S='D@=WAI;F,-('-T>2!Y>FEN
M8PT@:6YY#2!S='D@>'II;F,-.F-O;G0-(&QD82`C)3$Q,#`P,#`P#2!J;7`@
M9W)O=PT-*@TJH'1(25.@25.@5$A%H$Q)4U2@3T:@5D525$E#15,LH$%3H$1%
M4T-224)%1*!)3J!G<F]WH$%"3U9%+@TJH#`PH#V@,"R@,#&@/:`Q+*`Q,:`]
MH"TQ#2H-=F5R=#,@9&9B("4P,3`Q,#$P,2`[,2PQ+#$L,0T@9&9B("4P,3`Q
M,#$Q,2`[,2PQ+#$L+3$-(&1F8B`E,#$P,3$Q,#$-(&1F8B`E,#$P,3$Q,3$-
M(&1F8B`E,#$Q,3`Q,#$-(&1F8B`E,#$Q,3`Q,3$-(&1F8B`E,#$Q,3$Q,#$-
M(&1F8B`E,#$Q,3$Q,3$-(&1F8B`E,3$P,3`Q,#$@.RTQ+#$L,2PQ#2!D9F(@
M)3$Q,#$P,3$Q#2!D9F(@)3$Q,#$Q,3`Q#2!D9F(@)3$Q,#$Q,3$Q#2!D9F(@
M)3$Q,3$P,3`Q#2!D9F(@)3$Q,3$P,3$Q#2!D9F(@)3$Q,3$Q,3`Q#2!D9F(@
M)3$Q,3$Q,3$Q(#LM,2PM,2PM,2PM,:"@14Y$H$]&H#1DH$-50D6@3$E35`T@
M9&9B("4P,#`Q,#$P,2`[,"PQ+#$L,:"@,V2@0U5"10T@9&9B("4P,#`Q,#$Q
M,0T@9&9B("4P,#`Q,3$P,0T@9&9B("4P,#`Q,3$Q,0T@9&9B("4P,#$Q,#$P
M,0T@9&9B("4P,#$Q,#$Q,0T@9&9B("4P,#$Q,3$P,0T@9&9B("4P,#$Q,3$Q
M,2`[14Y$H$]&H#-DH$-50D6@3$E35"R@,C2@4$])3E13H%1/5$%,#0TJ#2J@
M=$A%4T6@05)%H%1(1:!#3TY.14-424].4Z!"1517145.H%!/24Y44PTJ#2J@
M<D5-14U"15*@5$A!5*!42$531:!!4D6@:6YD:6-E<Z!)3E1/H%1(1:!W:&]L
M9:!03TE.5`TJH$Q)4U0LH$Y/5*!*55-4H$&@3$]#04R@4$])3E0A(2$-*@TJ
MH'1(15-%H$-/3DY%0U1)3TY3H$%21:!!3$R@4$Q!0T5$H$E.5$^@0:!,25-4
MH%=(24-(H$U!60TJH$)%H$%#0T534T5$H$)9H%1(1:!-04E.H$1205=)3D>@
M4D]55$E.12Z@H'1(14Z@5$A%#2J@3D]234%,4Z!!4D6@4$Q!0T5$H$E.H%1(
M14E2H$]73J!,25-4+*!!3$].1Z!7251(#2J@24Y$24-%4Z!)3E1/H%1(1:!#
M3TY.14-424].H$Q)4U0NH*!T2$6@3D]234%,H$Q)4U2@5T]22U,-*J!!4Z!&
M3TQ,3U=3.@TJ#2J@=$A%H$9)4E-4H%-%5*!/1J!.54U"15)3H$E.1$5815.@
M1$E214-43%F@24Y43Z!42$4-*J!04DE-05)9H$]"2D5#5*!#3TY.14-424].
M4Z`M+:!42$521:!!4D6@3D^@3D]234%,4PTJH%1/H%=/4E)9H$%"3U54+*!!
M3D2@5$A)4Z!!3$Q/5U.@5$A%H$]"2D5#5%.@5$^@0D4-*J!44D%.4U!!4D5.
M5$Q9H$A!3D1,142@0EF@5$A%H$1205=)3D>@4D]55$E.12Z@H&]42$525TE3
M10TJH$5!0TB@1D%#1:!/1J!42$6@4T5#3TY$05)9H$E3H$A!3D1,142@5$A%
MH%-!344Z#2J@=$A%H$9)4E-4H$Y534)%4J!)4Z!42$6@24Y$15B@5$^@5$A%
MH$Y/4DU!3*!)3J!42$6@4$])3E0-*J!,25-4H"AP;&ES="DNH*!F3TQ,3U=)
M3D>@5$A)4Z!)3D1%6*!)4Z!!H$Q)4U2@3T:@24Y$24-%4PTJH$E.5$^@5$A%
MH$-/3DY%0U1)3TZ@3$E35*`M+:!42$531:!#3TY.14-424].4Z!-04M%H%50
MH%1(10TJH$9!0T6@5TA)0TB@0D5,3TY'4Z!43Z!42$6@3D]234%,+J"@=$A)
M4Z!#3TY.14-424].H$Q)4U0-*J!)4Z!415)-24Y!5$5$H$)9H$&@6D523RR@
M04Y$H$9/3$Q/5T5$H$)9H$]42$52H$Y/4DU!3`TJH$Q)4U13+J"@=$A%H%=(
M3TQ%H%1(24Y'H$E3H%1%4DU)3D%4142@5TE42*!!H%-%0T].1*!:15)/+@TJ
M#2J@=$A54Z!42$6@1%)!5TE.1Z!23U5424Y%H%=/4DM3H$%3H$9/3$Q/5U,Z
MH$-/3DY%0U1)3TY3#2J@1E)/3:!42$6@0T].3D5#5$E/3J!,25-4H$%21:!3
M54-#15-3259%3%F@4D5!1*!)3J!!3D0-*J!*3TE.140LH%5.5$E,H$&@6D52
M3Z!)4Z!(250NH*!T2$6@3D585*!03TE.5*!)4Z!42$5.#2J@4D5!1*!)3J!!
M4Z!!H$Y/4DU!3*!)3D1%6"Z@H&E&H%I%4D\LH%1(14Z@5T6@05)%H$1/3D4L
M#2J@3U1(15)725-%H%1(25.@3D]234%,H$E3H$-(14-+142@5$^@4T5%H$E&
MH%1(1:!&04-%#2J@25.@5DE324),12Z@H&E&H$Y/5*!42$5.H$E4H%-+25!3
MH%1/H%1(1:!.15A4H%!/24Y4+`TJH$]42$525TE31:!)5*!$3T53H%1(1:!$
M4D%724Y'H%1(24Y'H$%"3U9%+@TJ#2J@85.@14%#2*!#3TY.14-424].H$E3
MH$1205=.H$&@0T]24D534$].1$E.1Z!&3$%'H$E3#2J@4T54H$E.H$&@4TE-
M24Q!4J!#3TY.14-424].H$Q)4U0NH*!T2$E3H%=!62R@0T].3D5#5$E/3E,-
M*J!32$%2142@0D545T5%3J!625-)0DQ%H$9!0T53H$1/H$Y/5*!.145$H%1/
MH$)%H$1205=.H%1724-%+@TJ#2J@;D57H$9%05154D4ZH$Y/5Z!#3TY.14-4
M24].4Z!-05F@0D6@1%)!5TZ@55-)3D>@14E42$52#2J@4T],242@3U*@1$]4
M5$5$H$Q)3D53+J"@=$A%H$-50D6@1$]%4Z!.3U2@3D5%1*!)5"R@0E54#2J@
M252@2$5,4%.@24U-14Y314Q9H%=)5$B@5$A%H$]42$524Z!43Z!$4D%7H$Q)
M3D53H$-/3DY%0U1)3D<-*J`B24Y.15(BH$%.1*`B3U5415(BH$]"2D5#5%.@
M5TE42*!$3U14142@3$E.15,LH%1/H%-%1:!(3U<-*J!42$E.1U.@0TA!3D=%
MH%=(14Z@5$A%6:!35$%25*!43Z!455).H$E.4TE$12U/550NH*!S24Y#1:!4
M2$5210TJH$%21:!.3U2@1T])3D>@5$^@0D6@34]21:!42$%.H#$R-Z!#3TY.
M14-424].4RR@5$A%H$A)1T@-*J!"252@3T:@5$A%H$-/3DY%0U1)3TZ@24Y$
M15B@4T525D53H$%3H$&@1$]45$5$H$Q)3D6@1DQ!1SH-*J!)1J!42$6@2$E'
M2*!"252@3T:@5$A%H$E.1$58H$E3H%-%5"R@5$A%3J!$4D%7H%1(1:!#3TY.
M14-424Y'#2J@3$E.1:!!4Z!$3U14140NH*!H14Y#1:!42$6@1%)!5TE.1Z!2
M3U5424Y%H$].3%F@3D5%1%.@5$\-*J!35%))4*!/1D:@5$A)4Z!"252@04Y$
MH%-%5*!42$6@1DQ!1Z!D;W1T962@04-#3U)$24Y'3%DN#0UO8C-C;VX@:&5X
M(#`P,#$P,#`R,#`P-#`P,#@@.S`M,:`P+3*@,"TTH#`M.`T@:&5X(#`Q,#,P
M,3`U,#$P.2`[,2TSH#$M-:`Q+3D-(&AE>"`P,C`S,#(P-C`R,&$@.S(M,Z`R
M+3:@,BUA#2!H97@@,#,P-S`S,&(@("`[,RTWH#,M8@T@:&5X(#`T,#4P-#`V
M,#0P8R`[-"TUH#0M-J`T+6,-(&AE>"`P-3`W,#4P9"`@(#LU+3>@-2UD#2!H
M97@@,#8P-S`V,&4@("`[-BTWH#8M90T@:&5X(#`W,&8@("`[-RUF#2!H97@@
M,#@P.3`X,&$P.#!C(#LX+3F@."UAH#@M8PT@:&5X(#`Y,&(P.3!D("`@.SDM
M8J`Y+60-(&AE>"`P83!B,&$P92`@(#M!+4*@02U%#2!H97@@,&(P9B`@(#M"
M+48-(&AE>"`P8S!D,&,P92`@(#M#+42@0RU%#2!H97@@,&0P9@T@:&5X(#!E
M,&8-;V(S,F-O;B`[,V2@0U5"10T@:&5X(#$P,3$Q,#$R,3`Q-"`[,38M,3>@
M,38M,3B@,38M,C`-(&AE>"`Q,3$S,3$Q-2`[,3<M,3F@,3<M,C&@H"@S-2D-
M(&AE>"`Q,C$S,3(Q-B`[,3@M,3F@,3@M,C(-(&AE>"`Q,S$W(#LQ.2TR,Z"@
MH*"@H*"@*#,Y*0T@:&5X(#$T,34Q-#$V(#LR,"TR,:`R,"TR,@T@:&5X(#$U
M,3<@.S(Q+3(SH*"@H*"@H*`H-#(I#2!H97@@,38Q-R`[,C(M,C,-*J`T9#J@
M,S*@0T].3D5#5$E/3E,LH#-D.J`Q,J!#3TY.14-424].4PUN;W)M,R`[;$E3
M5*!/1J!.3U)-04Q3H"N@0T].3D5#5$E/3E,-(&AE>"`R,"`[9DE24U2@3E5-
M0D52H$E3H$Y534)%4J!/1J`T9*!#3TY3#2!D9F(@,S@@.W-%0T].1*!.54U"
M15*@25.@3E5-0D52H$]&H%!/24Y44PT[24Z@3$E35"R@0D5,3U<-(&AE>"`P
M,#$X(#MN3U)-04R@,:!!5*!)3D1%6*`R-*`]H#$L,"PP#2!D9F(@,S(@.S$V
M+3$W#2!D9F(@,S,@.S$V+3$X#2!D9F(@,S4@.S$W+3$Y#2!D9F(@,S<@.S$X
M+3$Y#2!H97@@,#`Q.2`[;D]234%,H",RH#V@+3$L,"PP#2!D9F(@-#`@.S(P
M+3(Q#2!D9F(@-#$@.S(P+3(R#2!D9F(@-#(@.S(Q+3(S#2!D9F(@-#,@.S(R
M+3(S#2!H97@@,#`Q82`[;D]234%,H",S/:`P+#$L,`T@9&9B(#,R#2!D9F(@
M,S8-(&1F8B`T,`T@9&9B(#,T#2!H97@@,#`Q8B`[;D]234%,H#0]H#`L+3$L
M,`T@9&9B(#,W#2!D9F(@,S@-(&1F8B`S.0T@9&9B(#0S#2!H97@@,#`Q8R`[
M;D]234%,H#4]H#`L,"PQ#2!D9F(@,S,-(&1F8B`S-`T@9&9B(#0Q#2!D9F(@
M,S@-(&AE>"`P,#%D(#MN3U)-04R@-CV@,"PP+"TQ#2!D9F(@,S4-(&1F8B`S
M-@T@9&9B(#,Y#2!D9F(@-#(-(&AE>"`P,#`P(#ME3D2@3R>@5$A%H$Q)4U0-
M#0TJ+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0TJ#2J@9&5F;V(P
MH"TMH'-%5*!54*!/0DI%0U2@(S`LH$&@5$544D%(14123TX-*@TJH'1(25.@
M25.@3TY%H$]&H%1(1:!/0DI%0U13H&F@1$52259%H$923TV@5$A%H$-50D4-
M*J!615)424-%4RX-*@TJH'9%4E1)0T53H$%21:!!3$R@(E173Z!!5T%9(J!&
M4D]-H$5!0TB@3U1(15*@3TZ@5$A%H$-50D4N#2J@<U1!4E1)3D>@1E)/3:!!
MH#-DH$-50D4LH$].1:!354-(H%-%5*!/1J!03TE.5%.@25,-*J`H,2PQ+#$I
MH"@Q+"TQ+"TQ*:`H+3$L,2PM,2F@04Y$H"@M,2PM,2PQ*:`M+:!43Z!'150-
M*J!&4D]-H$].1:!03TE.5*!43Z!42$6@3D585*!215%525)%4Z!44D%615)3
M24Y'H%173PTJH$Q)3D6@4T5'345.5%.@3TZ@5$A%H$-50D4NH*!G14Y%4D%,
M25I)3D>@5$^@-&0LH&D-*J!!1T%)3J!54T6@0:!3152@3T:@4$])3E13H$].
MH%1(1:!#54)%H%=(24-(H$1)1D9%4@TJH$E.H%173Z!#3T]21$E.051%4Z!!
M3D2@24Z@-*!#3T]21$E.051%4RR@12Y'+J!35$%25$E.1PTJH$923TV@*#$L
M,2PQ+#$IH%1(1:!45T\M05=!6:!03TE.5%.@05)%H"@Q+#$L+3$L+3$IH$54
M0RX-*J!!3D2@5$A%H$9/55(M05=!6:!03TE.5*!)4Z`H+3$L+3$L+3$L+3$I
M+@TJ#2J@:4:@64]5H%=!3E2@5$^@0D6@34]21:!34$5#249)0RR@::!42$E.
M2Z!42$E3H$9/4DU3H$$-*J!#3TU03$541:!3152@3T:@4$])3E13H$5154E6
M05))04Y4H%5.1$52H%1(1:!!0U1)3TZ@3T8-*J!42$6@4D5,159!3E2@4UE-
M34544EF@1U)/55"@*$%#5$E.1Z!/3J!/3D6@4$])3E2@5TE42`TJH$&@4UE-
M34544EF@3U!%4D%43U*@1T5.15)!5$53H$%.3U1(15*@4$])3E2@24Z@5$A%
MH%-%5"DN#2H-*J!A3D]42$52H%=!6:!/1J!,3T]+24Y'H$%4H$E4H$E3H%1(
M052@::!33$E#1:!/1D:@0T]23D524PTJH$]&H%1(1:!#54)%H%=(24-(H$%2
M14XG5*!!1$I!0T5.5*!43Z!%04-(H$]42$52+@TJ#2J@;D]41:!42$%4H$Y/
M4DU!3%.@0T]24D534$].1*!%6$%#5$Q9H%1/H%1(1:`S9*!03TE.5%,N#2J@
M=$A!5*!)4RR@3T:@04Y9H$9!0T6@1D]2345$H$)9H%1(4D5%H%!/24Y44RR@
M5$A%H$9/55)42`TJH$9/4DU3H$&@5D5#5$]2H$Y/4DU!3*!43Z!42$6@1D%#
M1:`H04Q"14E4H%!/24Y424Y'#2J@05=!6:!&4D]-H$E4*2X-*@T-9&5F;V(P
M#3II;FET#2!L9&$@(S$V(#LXH#1D+*`TH#-D*S2@3D]234%,4PT@8VUP('1O
M=&YU;0T@8F5Q(#IG<F]W(#MO3DQ9H%)53J!42$6@24Y)5*!23U5424Y%H$].
M0T4-#2!S=&$@=&]T;G5M#2!L<W(@.VF@3D5%1*!42$]31:!"651%4R$A(0TJ
MH&QD8:`C.`T@<W1A(&YU;6]B,2`[<%))34%26:`H-&0I#2J@;&1AH",X#2!S
M=&$@;G5M;V(Q,B`[<T5#3TY$05)9H"@S9"F@*Z`TH$Y/4DU!3%,-(&QD82`C
M,S`-('-T82!N=6UC;VYS(#LS,*!#3TY.14-424].4Z`H,"XN,CDI#0T@;&1X
M(",T#2!L9&$@(R1F."`[;4%+1:!/0DI%0U2@0:!,25143$6@4TU!3$Q%4@TZ
M;#$@<W1A(&]B;&ES='<K-RQX#2!D97@-(&)N92`Z;#$-#2J@<T54H%50H%1(
M1:!#3TY.14-424].H$Q)4U13#2IO8C!C;VZ@+3Z@<&QI<W1W+*`S,*!#3TY.
M14-424].4Z`H,J!05%.@4$52H$-/3BD-*FYO<FTPH"T^H'!L:7-T>2R@,C2@
M4%13H%1/5$%,#2!L9'D@(S4Y(#LS,"HR#3IL;V]P(&QD82!O8C!C;VXL>0T@
M<W1A('!L:7-T=RQY#2!L9&$@;F]R;3`L>0T@<W1A('!L:7-T>2QY#2!D97D-
M(&)P;"`Z;&]O<`T-(&IS<B!S971C;VYS#0TJ#2J@<T54H%=(24-(H$-/3DY%
M0U1)3TY3H%=)3$R@55-%H$1/5%1%1*!,24Y%4PTJH&1/5%1%1*!#3TY3H$%2
M13J@,"TTH#`M-:`P+3:@,2TTH#$M-:`Q+3>@,BTTH#(M-J`R+3<-*J"@H*"@
MH*"@H*"@H*"@H*"@H#,M-:`S+3:@,RTW#2!L9'D@(S$Q#3IL,B!L9&$@9&]T
M8V]N,"QY#2!T87@-(&QD82!D<F%W8V]N+'@-(&]R82`C)#@P#2!S=&$@9')A
M=V-O;BQX#2!D97D-(&)P;"`Z;#(-#3IG<F]W#2!L9&$@(SQV97)T,`T@<W1A
M('!O:6YT,0T@;&1A(",^=F5R=#`-('-T82!P;VEN=#$K,0T@;&1Y(",Q-2`[
M;E5-0D52H$]&H%!/24Y44Z!43Z!'4D]7H#`N+GD-(&QD82`C)&9F(#MG4D]7
MH$%,3*!#3T]21%.@15%504Q,60T@:FUP(&=R;W<-#2H-*J!N15A4H%1(1:!6
M15)415B@3$E35`TJ#79E<G0P(&1F8B`E,#$P,3`Q,#$@.S$L,2PQ+#$-(&1F
M8B`E,#$P,3$Q,3$-(&1F8B`E,#$Q,3`Q,3$-(&1F8B`E,#$Q,3$Q,#$-(&1F
M8B`E,3$P,3`Q,3$-(&1F8B`E,3$P,3$Q,#$-(&1F8B`E,3$Q,3`Q,#$-(&1F
M8B`E,3$Q,3$Q,3$@.V5.1*!/1J`T9*!03TE.5%,-(&1F8B`E,#`P,3`Q,#$-
M(&1F8B`E,#`P,3$Q,3$-(&1F8B`E,#`Q,3`Q,3$-(&1F8B`E,#`Q,3$Q,#$@
M.S$RH%!/24Y44Z!43U1!3`T@9&9B("4P,#$Q,3$Q,0T@9&9B("4P,#$Q,#$P
M,0T@9&9B("4P,#`Q,3$P,0T@9&9B("4P,#`Q,#$Q,2`[<$Q54Z!&3U52H$Y/
M4DU!3%,-#6]B,&-O;B!H97@@,#`P,3`P,#(P,#`S,#`P-#`P,#4P,#`V(#LP
M+3&@,"TRH#`M,Z`P+32@,"TUH#`M-@T@:&5X(#`Q,#(P,3`S,#$P-#`Q,#4P
M,3`W(#LQ+3*@,2TSH#$M-*`Q+36@,2TW#2!H97@@,#(P,S`R,#0P,C`V,#(P
M-R`[,BTSH#(M-*`R+3:@,BTW#2!H97@@,#,P-3`S,#8P,S`W(#LS+36@,RTV
MH#,M-PT@:&5X(#`T,#4P-#`V,#0P-PT@:&5X(#`U,#8P-3`W#2!H97@@,#8P
M-R`[-&2@0T].3D5#5$E/3E.@*#(T*0T-;V(P,F-O;B!H97@@,#@P.3`X,&$P
M.#!B(#LX+3F@."TQ,*`X+3$Q#2!H97@@,#DP83`Y,&(-(&AE>"`P83!B(#LS
M9*!#3TY.14-424].4Z`H-BD-#61O=&-O;C`@:&5X(#`S,#0P-2`[=$A%4T6@
M0T].3D5#5$E/3E.@5TE,3*!"1:!$3U14140-(&AE>"`P.#`Y,&$@.U1(15F@
M0T].3D5#5*!03TE.5%.@5TE42*!7/3&@5$\-(&AE>"`P8S!D,&4@.U!/24Y4
M4Z!7251(H%<]+3$-(&AE>"`P9C$P,3$@.S$RH%1/5$%,#0UN;W)M,"`[;D]2
M34%,4RM#3U)215-03TY$24Y'H$-/3DY%0U1)3TY3#2!D9F(@,C0@.VY534)%
M4J!/1J`T9*!#3TY.14-424].4PT@9&9B(#(R(#MN54U"15*@3T:@4$])3E13
MH$)%3$]7#2!H97@@,#`P8R`[;D]234%,H$%4H$E.1$58H#$RH#V@,2PQ+#$-
M(&1F8B`R-R`[.2TQ,`T@9&9B(#(X(#LY+3$Q#2!D9F(@,CD@.S$P+3$Q#2!H
M97@@,#`P9"`[;D]234%,H#$L+3$L+3$-(&1F8B`R-0T@9&9B(#(V#2!D9F(@
M,CD-(&AE>"`P,#!E(#MN3U)-04R@+3$L,2PM,0T@9&9B(#(T(#LX+3$Y#2!D
M9F(@,C8@.S@M,3$-(&1F8B`R."`[.2TQ,0T@:&5X(#`P,&8@.VY/4DU!3*`M
M,2PM,2PQ#2!D9F(@,C0@.S@M.0T@9&9B(#(U(#LY+3$P#2!D9F(@,C<@.SDM
M,3`-(&AE>"`P,#`P(#LR,J!03TE.5%.@24Z@3$E35`T-*BTM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2T-*@TJH&1E9F]B,@TJ#2J@<T54H%50H$]"
M2D5#5*`C,BR@04Z@3T-404A%1%)/3BX-*@TJH'=(052@24Z@5$A%H%=/4DQ$
MH$E3H%1(1:`T9*!!3D%,3TY'H$]&H$%.H$]#5$%(14123TX_#2H-*J!T2$52
M1:!!4D6@5%=/H%=!65.@3T:@3$]/2TE.1Z!!5*!42$E3+J"@8:`S9*!/0U1!
M2$5$4D].#2J@2$%3H$-/3U)$24Y!5$53H"@K+RTQ+#`L,"F@*#`L*R\M,2PP
M*:`H,"PP+"LO+3$I+*!33PTJH$].1:!03U-324))3$E46:!43Z!%6%1%3D2@
M5$A)4Z!)4Z!!3J!/0DI%0U2@5TE42`TJH$-/3U)$24Y!5$53H$%4H"@K+RTQ
M+#`L,"PP*:`H,"PK+RTQ+#`L,"F@151#+@TJ#2J@;TZ@5$A%H$]42$52H$A!
M3D0LH%1(1:!/0U1!2$5$4D].H$E3H$5!4TE,6:!$15))5D5$#2J@1E)/3:!4
M2$6@0U5"12R@0EF@2D])3DE.1Z!42$6@0T5.5$524Z!/1J!%04-(H$9!0T4-
M*J!/1J!42$6@0U5"1:`H0U545$E.1Z!/1D:@5$A%H$-/4DY%4E,LH$E&H%E/
M5:!,24M%*2X-*J!T2%53H$E4H$E3H$5!4UF@14Y/54=(H%1/H$585$5.1*!4
M2$E3H$E.5$^@-&2@0EF@2D])3DE.1PTJH%1(1:!#14Y415)3H$]&H$5!0TB@
M,F2@1D%#1:!/1J!42$6@-&2@0U5"12R@5TA)0TB@3$5!1%,-*J!43Z!03TE.
M5%.@3$E+1:`H*R\M,2PK+RTQ+#`L,"F@*"LO+3$L,"PK+RTQ+#`IH$540RX-
M*@TJH'1(1:!&25)35*!-151(3T2@25.@04Y!3$]'3U53H%1/H$I/24Y)3D>@
M5$A%H$-%3E1%4J!/1@TJH$5!0TB@,V2@0U)/4U,M4T5#5$E/3J!/1J!42$6@
M-&2@0U5"12R@5TA%4D5!4Z!42$6@4T5#3TY$#2J@34542$]$H$E3+*!!4Z!7
M05.@4U1!5$5$+*!*3TE.24Y'H%1(1:!#14Y415)3H$]&H$5!0T@-*J`R9*!#
M4D]34RU314-424].H"TMH%1(1:!#14Y415)3H$]&H$-50D53H%9%4E-54Z!4
M2$6@0T5.5$524PTJH$]&H%!,04Y%4RX-*@TJH'=(24-(H$U%5$A/1*!43Z!5
M4T4_H*!T2$6@4T5#3TY$H$U%5$A/1*!'14Y%4D%415.@,C2@5D525$E#15,-
M*J!7251(H#DVH$Q)3D6@4T5'345.5%.@2D])3DE.1Z!42$5-H$%,3"Z@H&F@
M0T%.H%-%1:!72$%4H$E4#2J@3$]/2U.@3$E+1:!)3J!-6:!(14%$+*!IH$A!
M5D6@1%)!5TZ@0:!024-455)%+*!!3D2@::!(059%#2J@5U))5%1%3J!$3U=.
MH$%,3*!42$6@4$])3E13H$%.1*!,24Y%H$-/3DY%0U1)3TY3+J"@84Q42$]5
M1T@-*J!)5*!214%,3%F@25.@4%)%5%19H%-44D%)1TA41D]25T%21*!43Z!6
M25-504Q)6D4LH$E4H%-%14U3#2J@3T)624]54Z!43Z!-1:!42$%4H$].H%1(
M1:!#3TU0551%4J!)5*!724Q,H$Q/3TN@3$E+1:!!H%)%04P-*J!-15-3+*!%
M4U!%0TE!3$Q9H$].H$I54U2@0:`Y-E@Y-J!'4DE$+*!%5D5.H%=)5$B@1$]4
M5$5$H$Q)3D53+@TJH&U/4D5/5D52+*!IH"I$3RJ@3TY,6:!(059%H#1+H%1/
MH%=/4DN@5TE42"R@04Y$H%1(1:`Q,BU3241%1`TJH$]"2D5#5*!724Q,H$)%
MH$&@1$]/6EF@5TE42*`Y-J!#3TY.14-424].4Z!!3D2@4U5#2"R@4T\-*J!I
MH$I54U2@55-%H%1(1:!/0DI%0U2@1E)/3:!42$6@1DE24U2@34542$]$+@TJ
M#2J@*'1(1:!314-/3D2@34542$]$H$E3H$%71E5,3%F@0T]/3*!43Z!42$E.
M2Z!!0D]55"R@5$A/54=(+`TJH$Y/5*!43Z!-14Y424].H$Y%050M3Z!+145.
MH%1/H$Q/3TN@050A*0TJ#61E9F]B,@TZ:6YI=`T@;&1A(",R,B`[.*`T9"R@
M-J`S9*`KH#B@3D]234%,4PT@8VUP('1O=&YU;0T@8F5Q(#IG<F]W(#MO3DQ9
MH%)53J!42$6@24Y)5*!23U5424Y%H$].0T4-#2!S=&$@=&]T;G5M#2!L9&$@
M(S@-('-T82!N=6UO8C$@.W!224U!4EF@*#1D*0T@;&1A(",Q-`T@<W1A(&YU
M;6]B,3(@.W-%0T].1$%26:`H,V0IH"N@3D]234%,4PT@;&1A(",R-"LQ,@T@
M<W1A(&YU;6-O;G,@.S,VH$-/3DY%0U1)3TY3#0T@;&1X(",V#2!L9&$@(R1F
M-B`[;4%+1:`S9*!/0DI%0U2@0:!,25143$6@4TU!3$Q%4@TZ;#$@<W1A(&]B
M;&ES='<K-RQX#2!D97@-(&)N92`Z;#$-#2J@<T54H%50H%1(1:!#3TY.14-4
M24].H$Q)4U13#2IO8C)C;VZ@+3Z@<&QI<W1W+*`S-J!#3TY.14-424].4Z`H
M,J!05%.@4$52H$-/3BD-*FYO<FTRH"T^H'!L:7-T>2R@H#0TH%!44Z!43U1!
M3`T@;&1Y(",W,2`[,S8J,@TZ;&]O<"!L9&$@;V(R8V]N+'D-('-T82!P;&ES
M='<L>0T@;&1A(&YO<FTR+'D-('-T82!P;&ES='DL>0T@9&5Y#2!B<&P@.FQO
M;W`-#2!J<W(@<V5T8V]N<PT-*@TJH'-%5*!72$E#2*!#3TY.14-424].4Z!7
M24Q,H%531:!$3U14142@3$E.15,-*J!I3J!42$E3H$-!4T4LH$Q)3D53H$-/
M3DY%0U1)3D>@0:!03TE.5*!43PTJH$%.3U1(15*@4$])3E2@5TE42*!.3TY:
M15)/H%<M0T]/4D1)3D%412X-*@T@;&1Y(",Q,2`[::!35%5#2Z!42$5-H$E.
MH%1(1:!&25)35`TZ;#(@;&1A(&1R87=C;VXL>2`[5%=%3%9%H%-,3U13#2!O
M<F$@(R0X,`T@<W1A(&1R87=C;VXL>0T@9&5Y#2!B<&P@.FPR#0TZ9W)O=PT@
M;&1A(",\=F5R=#(-('-T82!P;VEN=#$-(&QD82`C/G9E<G0R#2!S=&$@<&]I
M;G0Q*S$-(&QD>2`C,C(@.VY534)%4J!/1J!03TE.5%.@5$^@1U)/5Z`P+BYY
M+3$-(&QD82`C)&9F(#MG4D]7H$%,3*!#3T]21%.@15%504Q,60T@:G-R(&=R
M;W<-*@TJH'1(25.@3T)*14-4H$E3H$&@3$E45$Q%H%--04Q,15*@5$A!3J!4
M2$6@3U1(15)3+`TJH%-/H&F@0TA%052@0:!,25143$6@04Y$H$I535"@0D]4
M2*!/0DI%0U13H$]55`TJH$&@3$E45$Q%H$9!4E1(15*@3TY#1:!42$59)U)%
MH$1/3D6@1U)/5TE.1RX-*@TJH'-04D])3D<A#2H-(&QD82!O8FQI<W1W#2!C
M;7`@(S(T#2!B;F4@.F1O;F4-(&QD>"`C,3,-.FPS(&%S;"!O8FQI<W1W+'@-
M(&%S;"!O8FQI<W1X+'@@.T-,3U-%H%1/H%1(1:!%1$=%#2!A<VP@;V)L:7-T
M>2QX(#LH1$]73J!"6:!!H%))5D52/RD-(&%S;"!O8FQI<W1Z+'@-(&1E>`T@
M8G!L(#IL,PT-.F1O;F4@<G1S#0TJ#2J@;D585*!42$6@5D525$58H$Q)4U0-
M*@UV97)T,B!D9F(@)3`Q,#`P,#`P#2!D9F(@)3$Q,#`P,#`P#2!D9F(@)3`P
M,#$P,#`P#2!D9F(@)3`P,3$P,#`P#2!D9F(@)3`P,#`P,3`P#2!D9F(@)3`P
M,#`Q,3`P#2!D9F(@)3`P,#`P,#`Q#2!D9F(@)3`P,#`P,#$Q(#LT9*!615)4
M24-%4PT@9&9B("4P,#`Q,#`P,`T@9&9B("4P,#$Q,#`P,`T@9&9B("4P,#`P
M,#$P,`T@9&9B("4P,#`P,3$P,`T@9&9B("4P,#`P,#`P,0T@9&9B("4P,#`P
M,#`Q,2`[,V2@5D525$E#15.@*$Y/5$6@4T%-1:!!4Z!!0D]612D-(&1F8B`E
M,#`P,3`Q,#$-(&1F8B`E,#`P,3`Q,3$-(&1F8B`E,#`P,3$Q,#$-(&1F8B`E
M,#`P,3$Q,3$-(&1F8B`E,#`Q,3`Q,#$-(&1F8B`E,#`Q,3`Q,3$-(&1F8B`E
M,#`Q,3$Q,#$-(&1F8B`E,#`Q,3$Q,3$@.V%.1*!42$6@3D]234%,4Z`M/C(R
MH%1/5$%,#2H-*J!C3TY.14-424].4PTJ#6]B,F-O;B!H97@@,#`P,C`P,#,P
M,#`T,#`P-3`P,#8P,#`W(#LP,J`P,Z`P-*`P-:`P-J`P-PT@:&5X(#`Q,#(P
M,3`S,#$P-#`Q,#4P,3`V,#$P-R`[=$A%4T6@5TE,3*!"1:!$3U14140-(&AE
M>"`P,C`T,#(P-3`R,#8P,C`W#2!H97@@,#,P-#`S,#4P,S`V,#,P-PT@:&5X
M(#`T,#8P-#`W#2!H97@@,#4P-C`U,#<@.S1DH$-/3DY%0U1)3TY3H"@R-*!4
M3U1!3"D-#6]B,C)C;VX@:&5X(#`X,&$P.#!B,#@P8S`X,&0@.S@M,3"@."TQ
M,:`X+3$RH#@M,3,-(&AE>"`P.3!A,#DP8C`Y,&,P.3!D#2!H97@@,&$P8S!A
M,&0@.S$P+3$RH#$P+3$S#2!H97@@,&(P8S!B,&0@.S-DH$-/3E.@*#$RH%1/
M5$%,*0T-;F]R;3(@.VY/4DU!3%,K0T]24D534$].1$E.1Z!#3TY.14-424].
M4PT@9&9B(#(T(#MN54U"15*@3T:@-&2@0T].3D5#5$E/3E,-(&1F8B`T,B`[
M;E5-0D52H$]&H%!/24Y44Z!"14Q/5PT@:&5X(#`P,&4@.VY/4DU!3*!!5*!)
M3D1%6*`Q-*`]H#$L,2PQ#2!D9F(@,C0@.S@M,3`-(&1F8B`S,B`[,3`M,3(-
M(&1F8B`R-B`[,3(M.`T@:&5X(#`P,&8-(&1F8B`R-`T@9&9B(#,S#2!D9F(@
M,C<-(&AE>"`P,#$P#2!D9F(@,C4-(&1F8B`S-`T@9&9B(#(V#2!H97@@,#`Q
M,0T@9&9B(#(U#2!D9F(@,S4-(&1F8B`R-PT@:&5X(#`P,3(-(&1F8B`R.`T@
M9&9B(#,R#2!D9F(@,S`-(&AE>"`P,#$S#2!D9F(@,C@-(&1F8B`S,PT@9&9B
M(#,Q#2!H97@@,#`Q-`T@9&9B(#(Y#2!D9F(@,S0-(&1F8B`S,`T@:&5X(#`P
M,34-(&1F8B`R.0T@9&9B(#,U#2!D9F(@,S$-(&AE>"`P,#`P(#LT,J!03TE.
M5%.@24Z@3$E35`T-*BTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T-
M*@TJH&1E9F]B,0TJ#2J@<T54H%50H$]"2D5#5*`C,2R@0:!&3U525$5%3BU3
M241%1*!42$E.1PTJ#2J@=$A)4Z!)4Z!42$6@5TE,1*!/3D4ZH#,RH%!/24Y4
M4Z!!3D2@.3:@0T].3D5#5$E/3E.@24X-*J!42$6@-&2@3T)*14-4H$%,3TY%
M+J"@9T]21T5/55,N#2H-*J!T2$E3H$]"2D5#5*!)4Z!#3TY35%)50U1%1*!"
M6:!#3TY.14-424Y'H%1(1:!-24103TE.5%,-*J!/1J!%04-(H$Q)3D6@4T5'
M345.5*!/3J!42$6@0U5"12Z@H'1(25.@04U/54Y44Z!43PTJH%-%5%1)3D>@
M3TY%H$]&H%1(1:!#3T]21$E.051%4Z!/1J!!H$-50D6@5D525$58H%1/H%I%
M4D\L#2J@04Y$H$]&H$-/55)31:!'259%4Z!&3U52H%!/24Y44Z!&3U*@14%#
M2*!&04-%H$]&H%1(10TJH$-50D4NH*!E6$%-4$Q%H#1DH$-/3U)$24Y!5$53
MH$%21:`H,2PQ+#$L,"F@*#$L+3$L,"PQ*0TJH"@M,2PP+"TQ+#$IH$540RX-
M*@TJH&E.H%1(4D5%H$1)345.4TE/3E,LH%1(25.@2$%3H%1(1:!%1D9%0U2@
M3T:@3$]04$E.1Z!42$4-*J!#3U).15)3H$]&H%1(1:!#54)%H$]&1J`H3T:@
M0T]54E-%H$Y/5*!!4Z!$4D%35$E#04Q,60TJH$%3H%=)5$B@5$A%H%1%5%)!
M1T].*2R@3$5!5DE.1Z!$24%-3TY$4Z!72$521:!42$6@0U5"10TJH$9!0T53
MH%53142@5$^@0D6@04Y$H%1224%.1TQ%4Z!72$521:!42$6@0T]23D524Z!5
M4T5$#2J@5$^@0D4N#2H-*J!T2$6@4T],242@3$E.15.@05)%H%1(1:`B24Y.
M15(BH$%.1*`B3U5415(BH#$T+4=/3E,L#2J@04Y$H%1(1:!$3U14142@3$E.
M15.@05)%H$%,3*!42$6@(DU)1$1,12*@,30M1T].4PTJH%1(052@64]5H$=%
M5*!)3BU"1517145.H%1(1:!)3DY%4J!!3D2@3U5415*@1U594RX-*@TJH&].
M1:!/5$A%4J!42$E.1Z!43Z!.3U1%H$E3H%1(052@5$A%H$Y/4DU!3%.@05)%
MH$&@3$E45$Q%#2J@1$E&1D5214Y4H$9/4J!42$E3H$].12Z@H'1(1:!(241$
M14Z@1D%#1:!!3$=/4DE42$V@1$5014Y$4PTJH$].H%1(1:!$3U2@4%)/1%5#
M5*!/1J!42$6@3D]234%,H%9%0U1/4J!7251(H$&@4$])3E0-*J!"14E.1Z!!
MH%!!4E1)0U5,05*@0T].4U1!3E0NH*!T2$%4H$E3+*!/3D6@3D]234%,H%9%
M0U1/4@TJH$E3H"@Q+#`L,"F@04Y$H$E4H$E3H$1/5%1%1*!)3E1/H"@Q+#$L
M,"DLH$=)5DE.1Z`Q+@TJH"@Q+#`L,"F@25.@0:!.3U)-04R@5D5#5$]2H$9/
M4J!42$6@15@M0U5"1:!&04-%H"A.3U<-*J!!H$1)04U/3D0I+J"@8:!.3U)-
M04R@5D5#5$]2H%1/H%1(1:!44DE!3D=,15,LH%1(3U5'2"P-*J!,3T]+4Z!,
M24M%H"@Q+#$L,2DLH$DN12Z@5TA%4D6@5$A%H$],1*!#54)%H%9%4E1%6*!5
M4T5$#2J@5$^@0D4NH*!W2$5.H$1/5%1%1*!)3E1/H"@Q+#$L,"F@5$A)4Z!'
M259%4Z`R+*!!H$1)1D9%4D5.5`TJH$-/3E-404Y4+J"@=$^@1DE8H%1(25.@
M55`LH%1(1:!.3U)-04Q3H$Y%142@5$^@0D6@2$%,5D5$+`TJH%1(052@25,L
MH$E.4U1%042@3T:@*#$L,2PQ*:!)5*!724Q,H$)%H"@Q+S(LH#$O,BR@,2\R
M*2X-*J!N3U>@5$A%H$1/5*!04D]$54-4H$E3H#&@04=!24XLH$%.1*!71:!$
M3TXG5*!.145$H%1/#2J@4U!%0TE!3"U#05-%H%1(1:!(241$14Z@1D%#1:!!
M3$=/4DE42$TN#2H-9&5F;V(Q#3II;FET#2!L9&$@(S4X(#LS,J`T9"R@,3*@
M,V2@*Z`Q-*!.3U)-04Q3#2!C;7`@=&]T;G5M#2!B97$@.F=R;W<@.V].3%F@
M4E5.H%1(1:!)3DE4H%)/551)3D6@3TY#10T-('-T82!T;W1N=6T-(&QD82`C
M,S(-('-T82!N=6UO8C$@.W!224U!4EF@*#1D*0T@;&1A(",Q,BLX*S8-('-T
M82!N=6UO8C$R(#MS14-/3D1!4EF@*#-D*:`KH$Y/4DU!3%,-(&QD82`C,3(P
M#2!S=&$@;G5M8V]N<R`[,3(PH$-/3DY%0U1)3TY3#0T@;&1X(",Q,@T@;&1A
M(",D9C@@.VU!2T6@,V2@3T)*14-4H$&@3$E45$Q%H%--04Q,15(-.FPQ('-T
M82!O8FQI<W1W*S,Q+'@-(&1E>`T@8FYE(#IL,0T-*J!S152@55"@5$A%H$-/
M3DY%0U1)3TZ@3$E35%,-*F]B,6-O;J`M/J!P;&ES='<LH#$R,*!#3TY.14-4
M24].4Z`H,J!05%.@4$52H$-/3BD-*FYO<FTQH"T^H'!L:7-T>2R@H#@PH%!4
M4Z!43U1!3`T@;&1Y(",P,`TZ;&]O<"!L9&$@;V(Q8V]N+'D-('-T82!P;&ES
M='<L>0T@;&1A(&YO<FTQ+'D-('-T82!P;&ES='DL>0T@:6YY#2!C<'D@(S(T
M,"`[,3(P*C(-(&)N92`Z;&]O<`T-(&IS<B!S971C;VYS#0TJ#2J@<T54H%=(
M24-(H$-/3DY%0U1)3TY3H%=)3$R@55-%H$1/5%1%1*!,24Y%4PTJH&E.H%1(
M25.@0T%312R@3$E.15.@0T].3D5#5$E.1Z!!H%!/24Y4H%1/#2J@04Y/5$A%
M4J!03TE.5*!7251(H$Y/3EI%4D^@5RU#3T]21$E.051%+@TJ#2!L9'D@(S(T
M(#MIH%-454-+H%1(14V@24Z@4TQ/5%.@,C0M-S$-.FPR(&QD82!D<F%W8V]N
M+'D-(&]R82`C)#@P#2!S=&$@9')A=V-O;BQY#2!I;GD-(&-P>2`C-S(-(&)N
M92`Z;#(-*@TJH'-%5*!54*!42$6@3D]234%,4PTJ#2J@=$A%4D6@05)%H%17
M3Z!31513H$]&H$Y/4DU!3%,NH*!T2$6@1DE24U2@4T54H$-/4E)%4U!/3D0-
M*J!43Z!42$6@5D525$E#15.@3T:@0:!#54)%H"A$259)1$5$H$)9H%173RF@
M04Y$H%1(10TJH%-%0T].1*!3152@3$E%H$].H%1(1:!#3T]21$E.051%H$%8
M15,N#2H-(&QD>2`C,C4V+3$R(#MS059%4Z!!H$)95$6@*%E/5R$A(2$A*0T@
M;&1X(",P-R`[9DE24U2@4T54#3IL-"!S='@@=&5M<#$@.VQ%5*!XH$))5#TP
MH$-/4E)%4U!/3D2@5$^@*S$O,@T@;'-R('1E;7`Q(#M!3D2@0DE4/3&@0T]2
M4D534$].1*!43Z!#3T]21*`M,2\R#2!L9&$@(S$R(#MC3T]21%.@34%8H$]5
M5*!!5*`R-`T@8F-C(#IC;VYT,2`[2$%,1J!/1J!72$E#2*!)4Z`Q,@T@='EA
M#3IC;VYT,2!S=&$@;V)L:7-T>BLT-"QX(#MN3U)-04Q3H%-405)4H$%4H%!/
M24Y4H#0T#2!L<W(@=&5M<#$-(&QD82`C,3(-(&)C8R`Z8V]N=#(-('1Y80TZ
M8V]N=#(@<W1A(&]B;&ES='DK-#0L>`T@;'-R('1E;7`Q#2!L9&$@(S$R#2!B
M8V,@.F-O;G0S#2!T>6$-.F-O;G0S('-T82!O8FQI<W1X*S0T+'@-(&1E>`T@
M8G!L(#IL-`T-(&QD82`C,C0@.VY/5Z!$3Z!314-/3D2@4T54#2!S=&$@;V)L
M:7-T>"LU,B`[*#$L,"PP*0T@<W1A(&]B;&ES='DK-3,@.R@P+#$L,"D-('-T
M82!O8FQI<W1Z*S4T(#LH,"PP+#$I#2!L9&$@(S(U-BTR-`T@<W1A(&]B;&ES
M='@K-34@.R@M,2PP+#`I#2!S=&$@;V)L:7-T>2LU-B`[*#`L+3$L,"D-('-T
M82!O8FQI<W1Z*S4W(#LH,"PP+"TQ*0T-.F=R;W<-(&QD82`C/'9E<G0Q#2!S
M=&$@<&]I;G0Q#2!L9&$@(SYV97)T,0T@<W1A('!O:6YT,2LQ#2!L9'D@(S0T
M(#MN54U"15*@3T:@4$])3E13H%1/H$=23U>@,"XN>2TQ#2!L9&$@(R1F9B`[
M9U)/5Z!!3$R@0T]/4D13H$5154%,3%D-(&IM<"!G<F]W#0TJ#2J@;D585*!4
M2$6@5D525$58H$Q)4U0-*@UV97)T,2!D9F(@)3`Q,#`P,3`Q(#LH,2PP+#$L
M,2D-(&1F8B`E,#$P,#`Q,3$@.R@Q+#`L,2PM,2D-(&1F8B`E,#$P,#$Q,3$@
M.R@Q+#`L+3$L+3$I#2!D9F(@)3`Q,#`Q,3`Q(#LH,2PP+"TQ+#$I#2!D9F(@
M)3`Q,#$P,#`Q(#LH,2PQ+#`L,2D-(&1F8B`E,#$P,3`P,3$@.T540PT@9&9B
M("4P,3$Q,#`Q,0T@9&9B("4P,3$Q,#`P,2`[-PT@9&9B("4P,3`Q,#$P,`T@
M9&9B("4P,3`Q,3$P,`T@9&9B("4P,3$Q,3$P,`T@9&9B("4P,3$Q,#$P,`T@
M9&9B("4Q,3`P,#$P,0T@9&9B("4Q,3`P,#$Q,0T@9&9B("4Q,3`P,3$Q,0T@
M9&9B("4Q,3`P,3$P,2`[,34-(&1F8B`E,3$P,3`P,#$-(&1F8B`E,3$P,3`P
M,3$-(&1F8B`E,3$Q,3`P,3$-(&1F8B`E,3$Q,3`P,#$-(&1F8B`E,3$P,3`Q
M,#`-(&1F8B`E,3$P,3$Q,#`-(&1F8B`E,3$Q,3$Q,#`-(&1F8B`E,3$Q,3`Q
M,#`@.S(S#2!D9F(@)3`P,#$P,3`Q#2!D9F(@)3`P,#$P,3$Q#2!D9F(@)3`P
M,#$Q,3$Q#2!D9F(@)3`P,#$Q,3`Q#2!D9F(@)3`P,3$P,3`Q#2!D9F(@)3`P
M,3$P,3$Q#2!D9F(@)3`P,3$Q,3$Q#2!D9F(@)3`P,3$Q,3`Q(#LS,2R@14Y$
MH$]&H#1DH%!/24Y44PT@9&9B("4P,#`P,#$P,0T@9&9B("4P,#`P,#$Q,0T@
M9&9B("4P,#`P,3$P,0T@9&9B("4P,#`P,3$Q,0T@9&9B("4P,#`Q,#`P,0T@
M9&9B("4P,#`Q,#`Q,0T@9&9B("4P,#`Q,#$P,`T@9&9B("4P,#`Q,3$P,"`[
M,SD-(&1F8B`E,#`Q,3`P,#$-(&1F8B`E,#`Q,3`P,3$-(&1F8B`E,#`Q,3`Q
M,#`-(&1F8B`E,#`Q,3$Q,#`@.S0S+*!%3D2@3T:@,V2@4$])3E13#3MN3U)-
M04Q3H%-%5*!54*!"6:!23U5424Y%H$%"3U9%#0TJ#2J@8T].3D5#5$E/3E,-
M*@UO8C%C;VX@:&5X(#`P,#@P,#!B,#`P-#`P,#<@.S`M.*`P+3$QH#`M-*`P
M+3<-(&AE>"`P,3`X,#$P8C`Q,#4P,3`V(#LQ+3B@,2TQ,:`Q+36@,2TV#2!H
M97@@,#(P.3`R,&$P,C`U,#(P-@T@:&5X(#`S,#0P,S`W,#,P.3`S,&$-(&AE
M>"`P-#`X,#0P.0T@:&5X(#`U,#@P-3`Y#2!H97@@,#8P83`V,&(-(&AE>"`P
M-S!A,#<P8B`[;U5415*@,3(M1T].+*`R-*!#3TY3#2!H97@@,#`Q.#`P,6,@
M.S`M,C2@,"TR.`T@:&5X(#`Q,3DP,3%D(#LQ+3(UH#$M,CD-(&AE>"`P,C%A
M,#(Q90T@:&5X(#`S,6(P,S%F#2!H97@@,#0Q.#`T,6(@.V%,3*!42$531:!-
M241$3$6@1U594Z!!4D4-(&AE>"`P-3$Y,#4Q82`[1$]45$5$H$-/3DY%0U1)
M3TY3#2!H97@@,#8Q9#`V,64-(&AE>"`P-S%C,#<Q9@T@:&5X(#`X,3@P.#$Y
M(#LX+3(TH#@M,C4-(&AE>"`P.3%A,#DQ8@T@:&5X(#!A,64P83%F#2!H97@@
M,&(Q8S!B,60@.S$Q+3(XH#$Q+3(Y+*!O551%4BT^34E$1$Q%+*`R-*!#3TY3
M#2!H97@@,&,Q.#!C,6,-(&AE>"`P9#$Y,&0Q9`T@:&5X(#!E,6$P93%E(#LQ
M-"TR-J`Q-"TS,`T@:&5X(#!F,6(P9C%F#2!H97@@,3`Q.#$P,6(-(&AE>"`Q
M,3$Y,3$Q80T@:&5X(#$R,60Q,C%E#2!H97@@,3,Q8S$S,68-(&AE>"`Q-#$X
M,30Q.0T@:&5X(#$U,6$Q-3%B#2!H97@@,38Q93$V,68-(&AE>"`Q-S%C,3<Q
M9"`[,C,M,CB@,C,M,CDLH$U)1$1,12T^24Y.15(LH#(TH$U/4D6@0T].4PT@
M:&5X(#!C,30P8S$W,&,Q,#!C,3,@.V%.1*!&24Y!3$Q9+*!42$6@24Y.15*@
M0T].4PT@:&5X(#!D,30P9#$W,&0Q,3!D,3(-(&AE>"`P93$U,&4Q-C!E,3$P
M93$R#2!H97@@,&8Q,#!F,3,P9C$U,&8Q-@T@:&5X(#$P,30Q,#$U#2!H97@@
M,3$Q-#$Q,34-(&AE>"`Q,C$V,3(Q-PT@:&5X(#$S,38Q,S$W(#MI3DY%4BR@
M5$A%H$Q!4U2@,C2@0T].3D5#5$E/3E,-(#MF3U*@0:!43U1!3*!/1J`Y-J`T
M9*!#3TY.14-424].4PUO8C$R8V]N(&AE>"`R,#(T,C`R."`[,S(M,S:@,S(M
M-#"@*#-DH$-/3DY%0U1)3TY3*0T@:&5X(#(P,C8R,#)A(#LS,BTS.*`S,BTT
M,J`H3$%35*!"552@3D]4H$Q%05-4*0T@:&5X(#(Q,C4R,3(Y(#LS,RTS-Z`S
M,RTT,0T@:&5X(#(Q,C8R,3)A#2!H97@@,C(R-#(R,C@-(&AE>"`R,C(W,C(R
M8@T@:&5X(#(S,C4R,S(Y#2!H97@@,C,R-S(S,F(-(&AE>"`R-#(V,C0R-PT@
M:&5X(#(U,C8R-3(W#2!H97@@,C@R83(X,F(-(&AE>"`R.3)A,CDR8B`[,C2@
M34]21:`S9*!#3TY.14-424].4RR@1D]2H$&@5$]404P-(#M/1J`Q,C"@0T].
M3D5#5$E/3E,LH$I54U2@4TA9H$]&H%1(10T@.V)M::!-05)+(0T-;F]R;3$@
M.VY/4DU!3%,K0T]24D534$].1$E.1Z!#3TY.14-424].4PT@9&9B(#DV(#MN
M54U"15*@3T:@-&2@0T].3D5#5$E/3E,-(&1F8B`W."`[;E5-0D52H$]&H%!/
M24Y44Z!"14Q/5PT@9&9B(#`P#2!D9F(@-#0@.VY/4DU!3*!!5*!)3D1%6*`T
M-*`]H#$O,BPQ+S(L,2\R#2!D9F(@.38@.S,R+3,V#2!D9F(@,3$R(#LS-BTS
M.`T@9&9B(#DX(#LS."TS,@T@:&5X(#`P,F0@.VE.1$58H#0U#2!D9F(@,3`P
M#2!D9F(@,3$T#2!D9F(@,3`R#2!H97@@,#`R92`[-#8-(&1F8B`Q,#0-(&1F
M8B`Q,3,-(&1F8B`Q,#8-(&AE>"`P,#)F(#LT-PT@9&9B(#$P.`T@9&9B(#$Q
M-0T@9&9B(#$Q,`T@:&5X(#`P,S`@.S0X#2!D9F(@.3<-(&1F8B`Q,38-(&1F
M8B`Y.0T@:&5X(#`P,S$@.S0Y#2!D9F(@,3`Q#2!D9F(@,3$X#2!D9F(@,3`S
M#2!H97@@,#`S,B`[-3`-(&1F8B`Q,#4-(&1F8B`Q,3<-(&1F8B`Q,#<-(&AE
M>"`P,#,S(#LU,0T@9&9B(#$P.0T@9&9B(#$Q.0T@9&9B(#$Q,0T@:&5X(#`P
M,S0@.S4R+*!42$6@1$E!34].1%,-(&1F8B`Q,3(-(&1F8B`Q,30-(&1F8B`Q
M,34-(&1F8B`Q,3,-(&AE>"`P,#,U(#LU,PT@9&9B(#DX#2!D9F(@,3`R#2!D
M9F(@,3`S#2!D9F(@.3D-(&AE>"`P,#,V(#LU-`T@9&9B(#DV#2!D9F(@,3`T
M#2!D9F(@,3`U#2!D9F(@.3<-(&AE>"`P,#,W(#LU-0T@9&9B(#$Q-@T@9&9B
M(#$Q.`T@9&9B(#$Q.0T@9&9B(#$Q-PT@:&5X(#`P,S@@.S4V#2!D9F(@,3`V
M#2!D9F(@,3$P#2!D9F(@,3$Q#2!D9F(@,3`W#2!H97@@,#`S.2`[-3<LH$Q!
M4U2@3TY%(0T@9&9B(#$P,`T@9&9B(#$P.`T@9&9B(#$P.0T@9&9B(#$P,0T@
M:&5X(#`P,#`@.S8J-BLX*C4K,CTW.*!03TE.5%.@24Z@3$E35`WE79*LFS[I
MDJ:IJG.:Y*GN;IY5V2K.M:TI*FN:IK5V2K.M:TI*FN:YI5V2K.M:TI*FN:IS
M5V2K)L^Z9*FJ:ISG*2I[F^:E=DJSK6M*2IKFJ;U=DJSK6M*2IKFN=U=DJSK6
MM+-5*4H`<"HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!-
M55-)0RY3#2H-*J!O4BR@5$^@0D6@34]21:!04D5#25-%+*!P4D5,541%H",R
MH$923TV@=$A%H'=%3$PM#2J@=$5-4$52142@:TQ!5DE%4BR@0EF@:BYS+J!B
M04-(+@TJ#2J@=$A)4Z!)4Z!42$6@34%)3J!-55-)0Z!23U5424Y%H$9/4J!4
M2$6@-$N@1$5-3RX-*J!T2$6@355324.@25.@1%))5D5.H$)9H$%.H$E.5$52
M4E505*!'14Y%4D%4142@0ED-*J!V:6,NH*!AH%-)35!,1:!#3U5.5$1/5TZ@
M5$E-15*@25.@1$5#4D5-14Y4140-*J!53E1)3*!:15)/H$E3H%)%04-(140L
MH$%4H%=(24-(H%!/24Y4H%1(1:!.15A4#2J@3D]41:!)4Z!03$%9140LH$%.
M1*!)1J!.14-%4U-!4EF@5$A%H$Y%6%2@3D]410TJH"A/4J!.3U1%4RF@05)%
MH%)%042@24XNH*!F3U*@34]21:!$151!24Q3+*!3146@5$A%#2J@0T]$12$-
M*@TJH'-415!(14Z@;"Z@:E5$1*"@-B\R-R\Y-J"@/"TM+:`H9$]73J!43Z!4
M2$6@5TE212R@14@_*0TJ#2!D<VL@(DU54TE#(@T-(')E;`T-*@TJH'9!4DE!
M0DQ%4PTJ#6-O=6YT97(@97%U("0P,R`[9%52051)3TZ@0T]53E1$3U=.#6EN
M9&5X(&5Q=2`D,#0@.VE.1$58H$E.5$^@3D]41:!404),1:`H3D]4H$9215$I
M#79O:6-E<R!E<74@)#`U(#MT14Q,4Z!72$E#2*!63TE#15.@05)%H$%#5$E6
M10UN=6UN;W1E<R!E<74@)#`V(#MN54U"15*@3T:@3D]415.@4D5!1*!)3J!!
M5*!!H%1)344-;F]T97!T<B!E<74@)#`W(#LR+4)95$6@4$])3E1%4J!43Z!-
M55-)0Z!$051!#61U<F%T:6]N(&5Q=2`D,#D@.V154D%424].H$]&H$5!0TB@
M3D]410UV;VQU;64@97%U("0P82`[9%5(#6=A=&4Q(&5Q=2`D,&(@.W9!3%5%
MH%1/H$=!5$4O54Y'051%H%9/24-%H#&@5TE42`UG871E,B!E<74@)#!C(#MS
M04U%H$9/4J!63TE#1:`R#6=A=&4S(&5Q=2`D,&0@.W-!346@1D]2H%9/24-%
MH#,-#2H-*J!S3TU%H$%715-/344M4$]34U5-H$-/3E-404Y44PTJ#79O:6-E
M,2!E<74@)&,R,#`@.V-54E)%3E2@3D]415.@1D]2H%9/24-%H#$-=F]I8V4R
M(&5Q=2`D8S(Q,"`[8U524D5.5*!.3U1%4Z!&3U*@5D])0T6@,@UV;VEC93,@
M97%U("1C,C(P(#MH34U-32XN+@UF<F5Q;&\@97%U("1C,S`P(#MF4D51545.
M0UF@5$%"3$4-9G)E<6AI(&5Q=2`D8S,X,`T-<F5S="!E<74@,#`@.W1214%4
MH$Y/5$6@6D523Z!!4Z!!H%)%4U0-(#LH5TA)0TB@2E535*!53BU'051%4Z!4
M2$6@5D])0T4I#0UR97-T87)T(&5Q=2`D.#`@.W-014-)04R@355324,M1$%4
M0:!43TM%3@US971D=7(@97%U("0X,2`[<T54+4154D%424].H%1/2T5.#7-E
M='9O;"!E<74@)#@R(#MS150M5D],54U%H%1/2T5.#7-E=&YU;2!E<74@)#@S
M(#MS152@3E5-0D52H$]&H$Y/5$53H%1/2T5.#7-E='8Q(&5Q=2`D.#0@.W9/
M24-%+3&@3TY,6:!43TM%3@US971V,3(@97%U("0X-2`[=D])0T6@,:!!3D2@
M,@US971V,3(S(&5Q=2`D.#8-#65I9VAT:"!E<74@-R`[9%52051)3TZ@3T:@
M0:!325A4145.5$B@3D]41:`Z*0UP<F5S=&\@97%U(#4@.S$V5$B@3D]41:!)
M3J!P4D535$^@4T5#5$E/3@UA9&%G:6\@97%U(#$X(#LQ-E1(H$Y/5$6@24Z@
M841!1TE/H%-%0U1)3TX-9B!E<74@,3(@.V9/4E1%#7-F(&5Q=2`Q-"`[(G-&
M3U)46D%.1$\B#69F(&5Q=2`Q-2`[9$]50DQ%+49/4E1%#7`@97%U(#@@.W!)
M04Y/#0TJ#2J@<T]-1:!(04Y$62U$04Y$6:!C-C0M4D5,051%1*!#3TY35$%.
M5%,-*@T-<VED(&5Q=2`D9#0P,`UV,2!E<74@<VED#78R(&5Q=2!S:60K-PUV
M,R!E<74@=C(K-PT-*J!K15).04P-#7-C;FME>2!E<74@)&5A.#<-9V5T:6X@
M97%U("1F,3-E#6-H<F]U="!E<74@)&9F9#(-#2HM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM#2H]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]#2J@;D]4H$%34T5-0DQ%1`T@9&\@,"`[9$].)U2@05-314U"3$4-('-E
M:0T@:G-R(&UU<VEN:70-(&-L:0TZ=&5S="!J<W(@<V-N:V5Y(#MJ55-4H%1%
M4U2@24:@5T6@05)%H$-!3$Q)3D<-(&IS<B!G971I;B`[24Y415)255!4H$-/
M4E)%0U1,62R@151#+@T@8VUP(",P,`T@8F5Q(#IT97-T#2!J<W(@8VAR;W5T
M#2!J;7`@.G1E<W0-(&9I;@TJ/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/0T-*BTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T-*@TJH&E.
M251)04Q)6D6@24Y415)255!4H%)/551)3D4-*@TJH&Y/5$6@5$A!5*!#04Q,
M24Y'H%)/551)3D6@35535*!S96DO8VQIH"$A(0TJ#0UM=7-I;FET(&5N="`[
M<T54H%50H$E.5$524E505`T-(&QD>"`C,3$@.W-%5*!54*!.3U1%H$9215%5
M14Y#6:!404),15,-(#MS24Y#1:!IH%-#4D57142@55"@04Y$H$U!1$4-(#M%
M5D52651(24Y'H$%.H$]#5$%61:!43T^@2$E'2"P-(#MIH$-/35!%3E-!5$6@
M2$521:!)3J!42$6@5$%"3$4-(#M315154*!624&@04Z@;'-R+W)O<@T@.V]2
M+*!)1J!93U6@3$E+12R@252@4T]53D13H$)%5%1%4@T@.T%.H$]#5$%61:!,
M3U=%4J!7251(H%1(25.@24Y35%)5345.5`TZ;#$@;&1A(&AI=&%B+'@-(&QS
M<@T@<W1A(&9R97%H:2LX-"QX(#MS5$]21:!!5*!43U"@3T:@5$%"3$4-(&QD
M82!L;W1A8BQX#2!R;W(-('-T82!F<F5Q;&\K.#0L>`T@9&5X#2!B<&P@.FPQ
M#2!L9'@@(S@S(#MN3U>@15A414Y$H%1(1:!404),10TZ;#(@;&1A(&9R97%H
M:2LQ,BQX(#M$3U=.5T%21%,LH$1)5DE$24Y'H$)9#2!L<W(@.U173Z!43Z!'
M152@3T-4059%4PT@<W1A(&9R97%H:2QX#2!L9&$@9G)E<6QO*S$R+'@-(')O
M<@T@<W1A(&9R97%L;RQX#2!D97@-(&)P;"`Z;#(@.W1(052@3U5'2%2@5$^@
M1$^@250A#0UN;W1E:6YI=`T@;&1X(",R,"`[:4Y)5$E!3$E:1:!S:60-.FQO
M;W`@;&1A('-I9&EN:70L>`T@<W1A('-I9"QX#2!D97@-(&)P;"`Z;&]O<`T-
M(&QD82`C,38-('-T82!N=6UN;W1E<R`[<D5!1*!)3J`Q-J!.3U1%4Z!!5*!!
MH%1)344-(#M)3DE424%,3%D-('-T82!I;F1E>`T@;&1A(",P,`T@<W1A('9O
M;'5M90T@;&1A('-I9&EN:70K-`T@<W1A(&=A=&4Q#2!L9&$@<VED:6YI="LQ
M,0T@<W1A(&=A=&4R#2!L9&$@<VED:6YI="LQ.`T@<W1A(&=A=&4S#0TJ/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0T@9&\@,"`[9$].)U2@05-3
M14U"3$4-(&QD82`C,34-('-T82!S:60K,C0-(&QD82!G871E,0T@<W1A('8Q
M*S0-(&QD>"`C,#`@.W1%4U2@5$A%H$Y/5$6@5$%"3$4-('-T>"!C;W5N=&5R
M#3IL,R!L9&$@9G)E<6QO+'@-('-T82!V,0T@;&1A(&9R97%H:2QX#2!S=&$@
M=C$K,0T@;&1Y(",Q,`TZ;#0@9&5C(&-O=6YT97(@.T1%3$%9H$Q/3U`-(&)N
M92`Z;#0-(&1E>0T@8FYE(#IL-`T@:6YX#2!C<'@@(SDV#2!B;F4@.FPS#2!L
M9&$@9V%T93$-(&%N9"`C)&9E#2!S=&$@=C$K-`T@9FEN#2H]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]#0T@;&1A(",\;F]T961A=&$-('-T82!N
M;W1E<'1R(#MP3TE.5$52H$E.5$^@3D]41:!$051!#2!L9&$@(SYN;W1E9&%T
M80T@<W1A(&YO=&5P='(K,0T-(&QD82`C/&UU<W!L87D-('-T82`D,#,Q-"`[
M<T54H$Q/0T%424].H$]&H$E.5$524E505`T@;&1A(",^;75S<&QA>0T@<W1A
M("0P,S$U#0T@;&1A(",D,#`-('-T82`D9&,P92`[:TE,3*!C:6&@24Y415)2
M55!4#0T@;&1A(",D,#$-('-T82!C;W5N=&5R#2!S=&$@9'5R871I;VX-('-T
M82`D9#`Q82`[94Y!0DQ%H%)!4U1%4J!)3E1%4E)54%0-('-T82`D9#`Q.2`[
M<D%35$52H$-/35!!4D4-('-T82`D9#`Q,B`[<T54H$Q)3D6@5$^@24Y415)2
M55!4H$%4#2`[*$Q)3D6@,:!/4J!,24Y%H#(U-Z!)4Z!/2RD-*J!L9&&@)&0P
M,3$-*J!A;F2@(R0W9J`[>D%0H%504$52H'9I8Z!"250-*J!S=&&@)&0P,3$-
M(')T<PT-*BTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T-*@TJH'-/
M346@24Y)5$E!3$E:051)3TZ@1$%40:!&3U*@<VEDH$%.1*!.3U1%H$9215%5
M14Y#60TJH%1!0DQ%+@TJ#2J@:E535*!!H$)/4DE.1Z!/3*!305=43T]42"X-
M*@US:61I;FET(&AE>"`P,#`P,#`P,#(Q,CAA."`[=D])0T6@,:!,3Z!(2:!0
M3$^@4$A)H$=!5$6@04134@T@:&5X(#`P,#`P,#`P,C$R86%D(#MV3TE#1:`R
M#2!H97@@,#`P,#`P,#`R,#)A860@.W9/24-%H#,-#2J@=$A%4T6@05)%H$92
M15%514Y#2453H$]55*!/1J!P<F>@1D]2H$5154%,H%1%35!%4D5$#2J@4T-!
M3$4NH*!E455!3*!414U015)%1*!)4Z!!H$1204>@0E54H$E4H$]51TA4H%1/
MH%=/4DN@;VLN#0UL;W1A8B!D9F(@,S`L,C0L,3,Y+#$R-BPR-3`L-BPQ-S(L
M,C0S+#(S,"PQ-#,L,C0X+#0V#0UH:71A8B!D9F(@,3,T+#$T,BPQ-3`L,34Y
M+#$V."PQ-SDL,3@Y+#(P,"PR,3(L,C(U+#(S."PR-3,-#2HM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!T2$6@34%)3J!-55-)0Z!03$%9
M15*@4D]55$E.12X-*@T-*@TJH&9)4E-4+*!!H$9%5Z!.249462U34$E&1E19
MH$U!0U)/4PTJ#0TJH'!L87EN;W1EH$1/15.@5TA!5*!)5*!305E3+J"@=$A2
M146@5D%224%"3$53H$%21:!005-3140-*J!)3CJ@5$A%H$9)4E-4H$E3H'9O
M:6-E,:!V;VEC93*@3U*@=F]I8V4S+*!!3D2@25,-*J!42$6@3D585*!.3U1%
MH%1/H$)%H%!,05E%1"Z@H'1(1:!314-/3D2@25.@=C&@=C*@=C,-*J!72$E#
M2*!!4D6@5$A%H$%04%)/4%))051%H'-I9*!,3T-!5$E/3E.@5$^@4U1/4D6@
M4U151D8N#2J@=$A%H%1(25)$H$E3H&=A=&4Q+*!%5$,N+*!72$E#2*!%4U-%
M3E1)04Q,6:!414Q,4Z!72$542$52#2J@5$^@1T%41:!/4J!53D=!5$6@0:!.
M3U1%+@T-<&QA>6YO=&4@;6%C#2!L9&$@73$L>"`[=F]I8V4SH$540RZ@0T].
M5$%)3E.@24Y$15B@24Y43PT@=&%Y(#M.3U1%H$9215%514Y#6:!404),10T@
M;&1A(&9R97%L;RQY#2!S=&$@73(@.W-43U)%H$E4H$E.H'-I9`T@;&1A(&9R
M97%H:2QY(#ML3R]H2:!&4D51545.0UD-('-T82!=,BLQ#2!L9&$@73,@.V=!
M5$4O54Y'051%H$Y/5$4-('-T82!=,BLT#2`\/#P-#2J@:52@25.@4TE-4$Q%
M4J!43Z!0552@5$A%H$5.1*!!5*!42$6@0D5'24Y.24Y'H#HI#0UA;&QD;VYE
M('-T>"!I;F1E>`T@<&QA#2!T87D@.W)%4U1/4D6@4D5'25-415)3#2!P;&$-
M('1A>`T@<&QA#2!R=&D-*@TJH&Y/5Z!42$6@34%)3J!03$%915*@4D]55$E.
M10TJ#6UU<W!L87D-(&QD82`D9#`Q.0T@<W1A("1D,#$Y(#MC3$5!4J!)3E1%
M4E)54%2@1DQ!1PT@;&1X(&EN9&5X(#MI3D1%6*!)3E1/H$Y/5$6@5$%"3$4-
M(&1E8R!C;W5N=&5R#2!B;F4@86QL9&]N90T@;&1A(&1U<F%T:6]N(#MR15-%
M5*!#3U5.5$52#2!S=&$@8V]U;G1E<@T@8FET('9O:6-E<R`[=TA)0TB@5D])
M0T53H$%21:`B04-4259%(C\-(&)P;"!P;&%Y,B`[0DE4-ST^5D])0T4SH$))
M5#8]/E9/24-%,@T-<&QA>3,@/CX^('!L87EN;W1E+'9O:6-E,SMV,SMG871E
M,PUP;&%Y,B!B=F,@<&QA>3$-(#X^/B!P;&%Y;F]T92QV;VEC93([=C([9V%T
M93(-<&QA>3$@/CX^('!L87EN;W1E+'9O:6-E,3MV,3MG871E,0T@;&1A('9O
M;'5M90T@<W1A('-I9"LR-`T-(&EN>`T@8W!X(&YU;6YO=&5S(#ME251(15*@
M,3:@3U*@,0T@8FUI(&%L;&1O;F4-#2J@;4%)3J!005)315*@4D]55$E.12Z@
MH&1!5$&@25.@14E42$52H$%.H$E.1$58H$E.5$\-*J!42$6@3D]41:!&4D51
M545.0UF@5$%"3$6@*%1(55,LH$&@3D]412F@3U*@14Q31:!!#2J@4U!%0TE!
M3*!#2$%204-415(NH*!S4$5#24%,H$-(05)!0U1%4E.@2$%61:!42$4-*J!(
M24=(H$))5*!3152@04Y$H$A!5D6@5$A%H$9/3$Q/5TE.1Z!-14%.24Y'4SH-
M*J"@H*`MH')%4U1!4E2@355324,-*J"@H*`MH&5615)9H$Y/5$6@049415*@
M5$A)4Z!(05.@1%52051)3TZ@6%@-*J"@H*`MH'-%5*!63TQ5346@5$^@6%@-
M*J"@H*`MH'9/24-%H#&@3TY,6:`H;D^@1$%40:!&3U*@5D])0T6@,J!/4J`S
M*0TJH*"@H"V@=D])0T4QH$%.1*`RH$].3%D-*J"@H*`MH'9/24-%H#&@,J!!
M3D2@,PTJH*"@H"V@;D]415.@05)%H%)%042@24Z@3TY%H$%4H$&@5$E-1:!&
M4D]-H$Y/5Z!/3@TJ#2J@9DE24U2@04Q,H$193D%-24-3H$4N1RZ@4U!%0TE!
M3*!#2$%204-415)3H$%21:!214%$H$E.+`TJH%1(14Z@5$A%H$Y%6%2@3D]4
M15.@05)%H%)%042@24XNH*!T2$531:!604Q515.@5TE,3*!"10TJH%501$%4
M142@24Y43Z!S:62@5$A%H&YE>'2@5$E-1:!!4D]53D0N#0UP87)S90T@;&1Y
M(",P,`TZ;&]O<"!L9&$@*&YO=&5P='(I+'D-(&)P;"!R96%D;F]T92`[:$E'
M2*!"252@0TQ%05*@345!3E.@3D]41:!$051!#0T@8VUP("-R97-T87)T#2!B
M;F4@.F1U<@T@:G-R(&YO=&5I;FET(#MR14E.251)04Q)6D4LH%-+25!024Y'
MH%1!0DQ%4PT@;&1X(",P,`T@:FUP(&%L;&1O;F4-.F1U<B!C;7`@(W-E=&1U
M<B`[8TA!3D=%H$154D%424].#2!B;F4@.G9O;`T@:6YY#2!L9&$@*&YO=&5P
M='(I+'D@.V=%5*!$55)!5$E/3E.@3T:@1D],3$]724Y'H$Y/5$53#2!S=&$@
M9'5R871I;VX-(&)N92`Z9&]N90TZ=F]L(&-M<"`C<V5T=F]L(#MS152@3D57
MH%9/3%5-10T@8FYE(#IV,0T@:6YY(#MG152@5D],54U%H%1/H%-%5*!43PT@
M;&1A("AN;W1E<'1R*2QY#2!S=&$@=F]L=6UE#2!B;F4@.F1O;F4-.G8Q(&-M
M<"`C<V5T=C$@.W9/24-%H#&@3TY,60T@8FYE(#IV,@T@;&1A(",P,`T@<W1A
M('9O:6-E<PT@8F5Q(#ID;VYE(#LH4D5!3$Q9H$1/3B=4H$Y%142@5$A%4T6@
M0E)!3D-(15,I#3IV,B!C;7`@(W-E='8Q,@T@8FYE(#IV,PT@;&1A(",D-#`@
M.W-%5*!"252@4TE8#2!S=&$@=F]I8V5S#2!B;F4@.F1O;F4-.G8S(&-M<"`C
M<V5T=C$R,PT@8FYE(#IN97=N=6T-(&QD82`C)&,P(#MB252@4TE8H$%.1*!3
M159%3@T@<W1A('9O:6-E<PT@8FYE(#ID;VYE#3IN97=N=6T@;&1A(",P,2`[
M:4:@5T6@1T]4H$A%4D6@5$A%3J!42$E3H$E3#2!S=&$@;G5M;F]T97,@.U1(
M1:!/3DQ9H$].1:!,1494(0TZ9&]N92!I;GD@.W1(052@5T%3H%-/H$U50TB@
M1E5.+BXN#2!B;F4@.FQO;W`@.TQ%5"=3H$1/H$E4H$%'04E.+@T-<F5A9&YO
M=&4@.VY/5Z!214%$H$E.H$Y/5$6@1$%400T@;&1X(&YU;6YO=&5S#2!C<'@@
M(S$V#2!B97$@<F5A9#$V(#MR3U5424Y%H%1/H%)%042@,3:@3D]415.@052@
M0:!424U%#2`[;U1(15)725-%+*!214%$H$].1:!.3U1%H$%4H$&@5$E-10UR
M96%D,2!C;7`@(W)E<W0-(&)N92`Z=C$-(&QD82!G871E,2`[<F5S=*!724Q,
MH$U%04Z@54Y'051%H$Y/5$4-(&%N9"`C)&9E#2!S=&$@9V%T93$-(&)N92`Z
M=C(-.G8Q('-T82!V;VEC93$-(&QD82!G871E,0T@;W)A(",D,#$-('-T82!G
M871E,0TZ=C(@8FET('9O:6-E<R`[84Y9H%9/24-%H#*@1$%40:!43Z!214%$
MH$E./PT@8G9C(&YO=&5D;VYE(#MN3Z!63TE#1:`RH$U%04Y3H$Y/H%9/24-%
MH#,-(&EN>0T@;&1A("AN;W1E<'1R*2QY(#MO5$A%4E=)4T4LH%)%042@24Z@
M3D]410T@8VUP("-R97-T#2!B;F4@.FYO<&4R#2!L9&$@9V%T93(-(&%N9"`C
M)&9E#2!S=&$@9V%T93(-(&)N92`Z=C,-.FYO<&4R#2!S=&$@=F]I8V4R#2!L
M9&$@9V%T93(-(&]R82`C)#`Q#2!S=&$@9V%T93(-.G8S(&)I="!V;VEC97,@
M.W)%042@24Z@5D])0T6@,Z!$051!/PT@8G!L(&YO=&5D;VYE#2!I;GD-(&QD
M82`H;F]T97!T<BDL>0T@8VUP("-R97-T#2!B;F4@.FYO<&4S#2!L9&$@9V%T
M93,-(&%N9"`C)&9E#2!S=&$@9V%T93,-(&)N92!N;W1E9&]N90TZ;F]P93,-
M('-T82!V;VEC93,-(&QD82!G871E,PT@;W)A(",D,#$-('-T82!G871E,PT-
M;F]T961O;F4@:6YY("`[<$])3E2@5$^@3D585*!0245#1:!/1J!$051!#2!T
M>6$@.T%.1*!54$1!5$6@3D]41:!03TE.5$52#2!C;&,-(&%D8R!N;W1E<'1R
M#2!S=&$@;F]T97!T<@T@8F-C(#IC;VYT#2!I;F,@;F]T97!T<BLQ#3IC;VYT
M(&QD>"`C,#`@.W)%4T54H$E.1$58#2!J;7`@86QL9&]N92`[84Y$H$=%5*!4
M2$6@2$5#2Z!/552@3T:@2$5212$-*@TJH&U50TB@3T:@5$A%H%!)14-%H$-/
M3E-)4U13H$]&H$)23TM%3J`T+4Y/5$6@0TA/4D13+`TJH$)23TM%3J!!0U)/
M4U.@1D]54J!31513H$]&H$9/55*@3D]415.@14%#2"Z@H'1(55,-*J!325A4
M145.H$Y/5$53H$-!3J!"1:!34$5#249)142@052@0:!424U%H%=)5$@-*J!*
M55-4H$9/55*@1$%40:!604Q515,LH$%.1*!42$E3H%)/551)3D6@2$%.1$Q%
M4PTJH%1(25.@0T%312X-*@UR96%D,38-('-T82!V;VEC93$@.V9)4E-4H$Y/
M5$6@3T:@0TA/4D2@1T]%4Z!43PT@.TY/5$53H#&@04Y$H#D-(&EN>0T@;&1A
M("AN;W1E<'1R*2QY#2!S=&$@=F]I8V4Q*S$-('-T82!V;VEC93$K,PT@<W1A
M('9O:6-E,2LU#2!S=&$@=F]I8V4Q*S<-(&EN>0T@;&1A("AN;W1E<'1R*2QY
M#2!S=&$@=F]I8V4Q*S(-('-T82!V;VEC93$K-@T@:6YY#2!L9&$@*&YO=&5P
M='(I+'D-('-T82!V;VEC93$K-`T-(&EN>2`[;D]7H%)%042@24Z@5D])0T6@
M,J!'55E3#2!L9&$@*&YO=&5P='(I+'D-('-T82!V;VEC93(-(&EN>0T@;&1A
M("AN;W1E<'1R*2QY#2!S=&$@=F]I8V4R*S$-('-T82!V;VEC93(K,PT@<W1A
M('9O:6-E,BLU#2!S=&$@=F]I8V4R*S<-(&EN>0T@;&1A("AN;W1E<'1R*2QY
M#2!S=&$@=F]I8V4R*S(-('-T82!V;VEC93(K-@T@:6YY#2!L9&$@*&YO=&5P
M='(I+'D-('-T82!V;VEC93(K-`T-(&QD>"`C-R`[;D]7H%)%4$5!5*!%04-(
MH#@M3D]41:!3150-.FQO;W`@;&1A('9O:6-E,2QX#2!S=&$@=F]I8V4Q*S@L
M>`T@;&1A('9O:6-E,BQX#2!S=&$@=F]I8V4R*S@L>`T@9&5X#2!B<&P@.FQO
M;W`-(&EN>"`[>#TPH"T^H&EN9&5X#2!J;7`@;F]T961O;F4@.V%.1*!$15!!
M4E0-#2HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#2H-*J!A3D2@
M1DE.04Q,6:!42$6@355324.@1$%402Z@H'1(1:!-55-)0Z!$051!H$E3H$1)
M5DE$140-*J!)3E1/H%173Z!465!%4Z!/1J!$051!.J!.3U1%4Z!!3D2@4U!%
M0TE!3*!!0U1)3TY3+@TJH&E&H%1(1:!(24=(H$))5*!)4Z!3150LH%1(14Z@
M5T6@54Y$15)404M%H$&@4U!%0TE!3`TJH$%#5$E/3BR@3U1(15)725-%H%1(
M1:!$051!H$E3H$&@3D]412X-*@TJH&5!0TB@(DY/5$4BH$E3H$%.H$E.1$58
MH$E.5$^@0:!404),1:!/1J!&4D51545.0UF@5D%,5453#2J@4T54H%50H$)9
MH%1(1:!)3DE424%,25I!5$E/3J!23U5424Y%+@TJ#2J@<U!%0TE!3*!!0U1)
M3TY3H$%21:!$15-#4DE"142@55"@04)/5D6@24Z@5$A%H%!!4E-%4@TJH%)/
M551)3D4LH$%.1*!!4D6@5$A)3D=3H$Q)2T6@0TA!3D=%H%9/3%5-12R@1%52
M051)3TXLH$540RX-*J!T2$6@0D%324.@4E5,1:!)4Z!42$%4H$E&H$%.6:!!
M0U1)3TY3H"A%+D<NH%9/3%5-1:!#2$%.1T53*0TJH$%21:!43Z!404M%H%!,
M04-%H$E.H$&@345!4U5212]/3J!!H$Y/5$4LH%1(14Z@5$A%H$1!5$$-*J!#
M3U)215-03TY$24Y'H%1/H%1(3U-%H$%#5$E/3E.@3D5%1%.@5$^@05!014%2
MH$)%1D]21:!42$4-*J!.3U1%H$1!5$$N#2H-*J!T2$6@4$E%0T6@25.@15-3
M14Y424%,3%F@0:!315))15.@3T:@0E)/2T5.H$-(3U)$4RR@04Y$#2J@5$A%
MH$9)4E-4H#(TH$U%05-54D53H$%21:!&3U52+4Y/5$6@0TA/4D13H$)23TM%
M3J!)3E1/#2J@0:!215!%051%1*!3152@3T:@14E'2%2@3D]415,LH%-03$E4
MH$E.5$^@5%=/H$=23U504Z!/1@TJH$9/55*@14%#2"Z@H'1(15)%H$E3H$].
M1:!3152@1D]2H$5!0TB@2$%.1"R@5$A54Z!63TE#1:`Q#2J@04Y$H%9/24-%
MH#*@0D5(059%H%-)34E,05),62Z@H'1(15-%H$%21:!42$6@(C$V+4Y/5$4B
M#2J@345!4U5215.@4D5!1*!)3J!"6:!R96%D,3:@04)/5D4LH$%.1*!42$59
MH$%21:!$149)3D5$#2J@0EF@4U!%0TE&64E.1Z!&25)35*!42$6@1D]54J!.
M3U1%4Z!&3U*@5$A%H%))1TA4H$A!3D0L#2J@5$A%3J!42$6@1D]54J!.3U1%
M4Z!&3U*@5$A%H$Q%1E2@2$%.1"X-*@UN;W1E9&%T80T@9&9B('-E='8Q,B`[
M=D])0T53H#&@04Y$H#(-(&1F8B!S971D=7(-(&1F8B!E:6=H=&@@.VY/5$6@
M1%52051)3TX-(&1F8B!S971V;VPL9@T@.VY/5Z!63TE#12TQH$9/55*@3D]4
M1:!#2$]21`T@.VU%05-54D6@,0T@9&9B(#<R(#MC+38-(&1F8B`V,R`[94(-
M(&1F8B`V,B`[9`T@9&9B(#8P(#MC+34-(#MA3D2@5D])0T4M,J!#2$]21`T@
M9&9B(#0X(#MC+30-(&1F8B`U-2`[9RTT#2!D9F(@-3,@.V8-(&1F8B`U,2`[
M94(-#2`[;45!4U521:`R#2!D9F(@-C@L-C4L-C0L-C`@.V%"H&:@9:!C#2!D
M9F(@-#@L-38L-34L-3,@.V.@84*@9Z!F#0T@.VU%05-54D6@,PT@9&9B(#<Q
M+#8U+#8S+#8R(#MBH&:@94*@9`T@9&9B(#0X+#4V+#4U+#4S(#MCH&%"H&>@
M9@T-(&1F8B`W,BPV-RPV-2PV,R`[8Z!GH&:@94(-(&1F8B`T."PU,2PU,"PU
M-2`[8Z!E0J!DH&<-#2!D9F(@<V5T=F]L+'-F#2!D9F(@-S4L-C@L-C<L-C,@
M.V5"H&%"H&>@94(-(&1F8B`T."PV,"PU."PU-B`[8Z!CH&)"H&%"#0T@9&9B
M('-E='9O;"QP(#MP24%.3PT@9&9B(#<T+#8V+#8T+#8R(#MDH&8CH&6@9`T@
M9&9B(#0X+#4W+#4U+#4T(#MCH&&@9Z!F(PT-(&1F8B!S971V;VPL<V8-(&1F
M8B`W-"PV-RPV-BPV,B`[9*!GH&8CH&0-(&1F8B`T-BPU."PU-RPU-2`[8D*@
M8D*@8:!G#0T@9&9B('-E='9O;"QP(#MM14%355)%H#@-(&1F8B`W,BPV-"PV
M,BPV,"`[8Z!EH&2@8PT@9&9B(#0V+#4U+#4S+#4R(#MB0J!GH&:@90T-(&1F
M8B!S971V;VPL9@T@9&9B(#<R+#8U+#8T+#8P(#MCH&:@9:!C#2!D9F(@-#0L
M-38L-34L-3,@.V%"H&%"H&>@9@T-(&1F8B`W,"PV-2PV,RPV,B`[8D*@9J!E
M0J!D#2!D9F(@-#0L-3`L-#@L-3,@.V%"H&2@8Z!F#0T@9&9B('-E='9O;"QF
M+3$@.W-405)4H$1%0U)%4T-%3D1/#2!D9F(@-S`L-C<L-C4L-C,@.V)"H&>@
M9J!E0@T@9&9B(#0S+#4Q+#4P+#4U(#MGH&5"H&2@9PT-(&1F8B!S971V;VPL
M9BTR#2!D9F(@-C@L-C<L-C4L-C,@.V%"H&>@9J!E0@T@9&9B(#0X+#4Q+#4P
M+#4V(#MCH&5"H&2@84(-#2!D9F(@<V5T=F]L+'`@.VU%05-54D6@,3,-(&1F
M8B`V."PV,BPV,"PU."`[84*@9*!CH&)"#2!D9F(@-3`L-3,L-3$L-38@.V2@
M9J!E0J!A0@T-(&1F8B`V-RPU."PU-2PV,R`[9Z!B0J!A0J!E0@T@9&9B(#4Q
M+#4U+#4S+#4V(#ME0J!GH&:@84(-#2!D9F(@<V5T=F]L+'`K,2`[0U)%4T,N
M#2!D9F(@-C4L-C`L-3@L-3<@.V:@8Z!B0J!A#2!D9F(@-3$L-3<L-34L-3,@
M.V5"H&&@9Z!F#0T@9&9B('-E='9O;"QP*S(-(&1F8B`V-2PV,BPV,"PU.2`[
M9J!DH&.@8@T@9&9B(#4P+#4S+#4Q+#4V(#MDH&:@94*@84(-#2!D9F(@<V5T
M=F]L+'`K,PT@9&9B(#8U+#8R+#8P+#4Y(#MFH&2@8Z!B#2!D9F(@-#@L-3,L
M-3(L-38@.V.@9J!EH&%"#0T@9&9B('-E='9O;"QP*S0-(&1F8B`V,RPV,"PU
M.2PU-2`[94*@8Z!BH&<-(&1F8B`T."PU,2PU,"PU,R`[8Z!E0J!DH&8-#2!D
M9F(@<V5T=F]L+&8-(&1F8B`U,RPV,RPV,BPV-2`[9J!E0J!DH&8-(&1F8B`T
M-"PT."PT-RPU,"`[84*@8Z!BH&0-#2!D9F(@-30L-C`L-3DL-C,@.V8CH&.@
M8J!E0@T@9&9B(#0U+#4Q+#4P+#0X(#MAH&5"H&2@8PT-(&1F8B!S971V;VPL
M9BLQ#2!D9F(@-C,L-C`L-3DL-34@.V5"H&.@8J!G#2!D9F(@-#,L-3$L-3`L
M-3,@.V>@94*@9*!F#0T@9&9B(#8V+#8P+#4Y+#4W(#MF(Z!CH&*@80T@9&9B
M(#0S+#4Q+#4P+#0X(#MGH&5"H&2@8PT-(&1F8B!S971V;VPL9BLR#2!D9F(@
M-C<L-C`L-3DL-C(@.V>@8Z!BH&0-(&1F8B`T,RPU,2PU,"PU,R`[9Z!E0J!D
MH&8-#2!D9F(@-C@L-C`L-3DL-C(@.V%"H&.@8J!D#2!D9F(@-#,L-3$L-3`L
M-3,@.V>@94*@9*!F#0T@9&9B('-E=&YU;2`[<D5!1*!/3D6@052@0:!424U%
MH$923TV@3D]7H$].#2!D9F(@<V5T=F]L+&8K,2`[1EJ@24:@64]5H%=)3$P-
M(&1F8B!S971D=7(L96EG:'1H*S(@.V&@4T5,1BU)3D153$=%3E2@2$53251!
M5$E/3@T@9&9B(#0S#2!D9F(@<F5S="`[=4Y'051%H%9/24-%H#(-(&1F8B!S
M971V,2`[=D])0T6@,:!/3DQ9#2!D9F(@-#<-(&1F8B!S971D=7(L96EG:'1H
M#2!D9F(@-3`L-3,-(&1F8B!S971V;VPL9B`[<TQ)1TA4H$1%0U)%4T-%3D1/
M#2!D9F(@-38L-3,L-3(L-3,-(&1F8B`U.2PU,RPV,BPU.2PU-BPU,RPU,@T@
M9&9B('-E=&1U<BQE:6=H=&@K,@T@9&9B(#4S#0TJH&1F8J!S971D=7(L96EG
M:'1H*S(-(&1F8B`T,RPT.`T@9&9B('-E=&1U<BQE:6=H=&@-(&1F8B`U,2PU
M-0T@9&9B(#8P+#4U+#4T+#4U#2!D9F(@-C,L-C`L-C<L-C,-(&1F8B`V,"PU
M-BPU-0T@9&9B('-E=&1U<BQE:6=H=&@K,@T@9&9B(#4V#0TJH&1F8J!S971D
M=7(L96EG:'1H*S(-(&1F8B`T,RPT-0T@9&9B('-E=&1U<BQE:6=H=&@-(&1F
M8B`U,RPV,`T@9&9B(#8S+#8P+#8R+#8P#2!D9F(@-C8L-C`L-CDL-C8-(&1F
M8B`V,RPV,"PV,BPV,`T-(&1F8B!S971V,3(-(&1F8B!S971V;VPL9F8@.V9/
M4E1)4U-)34\A#2!D9F(@<F5S=`T@9&9B(#0S(#MV3TE#1:`RH%!%1$%,H%1/
M3D4-(&1F8B!S971V,0T@9&9B('-E=&1U<BQP<F5S=&\@.W!215-43R$-(&1F
M8B`W-"PW,BPW-`T@9&9B(#<U+#<R+#<Q+#<R#2!D9F(@-CDL-S(L-S$L-S(-
M(&1F8B`W-"PW,2PV.2PW,0T-(&1F8B!S971V,3(-(&1F8B`V-RQR97-T("`[
M=D])0T6@,2R@=D])0T6@,@T@9&9B(#<Q+#8R#2!D9F(@-CDL-C`-(&1F8B`W
M,2PV,@T-(&1F8B`W,BPV,R`[8RQE0@T@9&9B(#8Y+#8P(#MA+&,-(&1F8B`V
M-RPU.2`[9RQB#2!D9F(@-CDL-C`@.V$L8PT-(&1F8B`V-BPU-R`[9B,L80T@
M9&9B(#8Y+#8P#2!D9F(@-C<L-3D-(&1F8B`V.2PV,`T-(&1F8B`W,2PV,B`[
M8BQD#2!D9F(@-C<L-3D-(&1F8B`V-BPU-PT@9&9B(#8W+#4Y#0T@9&9B(#8R
M+#4U(#MP4D535$\LH$U%05-54D6@,PT@9&9B(#<Y+#4Y#2!D9F(@-S<L-3<-
M(&1F8B`W.2PU.0T-(&1F8B`X,"PV,`T@9&9B(#<W+#4V#2!D9F(@-S4L-34-
M(&1F8B`W-RPU-@T-(&1F8B`W-"PU,PT@9&9B(#<W+#4W#2!D9F(@-S4L-34-
M(&1F8B`W-RPU-PT-(&1F8B`W.2PU.0T@9&9B(#<U+#4U#2!D9F(@-S0L-3,-
M(&1F8B`W-2PU-0T-(&1F8B`W,BPU,2`[<%)%4U1/H"LT#2!D9F(@-S4L-C<-
M(&1F8B`W-"PV-0T@9&9B(#<U+#8W#0T@9&9B(#<W+#8X#2!D9F(@-S0L-C4-
M(&1F8B`W,BPV,PT@9&9B(#<T+#8U#0T@9&9B(#<Q+#8R#2!D9F(@-S0L-C4-
M(&1F8B`W,BPV,PT@9&9B(#<T+#8U#0T@9&9B(#<U+#8W#2!D9F(@-S(L-C,-
M(&1F8B`W,2PV,@T@9&9B(#<R+#8S#0T@9&9B(#8W+#8P(#MP4D535$^@*S4-
M(&1F8B`W,BPV,PT@9&9B(#<Q+#8R#2!D9F(@-S(L-C,-#2!D9F(@-CDL-C4-
M(&1F8B`W-RPV,@T@9&9B(#<U+#8P#2!D9F(@-S<L-C(-#2!D9F(@-C<L-C,-
M(&1F8B`W-2PV,`T@9&9B(#<T+#4Y#2!D9F(@-S4L-C`-#2!D9F(@-C4L-C(-
M(&1F8B`W-"PU.0T@9&9B(#<R+#4W#2!D9F(@-S0L-3D-#2!D9F(@-C,L-C`@
M.W!215-43Z`K-@T@9&9B(#<R+#8S#2!D9F(@-S$L-C(-(&1F8B`W,BPV,PT-
M(&1F8B`V."PU,PT@9&9B(#8U+#8R#2!D9F(@-C,L-C`-(&1F8B`V-2PV,@T-
M(&1F8B`V-RPU,0T@9&9B(#8S+#8P#2!D9F(@-C(L-3D-(&1F8B`V,RPV,`T-
M(&1F8B`V-2PU,`T@9&9B(#8R+#4Y#2!D9F(@-C`L-3<-(&1F8B`V,BPU.0T-
M(&1F8B!S971V,3(S(#MF3U)-051!H"^@0TA/4D0-(&1F8B!S971D=7(L<')E
M<W1O*S,@.V&@3$E45$Q%H%-,3U=%4@T@9&9B('-E='9O;"QF(#MA3D2@0:!,
M25143$6@4T]&5$52#2!D9F(@<F5S="QR97-T+#0X#2!D9F(@-34L<F5S="QR
M97-T#2!D9F(@<V5T=C$R#2!D9F(@-34L-3@-(&1F8B`V,"QR97-T#2!D9F(@
M<V5T=C$-(&1F8B!S971D=7(L96EG:'1H*C$S(#MH3TQ$H$E4H$]55*!!H$Q)
M5%1,1:!72$E,10T@9&9B(#8T#0T@9&9B('-E=&1U<BQA9&%G:6\O,B`[;D]7
MH%1(1:!!1$%'24^@4E5.#2!D9F(@<V5T=F]L+'`K,B`[<T]&5$52#2!D9F(@
M-C`L-C(L-C0-(&1F8B!S971D=7(L861A9VEO+S0@.S$O-C2@3D]415,-(&1F
M8B`V-2PV-RPV."PW,"PW,BPW,"PV."PV-PT@9&9B('-E=&1U<BQA9&%G:6\-
M(&1F8B`V-0T@9&9B('-E=&1U<BQA9&%G:6\O,BLR#2!D9F(@-C<L-C0-#2!D
M9F(@<V5T=C$R,R`[<T5#3TY$H$9/4DU!5$$O0TA/4D0-(&1F8B!R97-T+')E
M<W0L-#@-(&1F8B`U,RQR97-T+')E<W0-(&1F8B!S971V,3(-(&1F8B`U,RPU
M-@T@9&9B(#8P+')E<W0-(&1F8B!S971V,0T@9&9B('-E=&1U<BQE:6=H=&@J
M,3,-(&1F8B`V-0T-(&1F8B!S971V;VPL<"`[<T]&5$52H%E%5`T@9&9B('-E
M=&1U<BQA9&%G:6\O,B`[<T5#3TY$H&%$04=)3Z!254X-(&1F8B`V-RPV-2PV
M-"PV-2PV-RPV."PV-PT@9&9B('-E=&1U<BQA9&%G:6\O-"`[;4]21:`Q+S8T
MH$Y/5$53#2!D9F(@-C4L-C,L-C(L-C,L-C4L-C(L-C,L-C4-#2!D9F(@<V5T
M9'5R+&5I9VAT:"LQ(#MT2$6@1DE.04R@84Q,14=23Z!314-424].#2!D9F(@
M<V5T=F]L+'`K,B`[8:!,25143$6@3$]51$52+*!IH%1(24Y+#2!D9F(@-3D-
M(&1F8B!S971V,3(S#2!D9F(@-3DL<F5S="PS-@T@9&9B(#4Y+#0W+')E<W0-
M(&1F8B!S971V,3(-(&1F8B`U,"QR97-T#2!D9F(@<V5T=C$-(&1F8B`U,RPU
M-BPU-2PU,RPU.2PU,RPV,BPU,RPU.2PU-BPU-2PU,PT@9&9B('-E='8Q,C,-
M(&1F8B`U,BPT."PS-@T@9&9B(#8Q+')E<W0L<F5S=`T@9&9B('-E='8Q#2!D
M9F(@-3@L-34L-C`L-38L-3,L-38-(&1F8B`U-2PU."PU-2PU,@T@9&9B(#4V
M+#4S+#4P+#4S#2!D9F(@<V5T9'5R+&5I9VAT:"LR#2!D9F(@-3(L-34L-3(L
M-#@-(&1F8B`U,RPU,"PT-RPU,`T-(&1F8B!S971D=7(L96EG:'1H*S,@.VQ%
M3E1/#2!D9F(@<V5T=C$R,PT@9&9B('-E='9O;"QP*S,-(&1F8B!R97-T+')E
M<W0L,S8-(&1F8B!R97-T+#0S+')E<W0-(&1F8B!S971V,3(-(&1F8B!R97-T
M+#0X#2!D9F(@-3`L<F5S=`T@9&9B('-E='8Q#2!D9F(@-3(L-34L-3@L-34-
M(&1F8B`U-BPV,"PV-2PV,@T@9&9B(#8U+#8X#2!D9F(@<V5T9'5R+&5I9VAT
M:"LT(#M2251!4D0-(&1F8B`W,BPW,0T@9&9B('-E=&1U<BQE:6=H=&@K-2`[
M4DE405)$#2!D9F(@-S(L-C<-(&1F8B!S971D=7(L96EG:'1H*S8-(&1F8B`V
M-2PV,@T-(&1F8B!S971D=7(L<')E<W1O*S$-(&1F8B!S971V,3(S#2!D9F(@
M<F5S="QR97-T+#4U#2!D9F(@<F5S="PV,"PU-0T@9&9B('-E=&1U<BPQ-#`-
M(&1F8B`V-"PV,"PU-0T-(&1F8B!R97-T+')E<W0L<F5S=`T@9&9B(')E<W0L
M<F5S="QR97-T#0T@9&9B(')E<W1A<G0@.V%$H$E.1DE.251530T^[K.N^\I-
ML^V;7LF[K)EN<Y*GNS7/=Y[G55V2K.M:TI*O.S[NO::YRG-79*LZUK2DJ\[/
MNZ]K5LV3;JEN<U=DJSK6M*2KRL^\[NDV\K/O.[I-G.=E=DJSK6M*2KRL^\[N
MDV;ISDV\K/O.[E=DJSK6M*2KSL^[KVFN<E=DJSK6M*2KRL^\[NDV;II5V2K.
MM:TI*F^:I-O*S[SNY79*LZUK2DJ\[/NZ]IK5V2K.M:TI*F^<I-F^;Y-F^:9-
MF^;U=DJSK6M*2IOG:39VFJ39VF^39VG)79*LZUK2DI25*4I.&@`````@("TM
M#0`````@1$E--`T@("`@("`@("`@("`@("`@("`@("`@P2#-24Y$(,584$%.
M1$E.1R#%6%!%4DE%3D-%#0`````@($)9#0```"`@(--415!(14X@S"X@RE5$
M1`T````@("`@4TI51$1`3E=5+D5$50T`````("`M+0T`````RE5,62`Q#0``
M`,E.(-1(12#914%2(,]&(,]54B#,3U)$#0`````@,3DY-@T`````("`M+0T@
M#0`BUTA!5"!)3B!42$4@5T]23$0@5T%3(,D@3$]/2TE.1R!!5#\@(-=(050@
M5$A%($A%0TL@25,@64]54@U#3T1%($1/24Y'/R`@R$]7($1/(,D@345%5"!3
M34%25"!!3D0@1D523T-)3U533%D@1T]21T5/55,@5T]-14X@3$E+10U93U4@
M1$\_(@T`U$A%($Q!4U0@455%4U1)3TX@R2!#04Y.3U0@04Y35T52+"!"550@
M5$A)4R!,25143$4@5U))5$554"P-04Q/3D<@5TE42"!33TU%(%!%1$%.5$E#
M04Q,62!714Q,+41/0U5-14Y4140@0T]$12P@0T%.($-,14%2(%50(%1(10U&
M25)35"!45T\@R2!42$E.2RX@(-1(25,@5TE,3"!.3U0@0D4@02!615)9($1%
M3E-%(%=2251%55`L($A/3D535"$-S$]/2R!43R!42$4@0T]$12!&3U(@34]2
M12!$151!24PL($%.1"!!3ED@15%5051)3TY3($)%3$]7($-!3B!"10U32TE0
M4$5$(%=)5$A/550@4%)/0DQ%32X-`,E.($-!4T4@64]5($1)1$XG5"!+3D]7
M+"!$24TT(%=!4R!-62!%3E1262!)3E1/(%1(12!214-%3E1,60U(14Q$(#1+
M($1%34\@0T].5$535"X@(,9/4B!-3U)%($E.1D\@3TX@5$A%($-/3E1%4U0L
M($%3(%=%3$P@05,@5$A%#4]42$52($5.5%))15,@*#$W($5.5%))15,@24X@
M04Q,*2P@4T5%2R!912!42$4@Q%))5D5.($A/344@4$%'12!!5`U(5%10.B\O
M4T](3RY)3U,N0T]-+R4W14-/3TQ(3D0O#2`-`,9)4E-4+"!615)9($)2245&
M3%DL(%1(12!+15E04D534T53($A!5D4@5$A%($9/3$Q/5TE.1R!!0U1)3TY3
M.@T-`#0@("`M+2#455)"3R!-3T1%#0#$("`@+2T@SD]234%,($U/1$4@*#3$
M("L@,\0@4D]4051)3TY3+"!!3D0@3DE#12!!3D0@0T%354%,*0T`QC0@("TM
M(#3$+4U/1$4N("#!3$P@(C/$(B!23U1!5$E/3E,@05)%($A!3%1%1`T`TB_3
M("TM(#/$+4U/1$4N("#!3$P@(C3$(B!23U1!5$E/3E,@05)%($A!3%1%1`T`
M+B`@("TM(,1/5%1%1"!,24Y%(%1/1T=,10T`TU!!0T4@041604Y#15,@5$\@
M5$A%($Y%6%0@3T)*14-4+@T-`-1(12!#3T1%($E3(#0P.34@0EE415,@3$].
M1RP@04Y$(%=!4R!!(%)/64%,(%!!24X@5$\@1T54#5=/4DM)3D<@049415(@
M0T]-4%)%4U-)3TXN("#42$4@355324,@25,@T%)%3%5$12`C,B!&4D]-(-1(
M12#714Q,+0W414U015)%1"#+3$%62452($)9(,HNTRX@PD%#2"X@(,D@0D]2
M4D]7140@*$%.1"!)35!23U9%1"D@5$A%($Q)3D4-1%)!5TE.1R!23U5424Y%
M($923TT@5$A%($-50D4S1"!04D]'4D%-4R!!3D0@4U1/3$4@5$A%(%!!5%1%
M4DY3($]55`U/1B#03TQ91T].04U9+"!/5$A%4E=)4T4@5$A%($-/1$4@25,@
M5U))5%1%3B!&4D]-(%-#4D%40T@L($E.0TQ51$E.1PU42$4@355324,@4D]5
M5$E.12X@(-1(050@0U)!6ED@5$A)4D0@3T)*14-4($A!4R!&3U525$5%3B!3
M241%4R!)3B`SQ"P-04Y$(%1(12`TQ"!/0DI%0U0@04Q/3D4@2$%3(#,R(%!/
M24Y44R!7251((#DV($Q)3D53($-/3DY%0U1)3D<@5$A%#5!/24Y44RP@4T\@
M5T5,3"!/5D52(#$P,"!,24Y%4R!!4D4@0D5)3D<@1%)!5TX@050@02!424U%
M+B`@R2!705,-4T]214Q9(%1%35!4140@5$\@4%54($$@1$]#2TE.1R!"05D@
M3TX@3TY%($]&(%1(12!3241%4R!/1B!42$4@,\0-1U59("A!($Q)5%1,12`B
MQ4Q)5$4B($A534]2(%1(15)%*2!"550@4D%.($]55"!/1B!424U%($%.1"!2
M3T]-+@W!1E1%4B!$14-/35!215-324].(%1(12!#3T1%($584$%.1%,@02!,
M25143$4@0DE4+"!!3D0@24X@5$A%($5.1"!)5`U,14%615,@5$A%(#A+($)%
M5%=%14X@)#0P,#`M)#8P,#`@1E)%12P@0E54(%5315,@4%)%5%19($U50T@@
M159%4EE42$E.1PU%3%-%+@T`U$A%($9)4E-4($]"2D5#5"!)4R!!(#3$($-5
M0D4L($]&5$5.($-!3$Q%1"!!($A94$520U5"12X@(-E/50U#04X@4T5%($$@
M4TU!3$P@0U5"12!)3E-)1$4@3T8@04Y$($-/3DY%0U1%1"!43R!!($Q!4D=%
M4B!#54)%+B`@R48@64]5#4Q/3TL@02!,25143$4@0TQ/4T52+"!93U4@34%9
M($Y/5$E#12!42$%4($E.+4)%5%=%14X@5$A%(%173R!#54)%4R!!4D4-4T]-
M12!-3U)%($-50D53+B`@*-=(14X@64]5(%-,24-%($$@,\0@0U5"12P@64]5
M($=%5"!!(#+$($-50D4@+2T@02`-4U%505)%+B`@UTA%3B!93U4@5$%+12!!
M(%-,24-%($]&(%1(12!(65!%4D-50D4L(%E/52!'150@02`SQ"!#54)%*2X@
M(,%3#4E4(%)/5$%415,@04Q/3D<@2513($9/55)42"!#3T]21$E.051%+"!4
M2$4@0U5"12!&3TQ$4R!)3B!54$].#4E44T5,1BX@(,].12!705D@5$\@3$]/
M2R!!5"!)5"!)4R!42$%4(%1(12!#54)%4R!35$%25"!43R!#2$%.1T4-4$]3
M251)3TY3("TM($%&5$52(#$X,"!$14=21453($]&(%)/5$%424].(%1(12!)
M3E-)1$4@0U5"12!)4R!/3B!42$4-3U544TE$12!!3D0@5$A%($]55%-)1$4@
M0U5"12!)4R!/3B!42$4@24Y3241%+B`@U$A%($A94$520U5"12!(05,-3$E4
M15)!3$Q9(%154DY%1"!)3E-)1$4M3U54+@T`U$A%(%!23T=204T@5T]22U,@
M1DE.12!)3B#0P<P@04Y$(,[4T\,L($%,5$A/54=((-#!S"!&3TQ+4PU724Q,
M($=%5"!42$4@5%5.12!03$%924Y'($%4(%1(12!74D].1R!34$5%1"!!3D0@
M5%)!3E-03U-%1"!)3E1/#4$@1$E&1D5214Y4($M%62X-`,]((%E%4RP@3TY%
M(%1(24Y'(,D@4D5!3$Q9($Q)2T4@25,@5$A%($)!0TM'4D]53D0@3TX@5$A%
M(%-%0T].1`U/0DI%0U0@+2T@3TX@35D@,3`X-"!)5"!,3T]+4R!,24M%(%)/
M4$4N("#42$E3($E3($$@0T].4T51545.0T4@3T8@5$A%#5=!62#6R<,@1T5.
M15)!5$53($-/3$]24R`M+2!%6%1202!#3TQ/4E,@3U544TE$12!/1B!42$4@
M3D]234%,(#$V($%210U"14E.1R!'14Y%4D%4140L($)%0T%54T4@5%=/($A)
M4D53($-/3$]24R!!4D4@0D5)3D<@4$Q!0T5$($Y%6%0@5$\-14%#2"!/5$A%
M4BX@(,E&(%E/52!,3T]+($%4($E4($].($$@0DQ!0TL@04Y$(%=(251%($U/
M3DE43U(L(%E/52!724Q,#4I54U0@4T5%(%1(24-+($1)04=/3D%,($Q)3D53
M+B`@U$A)4R!615)9($U50T@@4U524%))4T5$($U%(%=(14X@R2!&25)35`U3
M05<@250A("#&24Y$(%1(12#-05)#2"`Q.3@U(,G%Q<4@TU!%0U1254T@05)4
M24-,12!&3U(@34]212!)3D9/4DU!5$E/3@U/3B!72%D@ULG#($)%2$%615,@
M5$A)4R!705DN#0#&24Y!3$Q9+"!93U4@34%9($Y/5$E#12!33TU%($Q)5%1,
M12!'3$E40TA%4R!&4D]-(%1)344@5$\@5$E-10U)3B!$4D%724Y'(%1(12`T
MQ"!/0DI%0U13+B`@U$A!5"!)4R!-62!3049%5%D@5D%,5D4@04Y$($M%15!3
M(%1(12!04D]'4D%-#4923TT@3$E415)!3$Q9($1%4U123UE)3D<@251314Q&
M+"!)3B!33TU%5$E-15,@4U!%0U1!0U5,05(@1D%32$E/3BX@(,](#5=%3$PN
M#0W!(,A!3D19(,=,3U-305)9#2TM+2TM+2TM+2TM+2TM+2T-`-!/3%E'3TXZ
M(,$@4D5#5$E,24Y%05(@0TQ/4T5$(%!,04Y%($9)1U5212!/1B!!3ED@3E5-
M0D52($]&(%-)1$53+@T`+2TM+2TM+0T-`-9%0U1/4CH@P2!$25)%0U1%1"!,
M24Y%(%-%1TU%3E0@2$%624Y'($U!1TY)5%5$12!!3D0@1$E214-424].+@T@
M("`@("`@("TM+2TM+0T-`,D@1$\@3D]4($M.3U<@2$]7(%1(12!415)-(")&
M24Q,140@5D5#5$]2(B!#04U%($E.5$\@5D]'544L($)55`U)5"!)4R!-14%.
M24Y'3$534RP@3D]4(%1/($U%3E1)3TX@02!,25143$4@4TE,3%D@+2T@5TA!
M5"!73U5,1"!!3@TB54Y&24Q,140@5D5#5$]2(B!,3T]+($Q)2T4L(%173R!0
M3TE.5%,@5TE42"!!3B!!4E)/5R!!5"!/3D4@14Y$/R`@STY%#4U!62!!4R!7
M14Q,(%1!3$L@04)/550@1DE,3$5$($Q)3D53($%.1"!&24Q,140@4$])3E13
M+@T-`-1(55,L(,D@4$Q%040@5TE42"!42$4@0T]-355.2519(%1/($Y/5"!2
M149%4B!43R!03TQ91T].4R!!4PU614-43U)3($%.1"!&24Q,140@4$],64=/
M3E,@05,@1DE,3$5$(%9%0U1/4E,N("#03TQ91T].4R!.145$(%E/55(-2$5,
M4"P@04Y$($A!5D4@0D5%3B!$25-#4DE-24Y!5$5$($%'04E.4U0@1D]2(%1/
M3R!,3TY'($Y/5RX@(,I54U0@3TY%#5--04Q,($1/3D%424].($].(%E/55(@
M4$%25"!/1B!!($-/4E)%0U0@34%42$5-051)0T%,(%)%1D5214Y#12!#04X-
M2$5,4"!3059%(%1(12!,259%4R!/1B!/3D4L(%1%3BP@159%3B!(54Y$4D5$
M4R!/1B!03TQ91T].4RP@0D]42"!!0E)/040-04Y$($A%4D4@050@2$]-12X@
M(,E.1$E6241504Q3(%=!3E1)3D<@5$\@0T].5%))0E5412!-3U)%($U!62!3
M4$].4T]2#4E.1$E6241504P@4$],64=/3E,[($$@2TE4(%=)3$P@0D4@4T5.
M5"!43R!93U4@0T].5$%)3DE.1R!42$4@3D%-10U/1B!42$4@4$],64=/3B!!
M3D0@050@4D5'54Q!4B!)3E1%4E9!3%,@02!024-455)%($]&(%1(12!03TQ9
M1T].(%=)3$P@0D4-4T5.5"!43R!93U4L(%-/(%E/52!-05D@34].251/4B!4
M2$4@4%)/1U)%4U,@3T8@64]54B!005)424-53$%2(%!/3%E'3TXN#=-/344@
M4$],64=/3E,@05)%($-214%4140@54Y#3$]3140L($%.1"!33TU%($1/($Y/
M5"!'150@5$A%($Y%0T534T%260U)3DL@3U(@4%)/1U)!34U)3D<@4TM)3$P@
M5$\@4%)/4$523%D@1DE,3"!42$5-+"!"550@0D4@250@02!154%$3$E,051%
M4D%,#4]2($1%0T%'3TXL(%1205!%6DE532!/4B!005)!3$Q%3$]'4D%-+"!7
M251((%E/55(@2$5,4"!712!#04X@159%3E1504Q,60U-04M%($%,3"!03TQ9
M1T].4R!#3$]3140@04Y$($953$PL($9/4B!!($)%5%1%4BP@34]212!#259)
M3$E:140@5T]23$0N#=1(04Y+(%E/52!&3U(@64]54B!424U%+"!!3D0@QT]$
M($),15-3($%,3"!42$4@3$E45$Q%($=%3TU%5%))0T%,#4-/3E-44E5#5$E/
M3E,L($Y/($U!5%1%4B!42$5)4B!$24U%3E-)3TX@3U(@0T].1DE'55)!5$E/
M3BX-(`T@#=1(12#)1$5!#2TM+2TM+2TM(`T`U$A)4R!04D]'4D%-($1)4U!,
M05E3($$@4D504D5314Y4051)3TX@3T8@4T]-12!&3U52+41)345.4TE/3D%,
M#4]"2D5#5%,@+2T@1D]54B`TQ"!/0DI%0U13+"!!4R!!($U!5%1%4B!/1B!&
M04-4+"!%04-(($].12!/1B!42$5-#4$@-,0@04Y!3$]'($]&($$@5$A2144M
M1$E-14Y324].04P@3T)*14-4+B`@Q4%#2"!30U)%14X@0T].5$%)3E,@1D]5
M4@U364U-151262U214Q!5$5$(#/$($]"2D5#5%,@04Y$($].12`TQ"!!3D%,
M3T<@3T8@5$A%($]"2D5#5"P@4D]4051%1`U!3D0@4%)/2D5#5$5$($923TT@
M-,0@24Y43R`RQ"X-#0#43R!$15-#4DE"12!42$4@1D]54BU$24U%3E-)3TY!
M3"!/0DI%0U13($E3($Y/5"!33R!43U5'2"X-U$A%(#3$($-50D4@*%1(12!(
M65!%4D-50D4I($E3(%1(12!&25)35"!43R!"12!$25-03$%9140L($%.1"!)
M5"!)4PU42$4@4U1!4E1)3D<@4$])3E0@1D]2(%1(12!,051%4B!/0DI%0U13
M+"!!3D0@250@25,@04Q33R#)(%1(24Y+(%1(10U%05-)15-4(%1/(%-%12!7
M2$%4($E3($=/24Y'($].(%=)5$@N("#42$5212!)4R!.3U1(24Y'(%)%04Q,
M62!34$5#24%,#4%"3U54($9/55(@1$E-14Y324].4R`M+2!7251(($$@,\0@
M3T)*14-4($5!0T@@4$])3E0@25,@1$5&24Y%1"!"62!42%)%10U#3T]21$E.
M051%4RP@4T%9("A8+%DL6BDN("#!(#3$(%!/24Y4($A!4R!&3U52($-/3U)$
M24Y!5$53+"!305D-*%<L6"Q9+%HI+B`@U$A%(#/$($-50D4@2$%3($5)1TA4
M(%9%4E1)0T53($%4#0T`*"LO+3$L("LO+3$L("LO+3$I#0W42$52149/4D4@
M02!615)9($Y!5%5204P@15A414Y324].($E.5$\@1D]54B!$24U%3E-)3TY3
M(%=/54Q$($)%#0T`*"LO+3$L("LO+3$L("LO+3$L("LO+3$I#0W&3U(@02!4
M3U1!3"!/1B!325A4145.(%9%4E1)0T53+B`@U$\@3$]/2R!!5"!)5"!!3D]4
M2$52(%=!63H-#0`H,2P@*R\M,2P@*R\M,2P@*R\M,2D-`"@M,2PK+RTQ+"`K
M+RTQ+"`K+RTQ*0T-U$A!5"!)4RP@050@5STQ(%=%($=%5"!!($-50D4L($%.
M1"!!5"!7/2TQ(%=%($=%5"!!3D]42$52($-50D4N("#)3@U&04-4+"!)1B!7
M12!404M%($$@(E-,24-%(B!/1B!/55(@2%E015)#54)%+"!712!'150@02`S
MQ"!#54)%+@W#3TU!4$%212!43R!404M)3D<@02!33$E#12!/1B!!(#/$($-5
M0D4L(%=(15)%(%E/52!'150@02!3455!4D4-*$$@,L0@0U5"12P@248@64]5
M(%=)3$PI+@T`U$A)4R!)4R!$14U/3E-44D%4140@5TA%3B!42$4@0T]$12!&
M25)35"!35$%25%,@55`@+2T@5$A%(%!23T=204T-(D=23U=3(B!!($-50D4@
M1E)/32`PQ"`M/B`QQ"`M/B`RQ"`M/B`SQ"`M/B`TQ"X@(,%4(%1(12`TQ"!3
M5$%'10U42$5212!)4R!!(%--04Q,15(@0U5"12!)3E-)1$4@3T8@02!,05)'
M15(@0U5"12P@5TE42"!#54)%4R!)3BU"1517145.#51(12!45T\N("`HR48@
M64]5($%212!#55))3U53($%3(%1/($A/5R#)($1)1"!42$4@(D=23U=)3D<B
M+"!3144@5$A%#4-/1$4@1$530U))4%1)3TX@0D5,3U<@1D]2($$@1D57($1%
M5$%)3%,I+@T`SD585"P@05,@5$A%($-50D4@0D5'24Y3(%1/(%)/5$%412P@
M250@(D9/3$13($E.(B!/3B!)5%-%3$8-*$]2+"!)1B!93U4@3$E+12P@250@
M54Y&3TQ$4R$I+B`@TD]4051)3TY3($%212!.3R!$249&15)%3E0@5$A!3@U4
M2$59($A!5D4@04Q705E3($)%14XN("#43R!$3R!!(#/$(%)/5$%424].+"!2
M14-!3$P@5$A!5"!42$4@3T)*14-4($E3#5)/5$%4140@24X@5$A%(%@M62!0
M3$%.12P@5$A%(%DM6B!03$%.12P@04Y$(%1(12!8+5H@4$Q!3D4N("#43R!2
M3U1!5$4-24X@5$A%(%@M62!03$%.12!"62!!3B!!3D=,12!02$DZ#0T`6$Y%
M5R`](%@J0T]3*%!(22D@+2!9*E-)3BA02$DI#0!93D57(#T@6"I324XH4$A)
M*2`K(%DJ0T]3*%!(22D-#==%3$PL($%.62!45T\@0T]/4D1)3D%415,@1D]2
M32!!(%!,04Y%+"!33R!)3B!&3U52($1)345.4TE/3E,@5$A%4D4-05)%($I5
M4U0@5%=)0T4@05,@34%.62!03$%.15,@5$\@4D]4051%($E.+B`@R4X@4$%2
M5$E#54Q!4BP@5$A%#5!23T=204T@1$]%4R!23U1!5$E/3E,@24X@5$A%(%53
M54%,(%!,04Y%4R`H6"U9+"!9+5HL(%@M6BD@04Y$#4%,4T\@1$]%4R!!(%-)
M3D=,12!23U1!5$E/3B!)3B!42$4@5RU8(%!,04Y%+"!42$%4($E3+`T-`%=.
M15<@/2!7*D-/4RA02$DI("T@6"I324XH4$A)*0T`6$Y%5R`](%<J4TE.*%!(
M22D@*R!8*D-/4RA02$DI#0W)($1)1$XG5"!&145,($%.62!'4D5!5"!.145$
M(%1/(%)/5$%412!42%)/54=(($585%)!(%!,04Y%4R!)3E9/3%9)3D<-5$A%
M(%<M0T]/4D1)3D%412`H5$A%(%<M62!!3D0@5RU:(%!,04Y%4RDN("#72$5.
M(%!(23TY,"!$14=21453+`U/4B`Q.#`@1$5'4D5%4RP@3D]424-%(%1(050@
M5$A%($-/3U)$24Y!5$53(%12041%(%!,04-%4RP@5$A%3B!'3PU43R!42$5)
M4B!.14=!5$E615,N("#42$E3($U%04Y3(%1(050@05,@4$A)($E3($E.0U)%
M05-%1"P@24X@15-314Y#10U42$4@24Y.15(@04Y$($]55$52($-50D53($%2
M12!'3TE.1R!43R!#2$%.1T4@4$]3251)3TY3+"!!3D0@5$A)4PU42$5.($58
M4$Q!24Y3(%1(12!53D9/3$1)3D<@5$A!5"!)4R!3145.($].(%1(12!30U)%
M14XN#0#42$4@TB_3($M%62!'3T53($E.5$\@,\0@34]$12!"62!:15)/24Y'
M($]55"!42$4@04Y'3$4-24Y#4D5-14Y4($9/4B!42$4@5RU8(%!,04Y%+B`@
MR4X@149&14-4+"!42$4@-,0@4D]4051)3TX@25,@1E)/6D5.+@W42$4@QC0@
M2T59(%I%4D]3($]55"!42$4@6"U9+"!9+5HL($%.1"!8+5H@04Y'3$4@24Y#
M4D5-14Y44RP@3$5!5DE.1PU/3DQ9(%1(12!7+5@@4D]4051)3TXN("#&-"!&
M3TQ,3U=%1"!"62#2+],@5TE,3"!42$52149/4D4@1E)%15I%#51(12!)34%'
M12!#3TU03$5414Q9("TM(%5312#$($]2(#0@5$\@1T54($E4($=/24Y'($%'
M04E.+@T`U$A%4D4@25,@4U1)3$P@5$A%($E34U5%($]&(%9)4U5!3$E:24Y'
M($$@-,0@3T)*14-4+B`@U$A)4PU32$]53$0@3D]4($)%(%-54E!225-)3D<@
M+2T@049415(@04Q,+"!712!(059%($%,3"!3145.(#/$($]"2D5#5%,-1%)!
M5TX@3TX@02`RQ"!#3TU0551%4B!30U)%14X@*$]2($$@,L0@4$E%0T4@3T8@
M4$%015(I+B`@R48@5T4@0T%.#4=%5"!&4D]-(#/$(%1/(#+$(%1(14X@5T4@
M3U5'2%0@5$\@0D4@04),12!43R!'150@1E)/32`TQ"!43R`SQ`TH04Y$($92
M3TT@5$A%4D4@24Y43R`RQ"DN("#214-!3$P@5$A!5"!!(#/$(%!23TI%0U1)
M3TX@1%)!5U,@02!,24=(5`U205D@1E)/32!42$4@3T)*14-4+"!42%)/54=(
M($$@3$E45$Q%(%!)3DA/3$4@3$]#051%1"!!5"!42$4@3U))1TE.+`U!3D0@
M1DE.1%,@5$A%($E.5$524T5#5$E/3B!7251(($$@4$E%0T4@3T8@1DE,32!,
M3T-!5$5$($%4(%H]1"P@00U#3TY35$%.5#H-#0#,(#T@5"`J("A8,2Q9,2Q:
M,2D@25,@35D@3$E'2%0@4D%9+"!33R!4/40O6C$@1TE615,@5$A%#0```"`@
M($E.5$524T5#5$E/3B!7251((%1(12!&24Q-($]&($$@4D%9($923TT-````
M("`@5$A%(%!/24Y4("A8,2Q9,2Q:,2D@4$%34TE.1R!42%)/54=((%1(10T`
M```@("!/4DE'24XN#0W33R!42$E3($E3(%9%4ED@14%362!43R!%6%1%3D0@
M24Y43R`TQ"`M+2!324U03%D@4%)/2D5#5"!&4D]-(#3$(`U)3E1/(#/$(%1(
M4D]51T@@5$A%($]224=)3CH-#0#,(#T@5"`J("A7,2Q8,2Q9,2Q:,2D@($Q%
M5"!4/40O5S$-#0`M/B#,,R`]("A$+"!$+U<Q("H@6#$L($0O5S$@*B!9,2P@
M1"]7,2`J(%HQ*0T-U$A%(%@L62Q:($-/3U)$24Y!5$53($%212!42$5.(%!2
M3TI%0U1%1"!&4D]-(#/$($E.5$\@,L0L($%'04E.#51(4D]51T@@5$A%($]2
M24=)3BX@(-1(25,@1TE615,@02`B4$524U!%0U1)5D4B(%9)15<@3T8@5$A%
M(#3$#4]"2D5#5"X-`,Y/5RP@5TA!5"!)4R!42$4@-,0@04Y!3$]'($]&($$@
M5$544D%(14123TXL($]2($%.($]#5$%(14123TX_#<D@4D5!4T].140@5$A%
M32!/550@0ED@5%)924Y'(%1/(%1(24Y+($]&(%=(050@,\0@3T)*14-44R#)
M($-/54Q$#41%4DE612!35$%25$E.1R!&4D]-($$@0U5"12X@(-1(050@25,L
M(%1!2TE.1R!!($-50D4L($%.1"!#551424Y'#4%705D@4$E%0T53($]&($E4
M+B`@QD]2($E.4U1!3D-%+"!43R!$3R!42$4@,30M4TE$140@1U59+"!324U0
M3%D-5$%+12!42$4@34E$4$])3E0@3T8@14%#2"!,24Y%(%-%1TU%3E0@3TX@
M5$A%($-50D4@+2T@5$A)4R!(05,-5$A%($5&1D5#5"!/1B!#551424Y'($]&
M1B!42$4@0T]23D524R!/1B!42$4@0U5"12X@(,)9($1%1DE.24Y'#51(24Y'
M4R!)3B!42$E3(%=!62P@250@25,@1D%)4DQ9(%-44D%)1TA41D]25T%21"!4
M3R!%6%1%3D0@5$A%($]"2D5#5%,-24Y43R!&3U52($1)345.4TE/3E,N("`H
MR2!705,@2$%04$E%4U0@5$\@4D5!3$E:12!(3U<@5$\@1$\@02!4151204A%
M1%)/3BDN#=-%12!42$4@1DE,12!/0DI%0U13+E,@1D]2($U/4D4@1$5404E,
M4R!/3B!42$4@24Y$259)1%5!3"!/0DI%0U13+@W.05154D%,3%D@14%#2"!(
M05,@4T]-12!324U)3$%22519(%1/(%1(12!#54)%.B!42$5212!)4R!!3B!)
M3DY%4B!/0DI%0U0-*$4N1RX@02!4151204A%1%)/3BD@04Y$($%.($]55$52
M+B`@U$A%(%173R!!4D4@0T].3D5#5$5$+"!!3D0@14%#2`U3150@3T8@0T].
M3D5#5$E/3E,@1D]235,@04Y/5$A%4B!/0DI%0U0L(%-/(%1(050L($9/4B!)
M3E-404Y#12P@5$A%4D4-05)%(%1%5%)!2$5$4D].4R!)3BU"1517145.(%1(
M12!)3DY%4B!!3D0@3U5415(@5$544D%(14123TY3+@T`QDE.04Q,62P@5$\@
M2$5,4"!)3B!625-53$%)6DE.1R!42$4@3T)*14-44R#)(%-454-+($$@1$]4
M5$5$#4Q)3D4@0T%004))3$E462!)3BX@(-1(12!$3U14140@3$E.15,@24X@
M1T5.15)!3"!#3TY.14-4(%1(12`B24Y.15(B#4%.1"`B3U5415(B(#/$($]"
M2D5#5%,@+2T@5%523DE.1R!42$5-($]&1B!,1513(%E/52!42$5.(%-%12!4
M2$4-5%=/($]"2D5#5%,@24Y415)!0U0N("`HU$A%(%1(25)$($]"2D5#5"!7
M05,@34E'2%19($E-4%)%4U-)5D4M3$]/2TE.1PU"149/4D4@R2!!1$1%1"!4
M2$5312!'55E3(2`Z*0T@``W42$4@PT]$10TM+2TM+2TM+0T`SD]7+"!)5"!)
M4R!-62!#3TY3241%4D5$($]024Y)3TX@5$A!5"!42$4@0T]$12!)4R!!5T95
M3$Q9#5=%3$P@1$]#54U%3E1%1"P@4T\@5$A%4D4@25-.)U0@5$]/($U50T@@
M5$\@4T%9+"!"550@02!&15<@1T5.15)!3`U42$E.1U,@05)%(%=/4E1(($U%
M3E1)3TY)3D<N#0`BQU)/5TE.1R(@5$A%(%!/24Y44R!)4R!214%,3%D@14%3
M62`M+2!324U03%D@4U1!4E0-14%#2"!#3T]21$E.051%($%4(%I%4D\L($%.
M1"!'4D%$54%,3%D@24Y#4D5!4T4@250@3U54(%1/($E44R!&24Y!3`U604Q5
M12X@(,)9($1/24Y'(%1(25,@1DE24U0@5TE42"!42$4@6"U#3T]21$E.051%
M4RP@5$A%3B!42$4@62U#3T]21%,L#51(14X@6BP@5$A%3B!7+"!42$4@0U5"
M12!'4D]74R!!($1)345.4TE/3B!!5"!%04-((%-415`N("#)($1/3B=4#41/
M($%.651(24Y'($9!3D-9(%=)5$@@5$A%($]42$52($]"2D5#5%,@+2T@04Q,
M($-/3U)$24Y!5$53($%210U'4D]73B!%455!3$Q9+"!33R!42$4@3T)*14-4
M4R!'4D]7($]55%=!4D13($923TT@5$A%($]224=)3B`H05,@3U!03U-%1`U4
M3R!33TU%(%-/4E0@3T8@6D]/32!%1D9%0U0I+@T`Q4%#2"`TQ"!#2$%204-4
M15(@25,@02`Q,E@Q,B!#2$%204-415(@1U))1"P@5TA)0T@@1TE615,@02`Y
M-E@Y-@U025A%3"!$4D%724Y'($%214$L($%.1"!404M%4R!54"!42$4@1DE2
M4U0@,30T($-(05)!0U1%4E,N("#%04-(#3/$($-(05)!0U1%4B!54T53($$@
M-5@U($-(05)!0U1%4B!'4DE$+"!'259)3D<@-#!8-#`L($%.1"!404M)3D<-
M55`@5$A%($Y%6%0@-"HR-3TQ,#`@0TA!4D%#5$524RP@1D]2($$@5$]404P@
M3T8@,C0T(%-/($9!4BX@(,E.#45)1TA4($]&(%1(12!214U!24Y)3D<@,3(@
M0TA!4D%#5$524R!!4D4@1D]54B!0051415).4R!!3D0@5$A%25(-Q<_2(",D
MQL8@0T]-4$Q%345.5%,L(%=(24-(($%212!54T5$($E.(%1(12!"04-+1U)/
M54Y$(%1)3$E.1U,@04Y$#4%212!54T5$($E.1$E214-43%D@24X@5$A%(%!!
M5%1%4DX@1DE,3%,N#0#324Y#12!42$4@1DE.04P@6"U9($-/3U)$24Y!5$53
M($-!3B!204Y'12!&4D]-("TT."XN-#@L(%1(25,-4$Q!0T53($$@4D535%))
M0U1)3TX@3TX@5$A%($E.251)04P@5D%,5453($9/4B!42$4@0T]/4D1)3D%4
M15,N("#&3U(-4%524$]315,@3T8@04-#55)!0UD@04Y$(%-50T@@0T]/4D1)
M3D%415,@35535"!/1B!#3U524T4@0D4@4T-!3$5$+`U33R!42$%4(%=(24Q%
M($$@0T]/4D1)3D%412!,24M%("@Q+#$L,2PQ*2!)4R!#3TY614Y)14Y4($9/
M4B!42$E.2TE.1RP-02!#3T]21$E.051%($Q)2T4@*#$V+#$V+#$V+#$V*2!)
M4R!-54-(($)%5%1%4B!354E4140@5$\@5$A%#4E-4$Q%345.5$%424].("TM
M(%1(050@25,L(%1(12!/4DE'24Y!3"!#3T]21$E.051%(%-#04Q%1"!"62!!
M($9!0U1/4@U/1B!325A4145.($]2(%-/+B`@U$A%(%1!0DQ%(%)!3D=%(%)%
M4U1224-44R!42$E3(%-#04Q)3D<@1D%#5$]2.B!42$4--,0@0T]/4D1)3D%4
M12!7251(($Q!4D=%4U0@3$5.1U1((%1(050@R2!54T4@25,@*#$L,2PQ+#$I
M+"!72$E#2`U(05,@3$5.1U1((#(N("#42%53+"!!1E1%4B!23U1!5$E/3BP@
M250@25,@4$]34TE"3$4@5$A!5"!)5"!724Q,($Q)10U/3B!!3B!!6$E3(%=)
M5$@@0T]/4D1)3D%412P@4T%9("@R+#`L,"PP*2X@(--)3D-%($-/3U)$24Y!
M5$53($U54U0-3D]4($580T5%1"`T."!)3B!42$4@24U03$5-14Y4051)3TXL
M(%1(25,@4U5'1T535%,@02!30T%,24Y'($9!0U1/4@U/1B`R-"X-`,%3($$@
M4%)!0U1)0T%,(%!/24Y4+"!42$4@4$])3E13($Y%5D52(%)%04Q,62!(250@
M5$A)4PU-05A)355-+"!33R!)3B!04DE.0TE03$4@02!,05)'15(@4T-!3$E.
M1R!&04-43U(@0T]53$0@0D4@55-%1"X-P4Q415).051)5D5,62!42$4@4%)/
M2D5#5$E/3B!23U5424Y%($-!3B!024-+(%50(%1(12!33$%#2RP@5TA)0T@@
M25,-5TA!5"!$24TT(%5315,N#0#42$4@1DE24U0@4TU!4E0@5$A)3D<@R2!$
M240@5T%3(%1/($1)5$-((%1(12!/3$0@34542$]$#4]&($-/35!55$E.1R!2
M3U1!5$E/3E,N("#)3E-414%$($]&($-!3$-53$%424Y'($$@0DE'(%)/5$%4
M24].#4U!5%))6"P@R2!#04Q#54Q!5$4@4T]-12!"24<@5$%"3$53($]&($8@
M6"`H4RD@/2!8*E-)3BA3*2P@04Y$($Q%5`U42$4@04Y'3$4@4R!204Y'12!&
M4D]-(#`N+C$R-RX@(-1/($=%5"!!(%1!0DQ%($]&($-/4RA3*2#)(%-)35!,
M60U015))3T1)0T%,3%D@15A414Y$(%1(12!324Y%(%1!0DQ%($)9($-/4%E)
M3D<@5$A%($9)4E-4(#,R($)95$53($]&#51(12!404),12!)3E1/(%1(12`Q
M,C@M,34Y(%!/4TE424].4R`M+2!#3U,H4RD@25,@5$A54R!324XH4RLS,BDN
M#2C)(%1!2T4@041604Y404=%($]&(%1(12!&04-4(%1(050@4TE.*%,I($%.
M1"!#3U,H4RD@05)%(%)%3$%4140@0ED-02!&04-43U(@3T8@4$DO,BX@(-=%
M4D4@R2!334%25"#)(%=/54Q$($A!5D4@5$%+14X@041604Y404=%($]&(%1(
M10U2149,14-424].(%-934U415)9($]&(%-)3B]#3U,L($%.1"!3059%1"!!
M3D]42$52(#8T($)95$53+B`@ST@@5T5,3"XI#0#42$E3(%1(14X@3$5!5D53
M(#DV($)95$53($9/4B!!(%!23TI%0U1)3TX@5$%"3$4L(%=(24-(($E3#4I5
M4U0@5TA!5"#)($Y%140@1D]2(%1(12`TQ"!/0DI%0U0N("#42%53(,D@0T%.
M($U!4T@@5$%"3$53($]&#5@J4TE.*%,I+"!8*D-/4RA3*2P@04Y$($U9(%!2
M3TI%0U1)3TX@5$%"3$4@3T8@1B!8*%HI/40J*%HM6C`I("H@6"!)3E1/#4$@
M4TE.1TQ%(%!!1T4N("#42$E3(%!!1T4@25,@5$A%3B!%6%1%3D1%1"!&4D]-
M("0V,#`P(%1/("3#,#`P+`U)+D4N($=)5DE.1R`Y-B!404),15,L($9/4B!!
M(%1/5$%,($]&(#(T2RX@(,%#0T534TE.1R!42$4@5$%"3$53#4E3($Y/5R!4
M4DE624%,.B!35$]212!8*R0V,"!)3B!42$4@2$E'2"!"651%($]&($$@6D52
M3R!004=%(%!/24Y415(L#51(12!,3U<@0EE412!#3TY404E.4R!42$4@3T9&
M4T54($E.5$\@5$A%(%1!0DQ%("@P($9/4B!42$4@4TE.12!404),12P-,S(@
M1D]2(%1(12!#3U-)3D4@5$%"3$4L($%.1"`Q-C`@1D]2(%1(12!04D]*14-4
M24].(%1!0DQ%*2P@04Y$#41/($%.(,S$P2`HVM`I+-D@5$\@1T54(%1(12!2
M24=(5"!604Q512X-`-1(55,@4D]4051)3TY3($%.1"!04D]*14-424].4R!!
M4D4@3D]7(%9%4ED@1D%35"!!3D0@5D5260U#3TU004-4+B`@SD]412!42$%4
M($E4($E33B=4(%)%04Q,62!.14-%4U-!4ED@5$\@1T5.15)!5$4@02!#3TU0
M3$5410U404),12!/1B!324Y%4R!!3D0@0T]324Y%4RX@(,9/4B!)3E-404Y#
M12P@,3)+($]&(%1!0DQ%4R`H3U(@-DL@3U(-5TA!5$5615(I($-/54Q$($)%
M(%53140L($%.1"!42$4@1DE.04P@4D5354Q4(%-)35!,62!-54Q425!,245$
M($)9#5173RP@3U(@1D]54BX@(,5614X@5$A/54=((%1(12!&24Y!3"!#3T]2
M1$E.051%4R!-24=(5"!204Y'10U&4D]-("TT."XN-#@L($-!3$-53$%424].
M4R!$3TXG5"!.145$(%1/($)%($1/3D4@55-)3D<@5$A%($953$P@4D%.1T4N
M#0#42$4@3$E.12!23U5424Y%($E3(%1(12!'3T]$("=/3"!#2%5.2UD@3$E.
M12!23U5424Y%($923TT-5$A%($Q!4U0@0U5"13-$(%!23T=204TN("#)5"!/
M1B!#3U524T4@2$%$(%1/($)%($U/1$E&245$(%1/(%=/4DL-5TE42"!42$4@
M5%=/($)51D9%4E,@04Y$(%-50T@L($%.1"#)(%)%34]6140@02!"54Y#2"!/
M1B!214%,3%D@4D5$54Y$04Y4#4-/1$4@5$A!5"!705,@24X@5$A%4D4@*-+%
MP<S,V2!214153D1!3E0I+"!%4U!%0TE!3$Q9($E.(%1(12!!0U1504P-1%)!
M5TE.1R!005)4("A-04-23U,@V-/4Q=`@04Y$(-G3U,70("TM($Q)3D53($%2
M12!#3TU-14Y4140@3U54(%=)5$@@02`G*B<I+@W)($%,4T\@041$140@02!$
M3U14140M3$E.12!#05!!0DE,2519("A)5"!/3DQ9(%1!2T53($$@1D57($58
M5%)!#4E.4U1254-424].4RDL(%1/($U!2T4@5$A)3D=3($5!4TE%4B!43R!3
M144N#0#/3DQ9($$@4TE.1TQ%(#/$($]"2D5#5"!)4R!!0U1504Q,62!$4D%7
M3B`M+2!42$4@3U1(15)3#4%212!'14Y%4D%4140@5DE!(%-934U%5%)9("A2
M149,14-424].4R!42%)/54=((%@],"!!3D0@63TP*2X@(--)3D-%(%1(10TS
MQ"!/0DI%0U13($%212!$4D%73B!/3B!!($U50T@@4TU!3$Q%4B!'4DE$+"!4
M2$59($Y%140@5$\@0D4@4T-!3$5$#41/5TX@02!"250N("#)3E-414%$($]&
M(%=2251)3D<@4T5005)!5$4@4D]55$E.15,@5$\@1$5!3"!7251((%1(12`S
MQ`U!3D0@-,0@3T)*14-44RP@R2!324U03%D@4T54(%1(12`TQ"!#3T]21$E.
M051%($]&($5!0T@@4$])3E0@24X@5$A%(#/$#4]"2D5#5"!43R!33TU%($%0
M4%)/4%))051%($Y534)%4BX@(-)%0T%,3"!42$%4($E.($$@,\0@4%)/2D5#
M5$E/3BP-5$A%($9!4E1(15(@05=!62!&4D]-(%E/52!42$4@3T)*14-4($E3
M(%1(12!334%,3$52($E4($=%5%,N("#42$E3#4E3(%1(12!304U%($E$14$@
M+2T@5$A%($]"2D5#5"!)4R!055-(140@1$]73B!42$4@-,0@05A)4RP@04Y$
M(%1(25,-2$%3(%1(12!%1D9%0U0@3T8@4TA224Y+24Y'(%1(12!/0DI%0U0@
M55!/3B!04D]*14-424].+@T`V4]5($U!62!(059%($Y/5$E#140@5$A!5"!4
M2$4@,\0@3T)*14-44R!414Y$(%1/($%63TE$(%1(10U#14Y415(@3T8@5$A%
M(%-#4D5%3B`M+2!42$E3($E3($$@0T].4T51545.0T4@3T8@5$A%(%)!3D1/
M32!.54U"15(-1T5.15)!5$]2(,D@0T]$140@55`@*$%.1"!$240@3D]4(%1%
M4U0@1D]2(%-014-44D%,(%!23U!%4E1)15,-3U(@04Y95$A)3D<@3$E+12!4
M2$%4(#HI+B`@SU))1TE.04Q,62#)(%=!4R!'3TE.1R!43R!03$%#12!42$E.
M1U,-24X@02!204Y$3TT@4D]7($%.1"!#3TQ534XL($)55"!42$5.(%1(24Y'
M4R!*55-4($-,54U0140@04Q/3D<@00U$24%'3TY!3"!,24Y%(#HI+B`@R2!7
M24Q,($%,4T\@4T%9(%1(050@5$A%(-/0S,'4(%)/551)3D4@0T%54T5$#4U%
M($U!3ED@1$%94R!/1B!(14%$04-(15,@+2T@5TA/4T4@241%02!705,@250@
M5$\@4%54($-/3$]2($U%34]260U33R!#3$]312!43R!!(,/)P3\@.BD-`,].
M12!42$E.1R#)($A!1"!43R!04E5.12!/550@5T%3($$@4D]55$E.12!72$E#
M2"!$4D%74PU#25)#3$53($%3(%1(12!324Y%+T-/4TE.12!404),15,@05)%
M($)%24Y'(%-%5"!54"X@(,E4($E3#4M)3D1!($Y%050@04Y$($=!5D4@4T]-
M151(24Y'(%1/(%=!5$-((%=(24Q%(%1(12!#3T1%(%=!4PU3151424Y'(%50
M+"!!3D0@04Q33R!705,@02!#2$5#2R!42$%4(%1(12!44DE'(%1!0DQ%4R!7
M15)%($)%24Y'#5-%5"!54"!#3U)214-43%DN("#!3EE705E3+"!!3$P@250@
M1$]%4R!)4R!43R!$4D%7($-/3D-%3E1224,-0TE20TQ%4R!/1B!04D]'4D53
M4TE614Q9($Q!4D=%4B!2041)22P@1D]2($$@4T]25"!/1B!454Y.14Q)4T@M
M3$]/2TE.1PU42$E.1R#)(%-54%!/4T4N#0#42$5212!)4R!!($Q)5%1,12`B
M1D%)3%-!1D4B($E.(%1(12!04D]*14-424].(%)/551)3D4N("#)1@U#3T]2
M1$E.051%4R!!4D4@3U54($]&(%)!3D=%("A'4D5!5$52(%1(04X@.38@3U(@
M-#`I($%&5$52(%!23TI%0U1)3TXL#51(15D@05)%(%-%5"!43R!42$4@3U))
M1TE.+B`@P50@3$5!4U0@3TY%($]&(%1(12!/0DI%0U13(%-#4D574R!54`U&
M4D]-(%1)344@5$\@5$E-12`H5$A%($]#5$%(14123TX@25,@5$A%($U!24X@
M0U5,4%))5"#)(%1(24Y+*2P@04Y$#<D@5$A)3DL@5TA!5"!(05!014Y3($E3
M(%1(050@5$A%($Q)3D4@4D]55$E.12!42$E.2U,@250@3D5%1%,@5$\@1%)!
M5PU!($Q/5"!-3U)%(%!/24Y44R!42$%.($E4(%)%04Q,62!.145$4R!43RX@
M(--/($E4($A!4%!)3%D@34]615,@04Q/3D<-4U1)0TM)3D<@0EE415,@24Y4
M3R!42$4@5%))1R]04D]*14-424].(%1!0DQ%4RP@04Y$($5614X@34%+15,@
M2513#5=!62!54"!43R#6R<,L(-/)Q"!!3D0@5$A%(,/)P5,A("#/3D-%($E4
M($%#5%5!3$Q9(%-405)4140@4$5'1TE.1R!42$4-T\G$(%9/3%5-12!214=)
M4U1%4B!/4B!33TU%5$A)3D<L($)%0T%54T4@5$A%4D4@5T]53$0@0D4@02!0
M15))3T1)0PU,3U5$(%1)0TM)3D<@1E)/32!42$4@4U!%04M%4BX@(,5614Y4
M54%,3%D@5$A%($-/1$4@2E535"!'4DE.1%,@5$\-02!(04Q4($]2($5,4T4@
M0T]-4$Q%5$5,62!(3U-%4R!42$4@4UE35$5-("TM($A%3D-%+"!42$4@1D%)
M3%-!1D4@.BDN#0#&24Y!3$Q9+"!42$4@5D5262!&25)35"!,24Y%4R!/1B!4
M2$4@0T]$12!2141)4D5#5"!42$4-PL'3R<,@5D5#5$]2($%4("0P,S`R+R0P
M,S`S($%.1"#*S=!3(%1/(%1(12#.S<D@TM,OTL73U,_2Q2!23U5424Y%#2A!
M3%1(3U5'2"!!(,+2RR!73U5,1"!04D]"04),62!(059%(%-51D9)0T5$*2X@
M(-1(25,@25,@5$A%($].3%D-5T%9(,D@0T]53$0@1T54(%1(12!#3T1%(%1/
M(%=/4DL@5TE42"!42$4@0U)53D-(15(@+2T@5TE42$]55"!)5"P-5$A%(%!2
M3T=204T@1T]%4R!)3E1/("+)TM$@3$]#2R(N("##4D]34T)/5R!/1B##4D53
M5"!354='15-4140@5$A!5`W!PL-254Y#2$52($1/15,@3D]4(%!55"!!(,/,
MR2!!5"!42$4@14Y$($]&($E44R!#4E5.0TA)3D<@4D]55$E.12P-04Y$(%1(
M050@5$A)4R!#04X@0T%54T4@4%)/0DQ%35,L($U/4U0@3D]404),62!7251(
M(%1(12##R<%3+@T`R50@5$]/2R`Q,"TQ-2!(3U524R!43R!'150@5$A)3D=3
M(%1/($-254Y#2"!!3D0@5T]22R!#3U)214-43%DN#<E.($A)3D1324=(5"#)
M($-!3B!42$E.2R!/1B!!($)53D-(($]&(%1(24Y'4R!42$%4($-/54Q$($A!
M5D4@0D5%3@U%05-)3%D@1$].12!43R!-04M%($E4(%=/4DLL($)55"!!5"!4
M2$4@5$E-12#)(%=!4R!355)%(%)%3$E%5D5$(%=(14X-250@1DE.04Q,62!'
M3U0@1$]73B!43R`T,#DU($)95$53+B`@S4]204PZ(,$@3$E45$Q%(%1(24Y+
M24Y'($5!4DQ9($].#5-!5D53($U!4U-)5D4@5$E-12!!3D0@149&3U)4($1/
M5TX@5$A%(%)/040N#2`-U$A%(,U54TE##2TM+2TM+2TM+2`-`,9)3D%,3%DL
M($$@5T]21"!!0D]55"!42$4@355324,N("#/4DE'24Y!3$Q9(,D@5T%3($=/
M24Y'(%1/#4-/3E-44E5#5"!!(%-%4DE%4R!/1B!#2$]21%,@5TA)0T@@R2!#
M3U5,1"!-3T153$%412!"1517145.($E.#4$@1D%)4DQ9($9,15A)0DQ%(%=!
M62X@(,D@5T%3(%1(14X@1T])3D<@5$\@0E)%04L@55`@5$A%($-(3U)$4PU)
M3B!!($Y)0T4@5T%9($%.1"!-3U9%($)%5%=%14X@5$A%32!204Y$3TU,62X@
M(,)55"!42$5.($E4($]#0U52140-5$\@344@5$A!5"#)($%,4D5!1%D@2TY%
M5R!!(%!)14-%($]&($U54TE#(%=(24-((%=!4R!!(%-%4DE%4R!/1@U"4D]+
M14X@0TA/4D13($%.1"!33U5.1$5$($E.1DE.251%3%D@34]212!#3T],(%1(
M04X@04Y95$A)3D<@R0U705,@1T])3D<@5$\@04-#241%3E1!3$Q9(%=2251%
M+"!33R#)(%53140@250@24Y35$5!1"X@(,5614X@0D545$52+`U42$59($%2
M12!&3U52+4Y/5$4@(D-(3U)$4R(L($)23TM%3B!)3E1/($9/55(@1U)/55!3
M($]&($9/55(@3D]415,-14%#2"`M+2!43T\@1T]/1"!43R!005-3(%50+B`@
MSD]415,@05)%($Q/3TM%1"!54"!)3B!!($9215%514Y#60U404),12P@5$A5
M4R!/3B!-62#0P<P@-C0@5$A%($U54TE#($=%5%,@5%)!3E-03U-%1"!43R!!
M($1)1D9%4D5.5`U+15D@*$E.($%$1$E424].(%1/(%!,05E)3D<@050@5$A%
M(%=23TY'(%-0145$(#HI+@T`R2!$3R!.3U0@3D5#15-305))3%D@4D5#3TU-
M14Y$(%5324Y'(%1(12!23U5424Y%($%3($$@34]$14P-1D]2($1/24Y'(,G2
MT2!)3E1%4E)54%13("TM(,D@2$%$($U!3ED@4%)/0DQ%35,@5TE42"`BR=+1
M($Q/0TLB+"!72$5210U!3B#)TM$@25,@0T].5$E.54]54TQ9($Q!5$-(140L
M($%.1"!#3TY315%514Y43%D@25,@0T].4U1!3E1,60U254Y.24Y'(%1(12!2
M3U5424Y%+"!!3D0@R2!35$E,3"!$3R!.3U0@54Y$15)35$%.1"!72$%4($E3
M($A!4%!%3DE.1RP-3D]2($1/(,D@2$%612!!(%-/3%5424].+@T-S45-3U)9
M(,U!4`TM+2TM+2TM+2TM#0`D,,8P,"TD,,;&Q@#35$%25$E.1R!324Y%*U!2
M3TI%0U1)3TX@5$%"3$4-`"0Q,#`P+20R,C4W`,-/1$4-`"0S,#`P+20T,#`P
M`,-(05)!0U1%4B!3150-`"0V,#`P+23#,,;&`--)3D4L($-/4TE.12P@04Y$
M(%!23TI%0U1)3TX@5$%"3$53#0`DPS$P,"TDP\;&Q@#-25-#+B!605))04),
M15,@04Y$(%1!0DQ%4PT-PT].5$5.5%,@3T8@1$E--"Y,3E@-+2TM+2TM+2T-
M`$1)330``--50DU)5%1%1"!%3E1262!&3U(@-$L@1$5-3R!#3TY415-4#0!$
M24TT+E1%6%0`U$A)4R!&24Q%+"!)3B#0Q=33P\G)($9/4DU!5`T`1$E--%)%
M041-12U254Y-12#/0E9)3U53#0!$24TT+DY!3453`,Q)3DM%4B!.04U%($9)
M3$4@5$\@55-%(%=)5$@@S4523$E.(#$R."`-`$U!24XT+E,``,U!24X@0T]$
M12!&3U(@1$E--`T`3T)*14-44RY3`,-/1$4@5$\@1$5&24Y%+U-%5"!54"!/
M0DI%0U13#0!'4D%02$E#4RY3`-9!4DE/55,@1U)!4$A)0U,@4D]55$E.15,@
M*$Q)3D53+"!&24Q,4RP@151#+BD-`$U54TE#+E,``,E.250@04Y$($U!24X@
2R=+1($U54TE#(%)/551)3D4-
`
end

@(A)gfxcode: Binary for 3-D Dungeon Crawls
    
begin 644 dungeon.sda
M`0@-"`T`GB@R,#8S*0```*D`C2#0J0"-(="I\84OJ0Z%,*4!*?Z%`:D`C98#
MJ?&%+ZD.A3`@M`@LE@,0#"#`_R20,&"B""#)_R"J"K!6+(,#,`H@TO\DD#!*
M3$@((,S_+)8#,!+.E@.I`(7&(.3_R0#P^<D#\"VI""##_ZG^C8(#($(,K6T#
MS74#T!"M;@/-=@/0"*E/(,P)J4LLJ3\@S`E,-`@@S/^I""##_Z4!"0&%`4QT
MI*(OJ0"=7`/*$/JI,(T``:DZC0$!($(,R0+0U.@@0@R=;`/HX`G0]2R6`Q`#
M('<*($(,R1&PN:H8:02%MZEDC6(,J3:--`NI#(UC#*D+C34+H`"I`(6[J0&%
MO"!"#)D"`2#,"<C*T/.I+)D"`2#,"<BM=`.9`@$@S`FI("#,":D(JJ`!A;B&
MNH2Y($(,($(,($(,(-<)K&P#P`70!:G_C7$#P`+P#<`$\`G``=`#($(,&&"@
M`)B9`,R9`,V9`,Z9`,O(T/&JJ0"->P.-?`.-?0.@!2`5#&J(T/EJ:FJ-B@/)
M&;`TR0#P*:@@%0PN?@,N?P,N@`.(T/&H;H`#;G\#;GX#+GL#+GP#+GT#B-#K
M(.X)Z-"RSGH#&&`LE@,P`6!,TO\X8*UL`\D&L/>M=`/)4/`(R5/P!,E5T.A@
MCA0*H`"MB@/,>@/0'YD`RZU[`YD`S*U\`YD`S:U]`YD`SNYZ`Z(!BID`SV#9
M`,N0`\C0U(PL"J#^(#@*B,``T/@@.`JMB@-,^PFY`,N9`<NY`,^9`<^Y`,R9
M`<RY`,V9`<VY`,Z9`<Y@4U1/TE!!0\M3455%1=I#4E5.0\A3455!4\A#4E5.
M0\@@9`X-54XM`*``KFP#RC`+N5<*,`/(T/C(T/*Y5PI(*7\@S`G(:!#S(&0.
M24Y'+BXN`&".^`J,^@H@_PHL@P,P/JZ$`_`&('`+3/,*KFP#\!W@`?`9X`7P
M!.`#T`H@80RP':YL`Y`*((<+L!20`R!"#.``\`?@`O`#(#,+(!X+&*(`H``L
M@P-@KF\#T!:N<`/0#JYQ`]`&J?^-@P-@SG$#SG`#SF\#8$CNA0--A0,8;74#
MC74#D`/N=@-H8$PV"\G^\`%@J4J--`NI"XTU"VAH3,,*C8<#J5J--`NI"XTU
M"TQ%"XQX"Z!PC#0+H`N,-0NLAP.,A`.-AP/.A`/P`M`,H`"I-HTT"ZD+C34+
MK8<#8*D`C8@#C=(+C88#C8L#[HL#C7<#C7@#C7D#C/L+COD+(!4,D`RLA@.M
MBP,9=P.9=P,.BP.0!BZ+`^Z&`^Z(`ZV(`\D8D`0X3/@+H`#9`,OP!)#-L/&^
M`,SL=P/0&;X`S>QX`]`1O@#.['D#T`FY`,\8H@"@`&#(\,V,T@O,>@.0R_#)
M3,T+`0($"!`@0(",/0R-/PRL@0/0!B!"#(V)`ZV)`SD-#-`"&"0X",C`")`"
MH`",@0.@`*D`*&",7PRL@@/`_I`,&)AE+X4OD`+F,*``L2_(C((#H`!@3&0,
M(+P-(*4-(#4-C5X#C6L#C6`#K5T#C5\#J8N-8@RI#(UC#*UK`QA@(#4-.(UA
M`^UE`ZU=`XUB`^UF`Y`GK6`#C6L#((P-K5X#C5P#C6D#K5\#C5T#C6H#K64#
MC6$#K68#C6(#K5T#\#"M7`.%%*U=`PGPA14@+@X@C`VE%2D/"="%%2`N#HU<
M`Z45*0\)X(45("X.C5T#T,NI$8UB#*D-C6,,K5P#C6L#C6`#&&`@EPVP`6"M
M7@.-:0.M7P.-:@,@V0VM80.-7@.M8@.-7P-,BPRI`(U<`ZQH`R`5#"Y<`RY=
M`XC0]*U<`]`XK5T#R0'0,6AHJ0"-;P.-<`.-<0.I_XV#`ZUL`\D%T!:@$"`5
M#"YM`RYN`XC0]*`H(!4,B-#Z.&"M7`-,.PZ@`)']YOW0`N;^8*7]R3S0$:7^
MR0/0"SA@J3R%_:D#A?Y@I?W0`L;^QOVB`*']&&"I`J`!C64#C&8#C&<#J?Z@
M`(UC`XQD`ZD)C6@#8*UF`\D0D`%@A16M90.%%*QJ`ZG@(`D.K&D#J=`@"0ZL
M:P.I\"`)#NYE`]`#[F8#8(T1#J45*0\)`(45F*``I@%XA`&1%(8!6&"E_"D/
M"?"%%:7[A12@`*8!>(0!L12&`5A@2*UH`\D,L!^M8P/0`\YD`\YC`ZUC`PUD
M`]`,[F@##F<#K6<#C60#:&!HC7`.:(UQ#B"`#JW___`&(,P)3&P.((`.;'`.
M[G`.T`/N<0Y@````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M```````````````````````````````"`TV0.`$``0!3!$Y%5S7^+!&2P<E'
M`-8?8`1<2)"DC"`,`H((.!,E0PP!$Z(,*1$F28XX`A2<F3!$B8`923)$@X-%
M@(`E.<I$*5&)@(`[>TZL$1`)0QH!=9)42"!@PYX+9P3DHU$B3YXLV#0H0A%%
MP)X22>)Q"9))EH)H6.XIZC"JPH%J%O;DPE%!Z0](,*`(6!1$`(DA.YX(6#/M
M285\5\Y<&'+B$CTF)\9QB:.KX`]R54YC07;J`HD35W;H![+G@*!?!$+D,X]-
MXP\LVF`@$!"F1)0@%:)$\A<L;-"28;26C1A$0`TK.HS!TAA"A\`L04KY+)$@
M3Z0^V`````(#TRB&!@`&`%`'4%E204U)1/XA``!!@`8!"H`\3!BP8?0'&(!2
M@"C]`?0G%*!*`&(16!"+T()0_VIA6$`)'F2<Q`H`J$0@$P"6=%C384N'780%
MCSH=@O``+!T6$Q:\J@2H3)<*!+K\JP2E")\"<`CTE@:`P&KILB0J5*I2K88B
M2K4KQZA71A&=1G6K-V/6LDEK>&(3JX5F`20$L5U5@A:+R()*,&(1]]<FU*]*
M@T(C^U-I2!%4!$K`(G#BWX-ODR0]@#))R`-XDR0\@+/@;*RB6),\V"4#&:Q*
M(XH(303KP2($,$`!0@:*`#I`D%#"HD,`!CQ`("#!`4<`%CP0J#LA'X$"`B`X
MT)`15ITZ?:8'<B9)>8!MDK0'S"9I>`!NDJP',&1`@HP`$F`T,H[\D-$$0JEI
MP#`)H`],`N2#(BR`127`+(!&)4`L@"2&Q?[SP$M`/'`3*`^<L,"=!-8"&RI$
M8<`1-J**$(L7L,0283)NP$I%([\@`(P,(=$#&R&58$853700Q!!3++'%D6!<
MUE$`9LRQ^@0DE3`12T9<I,0(8#*Q^1Q\2JE$9!J(87@;&&#(,`L4,E!FCC=0
M5&(:7[1Q4H`)!&@#S0*@%"`%`4G`4(`9!'3DE@=R$/"4+S(0``0,"V!3`!,$
M<`%-`2P0D%X26!"PF1M04D$`?DD`08!/26!`@'*^X$!`LX]Q1!EU#HE34&&N
MN5-093[E%EAKI8514$91Q91<0DG%ET9!$66Q4$[^Y>=444F%5)YG5=58#V/V
M"214:2UYJ%I'7G7ED7.]Q3=0;!DE-EYJ2:4T64Z5S192<4V5Y9M_U;%;#VL;
M.1;23GYY5U%`0;W46TIG77591F/%=]=RLY7VG'-+JO811\P\`,$D`3P`RB3@
M8V)``2`4`8(,\C&",^GDP(XQUCCC30`T!L3B"W!-%`$TS:RS@S7G--.-/>[X
M/,Q,+#ZS`T`1`',O00$82R_`[Y@+S3@A!8!1E,D4%("WUDJKS+#(8OC-#@1%
M0,R]*040;+'!]`O/-`O^LRN;^13$[D(!1!3M/NW*.ZP&_$2@3`K!.J"MOPXT
MAZT#W5'[;[@C#Q#/,AL%P,QY>(S`'1LC"&N=3<S6(&VWQ^F0G+4.9.=1`,6%
M4UP\.U27G7C@(F!A0.T2+`!.P:&J3D'M;/=2<.1<4]QUSWW'/`CLP\'<=_P3
MP&*PX$8[+3[[I<OLL=PM[]ZVZAUW;?KHH4"<3>TNCQZYWZ<O4G#,EP]]\]*^
MT[QVP,=O[G6F_>QI=E?:#Y7@1@$"$`L6P"(&S*P'``J@A%@P!!J,@$41@(F!
M7$N@`IWXQS\R@T=VO.,N4+@+*J:`@`L4P!^=`(`:,A$`?D0``>^0P1`@T0D!
M`",6-H#%1#C##5O`HA<LX88]8'$1D7##08P8"&[P0X@%O","!N!`*7YQ"0"&
MH931T60446``C*C#,EKXC0Y18A)]_$DN1OB-9<P8'4M&BQ"AB$`8PDEE:30B
M'`^@`@.0,0EL/(`4N1@'*"XH"""<(0('),8E$``-#EPB(*$`362BD0$)R.`5
ML+!`!610Y=6D(R*9I$(G'`#'FZ1B`A=8P`M3F(9O^Z(2^@C%)RH!@E!\H1+L
M",5W.A"*'Q0`'8WX1"*^PXQ/E.(S?2C%5P9CA$]8@B)MF8LEOD*!_0R3!ID)
M"S.^L(!"``*`8#`!`"X`#`200P6BT(`*E"$,)8A"%'(0ACQDH)2'/.4%XE""
M(,0@"0V(0!`J$`0S1"`+02A`&2J0AQ(T\YO_W$$00I"!*/[8"QX@``F@0`8R
M"+@.3!``&J#`!!\`"```````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``(#<^KJ`P`"`%`*5$585%-#4D5%3OXA``"`,/`'AB&C(#"",^;`481(!0IU
MZ+1@T85+QHS]P4`0DQ-G4:(5*=:EVY)E5ZYCQH[+F`M7,6*5*-6CUXI5-VY3
MQXG)C;LX\<J4Z]-OS;H[][G3\N`I0:(*E08,VK#IP6.IF+QX2Y*L2K4AP[9L
M>_)<@S$?OE*DJE%KQ*@=NUZ\-N/'7YIT=>J-&;=GWYOW9@($RI"I0:,)DPX<
M^O#93)!@6;(U:39EVI%C7[Z;"1$J1ZX6K6;,.G'JQV\S8<+ER=>FW9QY9\[]
M`?3GGS&3V`R9[@C&U!]L`DR8`($*#CA0\.`0,-T'EX`_H#N`[H-#(`BRT/3I
M`P8!$!)`P%"`0O('\C88R/0?T`<!X19@<$#H@P4.."9&E/X@$J#O#[`_"/CC
M7T#^^^N_F##YZ7=@`0027#!BPAQ4\`$&$UK`8L(2<FBA!AQZX!C#&G9XX08:
M7A@8PQ9QH)$&'X8=;F`J````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M```````````````````"`^?JZ@,``0!0"D-/3%)30U)%14[^(0``;/@#!\P?
M+(#!P(`$!M`?#,`A_84.&SYBJ##A(D2*$BMZY)C1XB2,'2-JT@3)X\=-E"Q>
MXE09@H<+&AP`<&#!0`#."3P;\'R@@!7(YH]R/HB`\P$N5:9T*7_E*@+V!Z1$
MA7*5:M6H4LU?R?+`:S>L7+5ZP\:5RS>K7Z=1NU9-ZS5HU;*V/Y3``P``````
M````````````````````````````````````````````````````````````
M``````````````````````````````````````````````````````````(#
MG/F"'@`+`%`*1U)!1DE81$%40?XA``!PX&'&CAT#1G@`&-?LV:%-F4;]`Q8K
M5[),N8+]&Y;H#[!\B8;]FW?NV:9<N8D<FY0O6+Y)Q_X]NS1O7F#6V#(3R)1H
MTC=\^9)%RI0IP[]Q?\"<^W?L#ZAGX?[AIY`M7;#,2OZ`R)<KT#]_)9)J:?/O
M7Z$`.?'T%-<<3Z;91)!%RI693KY_$Q)URC3HTV?D&+*%1\\IWK!'F8F<"E3N
MW+E3S_YAEI-IQ#_<>'+-3O!?3EM#_D4,.S=<9-(LIQXEF_<O$*=GY^;EU#-<
MSGPBSV[-"S8O%W#L<IX3^5\BL%9I]^8%"##OWA_(N4!*'YD+6&8Y_T4`R+Q=
MP[E!^89]"B[=98-YF3IS&C8N0Z8!_SXWW/@,.,G$)/&>-QT)8*EXCG!.H''\
M`1X@\P$XYH)QFO+CDXVZ,TZR=C(XPCCAQC&L'N,4\\PQX\3;0B>/'/-(IT3D
M*T(D`_I9*RV/?$8N-K'2*BP1P33Z))[2EA(ICI%R$LE@9+;:[S+G:KD2.(\A
M2,)CD-8&0+RDP1,O9_"N\`>$0,@``QYDF,$%`#\X880-9ACA`P`\V(F'`79"
MP0`&,)!A)"0`X,"&`3X8P`8.`,"`!@,,^!6<-6;9"PH;(!Q@@`UNF&&&N4!*
M@I&'<L#@`0`'N6&"!3Z8E:V6$/@!0`#:V*J%)```H(<_QN(AG(YXF,$D%#>X
M8819/A@``#MVB&$&'V"`99P%)GAD7C@.\`"'F5!@X8<&&&"`!0P`G"F'&=P`
M<"0>1C"U!H!R2%9!0(GP@"%(A9QU`!9PV,```'Z,`0,&#!A7*AX8FO;-``,%
M]U]P6J4!`#!\N,$&&P#XP(4[W>QRAPY\```$.-#@P@<->`!`-/R(B(@'``8T
ML,'-V'#@`ATX4TX-!Z[0@P]LHP+!@@T9/'!`@$#8U)(?`&#`@4<K\%0*!SK`
M3(-#I?`@!APXP"$F%`8EX@9_(SWG#1Q@*V6-4]XE"(4/<H`!TW?AN&73_!;P
MK0@/?]7LT/&..Q((``((L,`"+[SPRV]:'0.J/OZD[K'7/FQB21E9:F'%%J^!
M4HFJ6OSRQBI65"E))9:D4D45E92C+A[[^.*K)+_LL\\[[[SRVR\@_*)Z-I8!
MG,KF&>+=`O!)Y"IW/FIG`DSNI?Q>>AZ55%)*&:K\XXLNI6J=?2OO5Z*/):N7
M`<HO^90_119:;+&U'Z^HDD8:6FBQ*1ZOK+'V!598*7DF!+OON?>^^Z?-._IJ
M48XFMAQF;ZS`DNL`QA9,J85\V@4"(-B%*[7PAE?L0Q^^2*4=-/&*5^0C'^F>
M0AITX8]7K&(3FL3S$ONQ"G.4.A^64'49@-UH?W>C#%JPPAK>?`Q7G_G"Q[[Q
M75C]"#!40=7)$8H(_H#F3`CXU5XX@0ETL>L`O.$-;LA$:;!A:@\H8`$K,'&.
M#X,$7^2B#&4N12I,?>L+4L`4I[&,@)\B'C$G1S*.$8ZS,R$!```"$.``!S8P
MX0KW>`,4X$`')BRA%FSDP@Q:48:F2Z$&3:0'%Z4H1SGT\0Y?N"$+69[P$]S@
M!DUH)QFE*(TK%.,>UXA'$G^@B%=\``Y\X,,?_O&.+_"!#DN88=\)``DXRM42
M4H#`G7C^"P)\H:86F$(?^M`-9#+P"GVHPSP0`(85+*/L.V0A#:[X#6WHX0]5
M^`L`ZMB$%JI@E9;,^BREQ(,5LE"*2J0C/WD1RA7T4Y*RB,8M$LZ4=MK2F.:T
MIB%-,'>+@^R728##"JK(0ID7DT[)K&<2(/!'/M11B2J74A+^SG,<5HF'=VKE
M,.NP=+57X:]?`+NK,/`40-%@7DSBP<VE\"\V0'/A7/C"%5J.A67Q8`4M9'D&
MEE#W9H[9#W]7N297/D5:2O&&K0JA+*DHSRNJ8$Z\?"0%?WZI)L#1CS>!XA_E
M,,T`0&L(M1HYJ*8UKV6M\8_^VE(+_?C'6ZTD6:>:U:5N]0!('>N5`0#7M;XU
M8G]=:HM^2=8=;\RM0?7KEJJX5Q<`T*86ZE&-3%3CDUKXPQ<T\85ZV*.^&<U"
M?7.;CR_\`1!_+6HIJEM"O.:U`'\`:BWJ8=TLXK6\;:UL4S.@B>JFM[K-K0((
M_IJ):MBW&]7MZSB^V@7@=C2K+0#N:&=:UNFNM:]M3<IO4ZI?PQK7N1:-X49/
M:L^-!M:G9_7O-4#JVML&U+G!-.U9P_O0R$;7JG'H;P+>NI<:OS0-(*UO3N=;
MT+K6MWP0K6I-ZSK9QFZWI6TM:6>'NM36KG>M`QT::$<ZUXEF=:L9(^S",+J,
MZJX.>]#=ZGIW\YWJ2`$`%,1#WU@!C#04$0_:XP8P/L<Q=N*-:SSCF\#8QC$1
M`(^7>!,'\(3&.;[)C'^`^8E3]R.-*.+A=%H`AOT$)SG=Z1!O^I.8\(RF.]/)
MSW#:LYS!A*<ZU0#:QWX.D"1^X0Y]Y`<0+EC!)CZ#32WHNU*@^'0"P((<*(`O
M+/,NEI8_L>\4)XR?DHNDY,+L#S#DSVOQE%PV]GU,N>8`/,B+`9C]`;K\%>`W
MF%'VH2NQB]W8^<%/39FS/QS@[Z1%?<%SALK\7>P?:D\VO?CUSR*@OQIJ+6SA
MRX9^,)=.K2`3#_F+<8-K,[_@5:^VBMA:PYK"OY:I3STUD0Y@Y*(0I:A$+=C0
MCU9T8+(!@&R9^/3;C@^#'84U1W!J^8G+&)L<SP+$/X$)3B@P80[[1"4FRGB%
M/>PS$^RD4<LUQ,-;U:.<P'S.\0#=3UT!TI26$P#UD.GQ86+Q6J+I;:@21P4(
MWN"_H2-LGI*NR0PE.PVP(![N--#/,4"."N`SG'%>WLG`Z8/IZJJ[&NYP/_9Q
M4Y/_@A2H`,`%^B$E"7_LXK5&`#]"E*EURA)=;^.NJ1$@SA_$$I;8/].35HD`
M=H0<`^QFTKIS$"_L'X">,XAX/T)Q!%J9BQRIYO?%^Z7Q?ME\]D"@/1)8+^H>
M(JQCU;>]P#K4?5L"`&.]]^C'^M,I]YPZ]^'Y+@+H<WK=X*=@#>I8?V8C:M:H
MET/]*8^%^?.Q5@*`8'VJ31E(,Y#=[%;X)&69"P-T4.H?@3D/I=!Q2EHDB55L
M+3=@[V(N(%R'?:QC,QPTQ>\G/@.=,#E8`"Z'*JXHB7^HH@M?^,*5D]TP+'3]
MX5=7\#,`JED+Z$/UNO@//("#/^B!JA(`J"4"*/@#/S>1EB5R-Z@"/^+),4#`
MOK(!*VA*.O`'HB6Z14`K#JA"G:6"*E1#/_1#G3^`OY9`M3_`OO<:L*;KI('K
MJ);(DB=[OE9HB]:@EB<C'JQKD^[`7W![5_!HKU%[?H`$C]8887`!&*P;68B!
M*J0;M59Z/J1[2W`'KZ'`G_>*M-F;HHE:&*@#)>)!;Q@"L*`!,+S[$FS!*KR'
M21@C'J3".RS#.KR2?)B';9B$`ZA"%72),%<[CCAHLFF:K2/`:NA`&A>#NJ2!
M.NR#!>*!7\0",*C!/HS#.NB#/!='0L0C7B2%%UR+,%=&9B2`6OC;"6=2K^K:
MKS%IDI0*-VCQ1-3PN=B+$/Q%.1!$):A&`U]$/91&K1U%N^Y'.4!P/D]&3S1&
M=_3:3Y387Y0!`#_PA=SP0@RI>LR!5BS$E#%%"QU'FXC$O,K+%S_%L@K&:NQY
M;[1&O_W'KI2*:QS&KK9"*0(`````````````````````````````````````
M````````````````````````````````````````````````````````````
M```"`7T<2@```0!0"D=204985$%"3$7^(0#^-`-_.S\\_SR_/7\^/S__/[]`
M?T$_0O]"OT-_1#]%_T6_1G]'/TC_2+])?TH_2_]+OTQ_33]._TZ_3W]0/U'^
M#```````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````````````````````````(#^F7:!``#`%`*,T1-
M05!35$]26?XA```,`!`0)%C0$,%#A13@#V@PX/X``P`>)%*4"-$BAXT=/42\
M6,'#10L?-4Z$>/Y`ADX8/V[XL%&3)8J;+&76&&$SI$V5*%/";)ES)4F4.EW:
MT/X*)0X9$6R>#-D+Y,Q9*E2A-#621XQ=O43R,'GBUJT3Q5_Y^*4K)DW3L%U)
MW``0((```B`X*``A@T70'0@"8-U[0I89#@$@F`B@@`?2'R@8,"#!0Y%2"@$T
MH)`@3P*'`",Z#0I0@$39`Q+X82@`H00*'.1<"&``RD0!&"4DH`"A`$4`N!LD
M@(!W2T(!8@T8"`H5``8/%FP__9V@@``)&<'5O@B```4+?@!X2*-`[($`%1($
M\)#W@`>&`#((\-#7`T?P`7I?S&C[`X$*#CB@P)L+L`.@`^,ZR/SI#R2P-KH#
MJ!Z`ZA^@FP##!@MU8'OD!@B6`P6H0Q`X;R1`X3MKIP&@FF`X,#Z:"SB`P-KC
MD\LZ`QB5R_9$8H)KD$$`NBL@@P(,H""#"3RH\24.C'%@@!`^*-#I"PS(P$/C
M9L)F`).:\R!`$"\(0#KDF3T0A`BDT68E&:7^D40(H-NN`Z=[CG8#[H#=^H<#
M?&XQA`$!<"8#"I=']@1LI]WVV@\!!EXE[)`Y$'A32(3!)^%J`:"X'DS",88`
M"'44`.EM8DF`;I"^QH(">6#6`Y8JH*``G")@@!IO@!WV&.V6Y>G&9KT]=AEE
MO(DFEPF%7="*Y!V0@`,')02@`N0\D,!`UV)L*8281*;``04\F!!"`*W1QH8!
M0%/1QYAC@B"!6GR`(,/5%`7\`>$^2)6!!`A_KED,)7]`0T`!*)X!QU^Z@X`$
M7,*`-094_[Y``73S(#4#!"@4``H%&%!F#D&7@)H&!;#6``<J!6`#(```````
M````````````````````````````````````````````````````````````
<````````````````````````````````````````
`
end

=========================================================================
magazines/chacking13.txt · Last modified: 2015-04-17 04:34 by 127.0.0.1