summaryrefslogtreecommitdiff
path: root/orig/pq
diff options
context:
space:
mode:
Diffstat (limited to 'orig/pq')
-rw-r--r--orig/pq/CHANGELOG50
-rw-r--r--orig/pq/Config.dcubin0 -> 4426 bytes
-rwxr-xr-xorig/pq/Config.ddpbin0 -> 51 bytes
-rwxr-xr-xorig/pq/Config.dfm933
-rwxr-xr-xorig/pq/Config.pas57
-rw-r--r--orig/pq/DelphiZLib.zipbin0 -> 121363 bytes
-rw-r--r--orig/pq/Front.dcubin0 -> 4331 bytes
-rw-r--r--orig/pq/Front.ddpbin0 -> 51 bytes
-rw-r--r--orig/pq/Front.dfm4507
-rw-r--r--orig/pq/Front.pas47
-rw-r--r--orig/pq/HTTPGet.pas448
-rw-r--r--orig/pq/INFO13
-rw-r--r--orig/pq/Info.dcubin0 -> 3647 bytes
-rw-r--r--orig/pq/Info.dfm101
-rw-r--r--orig/pq/Info.pas31
-rw-r--r--orig/pq/Login.dcubin0 -> 5078 bytes
-rw-r--r--orig/pq/Login.dfm166
-rw-r--r--orig/pq/Login.pas60
-rw-r--r--orig/pq/Main.dcubin0 -> 63734 bytes
-rwxr-xr-xorig/pq/Main.ddpbin0 -> 51 bytes
-rwxr-xr-xorig/pq/Main.dfm692
-rwxr-xr-xorig/pq/Main.pas1711
-rw-r--r--orig/pq/NewGuy.dcubin0 -> 12241 bytes
-rwxr-xr-xorig/pq/NewGuy.ddpbin0 -> 51 bytes
-rwxr-xr-xorig/pq/NewGuy.dfm376
-rwxr-xr-xorig/pq/NewGuy.pas267
-rw-r--r--orig/pq/README39
-rw-r--r--orig/pq/SelServ.dcubin0 -> 9320 bytes
-rw-r--r--orig/pq/SelServ.ddpbin0 -> 51 bytes
-rw-r--r--orig/pq/SelServ.dfm217
-rw-r--r--orig/pq/SelServ.pas184
-rw-r--r--orig/pq/Web.dcubin0 -> 2152 bytes
-rw-r--r--orig/pq/Web.pas87
-rw-r--r--orig/pq/ZLIBEX.PAS777
-rw-r--r--orig/pq/ZLIBEX.dcubin0 -> 48656 bytes
-rw-r--r--orig/pq/charsheet.txt39
-rw-r--r--orig/pq/crossed_swords_sm.gifbin0 -> 1983 bytes
-rw-r--r--orig/pq/dist/changes.txt22
-rw-r--r--orig/pq/dist/license.txt20
-rw-r--r--orig/pq/dist/pq.html129
-rw-r--r--orig/pq/dist/pq6-2beta1.zipbin0 -> 320122 bytes
-rw-r--r--orig/pq/pq.cfg35
-rw-r--r--orig/pq/pq.dof87
-rw-r--r--orig/pq/pq.dpr25
-rwxr-xr-xorig/pq/pq.exebin0 -> 852992 bytes
-rw-r--r--orig/pq/pq.resbin0 -> 3056 bytes
-rw-r--r--orig/pq/saves/Avtrep.pq3bin0 -> 3753 bytes
-rw-r--r--orig/pq/saves/Chillmitts [Oobag].log9
-rw-r--r--orig/pq/saves/Chillmitts [Oobag].pqbin0 -> 2497 bytes
-rw-r--r--orig/pq/saves/Chillmitts [Oobag].sheet45
-rw-r--r--orig/pq/saves/Cokie [Oobag].log266
-rw-r--r--orig/pq/saves/Cokie [Oobag].pqbin0 -> 5374 bytes
-rw-r--r--orig/pq/saves/Cokie [Oobag].sheet37
-rw-r--r--orig/pq/saves/Frogrox [Oobag].pqbin0 -> 2117 bytes
-rw-r--r--orig/pq/saves/Kridfrav.pq3bin0 -> 2770 bytes
-rw-r--r--orig/pq/saves/Moxwhik.pq3bin0 -> 2113 bytes
-rw-r--r--orig/pq/saves/Oupret.pq3bin0 -> 1945 bytes
-rw-r--r--orig/pq/saves/Rotdrut.pq3bin0 -> 2059 bytes
-rw-r--r--orig/pq/saves/Utzin.pq3bin0 -> 3776 bytes
-rw-r--r--orig/pq/saves/Whakcrood [Spoltog].pqbin0 -> 2137 bytes
-rw-r--r--orig/pq/saves/Ziedkrad.pq3bin0 -> 3726 bytes
-rw-r--r--orig/pq/screenshots.zipbin0 -> 315335 bytes
-rw-r--r--orig/pq/swords.gifbin0 -> 11356 bytes
63 files changed, 11477 insertions, 0 deletions
diff --git a/orig/pq/CHANGELOG b/orig/pq/CHANGELOG
new file mode 100644
index 0000000..fc07b93
--- /dev/null
+++ b/orig/pq/CHANGELOG
@@ -0,0 +1,50 @@
+==================================================
+Changes observed, forensically, from v6.2 to v6.3:
+==================================================
+
+New items, monsters and so forth:
+
+Spells:
+ Shoelaces
+ History Lesson
+Weapon:
+ Kreen
+Specials:
+ Vulpeculum
+Boring items:
+ writ
+Monster:
+ Chromatic Dragon drops scales rather than mineral water
+ Hogbird
+Races:
+ Hob-Hobbit replaces Greater Gnome (candidates: Gobhobbit, Hobrabbit)
+Classes:
+ Vermineer replaces Toungeblade
+ Jungle Clown replaces Lowling
+
+Config.*:
+NewGuy.*:
+- Races & Classes moved into Config form from code in NewGuy
+
+Front.*
+- Version bumped
+- File extension bumped
+
+Main.dfm
+- Moves and resizes
+
+Main.pas
+- Cheats enabled for now
+- HTTP rev number bumped
+- Save ext changed
+- Interplot cinematics between acts (NamedMonster & ImpressiveGuy)
+- Execute named RPCs now and then ("Sir Roger the Elf")
+- New leveling schedule(!)
+- WinItem & WinEquip at end of each act
+
+Info.*:
+Login.*:
+SelServ.*:
+Web.*:
+- none
+
diff --git a/orig/pq/Config.dcu b/orig/pq/Config.dcu
new file mode 100644
index 0000000..f7325d4
--- /dev/null
+++ b/orig/pq/Config.dcu
Binary files differ
diff --git a/orig/pq/Config.ddp b/orig/pq/Config.ddp
new file mode 100755
index 0000000..cdc0ee8
--- /dev/null
+++ b/orig/pq/Config.ddp
Binary files differ
diff --git a/orig/pq/Config.dfm b/orig/pq/Config.dfm
new file mode 100755
index 0000000..2a67ec0
--- /dev/null
+++ b/orig/pq/Config.dfm
@@ -0,0 +1,933 @@
+object K: TK
+ Left = 350
+ Top = 121
+ Width = 800
+ Height = 567
+ Caption = 'K'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ OldCreateOrder = False
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Label1: TLabel
+ Left = 8
+ Top = 116
+ Width = 28
+ Height = 13
+ Caption = 'Spells'
+ end
+ object Label2: TLabel
+ Left = 168
+ Top = 4
+ Width = 64
+ Height = 13
+ Caption = 'Offense Attrib'
+ end
+ object Label3: TLabel
+ Left = 280
+ Top = 228
+ Width = 70
+ Height = 13
+ Caption = 'Defense Atrtrib'
+ end
+ object Label4: TLabel
+ Left = 140
+ Top = 228
+ Width = 34
+ Height = 13
+ Caption = 'Shields'
+ end
+ object Label5: TLabel
+ Left = 8
+ Top = 228
+ Width = 27
+ Height = 13
+ Caption = 'Armor'
+ end
+ object Label6: TLabel
+ Left = 8
+ Top = 4
+ Width = 41
+ Height = 13
+ Caption = 'Weapon'
+ end
+ object Label7: TLabel
+ Left = 164
+ Top = 428
+ Width = 40
+ Height = 13
+ Caption = 'Speicals'
+ end
+ object Label8: TLabel
+ Left = 8
+ Top = 428
+ Width = 47
+ Height = 13
+ Caption = 'Item Attrib'
+ end
+ object Label9: TLabel
+ Left = 320
+ Top = 428
+ Width = 34
+ Height = 13
+ Caption = 'Item Of'
+ end
+ object Label10: TLabel
+ Left = 172
+ Top = 116
+ Width = 58
+ Height = 13
+ Caption = 'Boring Items'
+ end
+ object Label11: TLabel
+ Left = 12
+ Top = 344
+ Width = 125
+ Height = 13
+ Caption = 'Monsters (name level item)'
+ end
+ object Label12: TLabel
+ Left = 236
+ Top = 344
+ Width = 162
+ Height = 13
+ Caption = 'Monster mods (adjustment pattern)'
+ end
+ object Label13: TLabel
+ Left = 324
+ Top = 8
+ Width = 56
+ Height = 13
+ Caption = 'OffenseBad'
+ end
+ object Label14: TLabel
+ Left = 404
+ Top = 232
+ Width = 59
+ Height = 13
+ Caption = 'DefenseBad'
+ end
+ object Label15: TLabel
+ Left = 480
+ Top = 8
+ Width = 26
+ Height = 13
+ Caption = 'Race'
+ end
+ object Label16: TLabel
+ Left = 480
+ Top = 120
+ Width = 25
+ Height = 13
+ Caption = 'Class'
+ end
+ object Label17: TLabel
+ Left = 328
+ Top = 120
+ Width = 25
+ Height = 13
+ Caption = 'Titles'
+ end
+ object Label18: TLabel
+ Left = 476
+ Top = 428
+ Width = 74
+ Height = 13
+ Caption = 'Impressive titles'
+ end
+ object Spells: TMemo
+ Left = 8
+ Top = 132
+ Width = 153
+ Height = 89
+ Lines.Strings = (
+ 'Slime Finger'
+ 'Rabbit Punch'
+ 'Hastiness'
+ 'Good Move'
+ 'Sadness'
+ 'Seasick'
+ 'Gyp'
+ 'Shoelaces'
+ 'Innoculate'
+ 'Cone of Annoyance'
+ 'Magnetic Orb'
+ 'Invisible Hands'
+ 'Revolting Cloud'
+ 'Aqueous Humor'
+ 'Spectral Miasma'
+ 'Clever Fellow'
+ 'Lockjaw'
+ 'History Lesson'
+ 'Hydrophobia'
+ 'Big Sister'
+ 'Cone of Paste'
+ 'Mulligan'
+ 'Nestor'#39's Bright Idea'
+ 'Holy Batpole'
+ 'Tumor (Benign)'
+ 'Braingate'
+ 'Nonplus'
+ 'Animate Nightstand'
+ 'Eye of the Troglodyte'
+ 'Curse Name'
+ 'Dropsy'
+ 'Vitreous Humor'
+ 'Roger'#39's Grand Illusion'
+ 'Covet'
+ 'Astral Miasma'
+ 'Spectral Oyster'
+ 'Acrid Hands'
+ 'Angioplasty'
+ 'Grognor'#39's Big Day Off'
+ 'Tumor (Malignant)'
+ 'Animate Tunic'
+ 'Ursine Armor'
+ 'Holy Roller'
+ 'Tonsilectomy'
+ 'Curse Family'
+ 'Infinite Confusion')
+ TabOrder = 0
+ WordWrap = False
+ end
+ object OffenseAttrib: TMemo
+ Left = 168
+ Top = 20
+ Width = 141
+ Height = 89
+ Lines.Strings = (
+ 'Polished|+1'
+ 'Serrated|+1'
+ 'Heavy|+1'
+ 'Pronged|+2'
+ 'Steely|+2'
+ 'Vicious|+3'
+ 'Venomed|+4'
+ 'Stabbity|+4'
+ 'Dancing|+5'
+ 'Invisible|+6'
+ 'Vorpal|+7')
+ TabOrder = 1
+ WordWrap = False
+ end
+ object DefenseAttrib: TMemo
+ Left = 280
+ Top = 244
+ Width = 113
+ Height = 89
+ Lines.Strings = (
+ 'Studded|+1'
+ 'Banded|+2'
+ 'Gilded|+2'
+ 'Festooned|+3'
+ 'Holy|+4'
+ 'Cambric|+1'
+ 'Fine|+4'
+ 'Impressive|+5'
+ 'Custom|+3')
+ TabOrder = 2
+ WordWrap = False
+ end
+ object Shields: TMemo
+ Left = 140
+ Top = 244
+ Width = 133
+ Height = 89
+ Lines.Strings = (
+ 'Parasol|0'
+ 'Pie Plate|1'
+ 'Garbage Can Lid|2'
+ 'Buckler|3'
+ 'Plexiglass|4'
+ 'Fender|4'
+ 'Round Shield|5'
+ 'Carapace|5'
+ 'Scutum|6'
+ 'Propugner|6'
+ 'Kite Shield|7'
+ 'Pavise|8'
+ 'Tower Shield|9'
+ 'Baroque Shield|11'
+ 'Aegis|12'
+ 'Magnetic Field|18')
+ TabOrder = 3
+ WordWrap = False
+ end
+ object Armors: TMemo
+ Left = 8
+ Top = 244
+ Width = 129
+ Height = 89
+ Lines.Strings = (
+ 'Lace|1'
+ 'Macrame|2'
+ 'Burlap|3'
+ 'Canvas|4'
+ 'Flannel|5'
+ 'Chamois|6'
+ 'Pleathers|7'
+ 'Leathers|8'
+ 'Bearskin|9'
+ 'Ringmail|10'
+ 'Scale Mail|12'
+ 'Chainmail|14'
+ 'Splint Mail|15'
+ 'Platemail|16'
+ 'ABS|17'
+ 'Kevlar|18'
+ 'Titanium|19'
+ 'Mithril Mail|20'
+ 'Diamond Mail|25'
+ 'Plasma|30')
+ TabOrder = 4
+ WordWrap = False
+ end
+ object Weapons: TMemo
+ Left = 8
+ Top = 20
+ Width = 153
+ Height = 89
+ Lines.Strings = (
+ 'Stick|0'
+ 'Broken Bottle|1'
+ 'Shiv|1'
+ 'Sprig|1'
+ 'Oxgoad|1'
+ 'Eelspear|2'
+ 'Bowie Knife|2'
+ 'Claw Hammer|2'
+ 'Handpeen|2'
+ 'Andiron|3'
+ 'Hatchet|3'
+ 'Tomahawk|3'
+ 'Hackbarm|3'
+ 'Crowbar|4'
+ 'Mace|4'
+ 'Battleadze|4'
+ 'Leafmace|5'
+ 'Shortsword|5'
+ 'Longiron|5'
+ 'Poachard|5'
+ 'Baselard|5'
+ 'Whinyard|6'
+ 'Blunderbuss|6'
+ 'Longsword|6'
+ 'Crankbow|6'
+ 'Blibo|7'
+ 'Broadsword|7'
+ 'Kreen|7'
+ 'Morning Star|8'
+ 'Pole-adze|8'
+ 'Spontoon|8'
+ 'Bastard Sword|9'
+ 'Peen-arm|9'
+ 'Culverin|10'
+ 'Lance|10'
+ 'Halberd|11'
+ 'Poleax|12'
+ 'Bandyclef|15')
+ TabOrder = 5
+ WordWrap = False
+ end
+ object Specials: TMemo
+ Left = 164
+ Top = 444
+ Width = 149
+ Height = 89
+ Lines.Strings = (
+ 'Diadem'
+ 'Festoon'
+ 'Gemstone'
+ 'Phial'
+ 'Tiara'
+ 'Scabbard'
+ 'Arrow'
+ 'Lens'
+ 'Lamp'
+ 'Hymnal'
+ 'Fleece'
+ 'Laurel'
+ 'Brooch'
+ 'Gimlet'
+ 'Cobble'
+ 'Albatross'
+ 'Brazier'
+ 'Bandolier'
+ 'Tome'
+ 'Garnet'
+ 'Amethyst'
+ 'Candelabra'
+ 'Corset'
+ 'Sphere'
+ 'Sceptre'
+ 'Ankh'
+ 'Talisman'
+ 'Orb'
+ 'Gammel'
+ 'Ornament'
+ 'Brocade'
+ 'Galoon'
+ 'Bijou'
+ 'Spangle'
+ 'Gimcrack'
+ 'Hood'
+ 'Vulpeculum')
+ TabOrder = 6
+ WordWrap = False
+ end
+ object ItemAttrib: TMemo
+ Left = 8
+ Top = 444
+ Width = 149
+ Height = 89
+ Lines.Strings = (
+ 'Golden'
+ 'Gilded'
+ 'Spectral'
+ 'Astral'
+ 'Garlanded'
+ 'Precious'
+ 'Crafted'
+ 'Dual'
+ 'Filigreed'
+ 'Cruciate'
+ 'Arcane'
+ 'Blessed'
+ 'Reverential'
+ 'Lucky'
+ 'Enchanted'
+ 'Gleaming'
+ 'Grandiose'
+ 'Sacred'
+ 'Legendary'
+ 'Mythic'
+ 'Crystalline'
+ 'Austere'
+ 'Ostentatious'
+ 'One True'
+ 'Proverbial'
+ 'Fearsome'
+ 'Deadly'
+ 'Benevolent'
+ 'Unearthly'
+ 'Magnificent'
+ 'Iron'
+ 'Ormolu'
+ 'Puissant')
+ TabOrder = 7
+ WordWrap = False
+ end
+ object ItemOfs: TMemo
+ Left = 320
+ Top = 444
+ Width = 149
+ Height = 89
+ Lines.Strings = (
+ 'Foreboding'
+ 'Foreshadowing'
+ 'Nervousness'
+ 'Happiness'
+ 'Torpor'
+ 'Danger'
+ 'Craft'
+ 'Silence'
+ 'Invisibility'
+ 'Rapidity'
+ 'Pleasure'
+ 'Practicality'
+ 'Hurting'
+ 'Joy'
+ 'Petulance'
+ 'Intrusion'
+ 'Chaos'
+ 'Suffering'
+ 'Extroversion'
+ 'Frenzy'
+ 'Solitude'
+ 'Punctuality'
+ 'Efficiency'
+ 'Comfort'
+ 'Patience'
+ 'Internment'
+ 'Incarceration'
+ 'Misapprehension'
+ 'Loyalty'
+ 'Envy'
+ 'Acrimony'
+ 'Worry'
+ 'Fear'
+ 'Awe'
+ 'Guile'
+ 'Prurience'
+ 'Fortune'
+ 'Perspicacity'
+ 'Domination'
+ 'Submission'
+ 'Fealty'
+ 'Hunger'
+ 'Despair'
+ 'Cruelty'
+ 'Grob'
+ 'Dignard'
+ 'Ra'
+ 'the Bone'
+ 'Diamonique'
+ 'Electrum'
+ 'Hydragyrum')
+ TabOrder = 8
+ WordWrap = False
+ end
+ object BoringItems: TMemo
+ Left = 168
+ Top = 132
+ Width = 149
+ Height = 89
+ Lines.Strings = (
+ 'nail'
+ 'lunchpail'
+ 'sock'
+ 'I.O.U.'
+ 'cookie'
+ 'pint'
+ 'toothpick'
+ 'writ'
+ 'newspaper'
+ 'letter'
+ 'plank'
+ 'hat'
+ 'egg'
+ 'coin'
+ 'needle'
+ 'bucket'
+ 'ladder'
+ 'chicken'
+ 'twig'
+ 'dirtclod'
+ 'counterpane'
+ 'vest'
+ 'teratoma'
+ 'bunny'
+ 'rock'
+ 'pole'
+ 'carrot'
+ 'canoe'
+ 'inkwell'
+ 'hoe'
+ 'bandage'
+ 'trowel'
+ 'towel'
+ 'planter box'
+ 'anvil'
+ 'axle'
+ 'tuppence'
+ 'casket'
+ 'nosegay'
+ 'trinket'
+ 'credenza'
+ 'writ')
+ TabOrder = 9
+ WordWrap = False
+ end
+ object Monsters: TMemo
+ Left = 8
+ Top = 360
+ Width = 221
+ Height = 61
+ Lines.Strings = (
+ 'Anhkheg|6|chitin'
+ 'Ant|0|antenna'
+ 'Ape|4|ass'
+ 'Baluchitherium|14|ear'
+ 'Beholder|10|eyestalk'
+ 'Black Pudding|10|saliva'
+ 'Blink Dog|4|eyelid'
+ 'Cub Scout|1|neckercheif'
+ 'Girl Scout|2|cookie'
+ 'Boy Scout|3|merit badge'
+ 'Eagle Scout|4|merit badge'
+ 'Bugbear|3|skin'
+ 'Bugboar|3|tusk'
+ 'Boogie|3|slime'
+ 'Camel|2|hump'
+ 'Carrion Crawler|3|egg'
+ 'Catoblepas|6|neck'
+ 'Centaur|4|rib'
+ 'Centipede|0|leg'
+ 'Cockatrice|5|wattle'
+ 'Couatl|9|wing'
+ 'Crayfish|0|antenna'
+ 'Demogorgon|53|tentacle'
+ 'Jubilex|17|gel'
+ 'Manes|1|tooth'
+ 'Orcus|27|wand'
+ 'Succubus|6|bra'
+ 'Vrock|8|neck'
+ 'Hezrou|9|leg'
+ 'Glabrezu|10|collar'
+ 'Nalfeshnee|11|tusk'
+ 'Marilith|7|arm'
+ 'Balor|8|whip'
+ 'Yeenoghu|25|flail'
+ 'Asmodeus|52|leathers'
+ 'Baalzebul|43|pants'
+ 'Barbed Devil|8|flame'
+ 'Bone Devil|9|hook'
+ 'Dispater|30|matches'
+ 'Erinyes|6|thong'
+ 'Geryon|30|cornucopia'
+ 'Malebranche|5|fork'
+ 'Ice Devil|11|snow'
+ 'Lemure|3|blob'
+ 'Pit Fiend|13|seed'
+ 'Anklyosaurus|9|tail'
+ 'Brontosaurus|30|brain'
+ 'Diplodocus|24|fin'
+ 'Elasmosaurus|15|neck'
+ 'Gorgosaurus|13|arm'
+ 'Iguanadon|6|thumb'
+ 'Megalosaurus|12|jaw'
+ 'Monoclonius|8|horn'
+ 'Pentasaurus|12|head'
+ 'Stegosaurus|18|plate'
+ 'Triceratops|16|horn'
+ 'Tyranosauraus Rex|18|forearm'
+ 'Djinn|7|lamp'
+ 'Doppleganger|4|face'
+ 'Black Dragon|7|*'
+ 'Plaid Dragon|7|sporrin'
+ 'Blue Dragon|9|*'
+ 'Beige Dragon|9|*'
+ 'Brass Dragon|7|pole'
+ 'Tin Dragon|8|*'
+ 'Bronze Dragon|9|medal'
+ 'Chromatic Dragon|16|scale'
+ 'Copper Dragon|8|loafer'
+ 'Gold Dragon|8|filling'
+ 'Green Dragon|8|*'
+ 'Platinum Dragon|21|*'
+ 'Red Dragon|10|cocktail'
+ 'Silver Dragon|10|*'
+ 'White Dragon|6|tooth'
+ 'Dragon Turtle|13|shell'
+ 'Dryad|2|acorn'
+ 'Dwarf|1|drawers'
+ 'Eel|2|sashimi'
+ 'Efreet|10|cinder'
+ 'Sand Elemental|8|glass'
+ 'Bacon Elemental|10|bit'
+ 'Porn Elemental|12|lube'
+ 'Cheese Elemental|14|curd'
+ 'Hair Elemental|16|follicle'
+ 'Swamp Elf|1|lilypad'
+ 'Brown Elf|1|tusk'
+ 'Sea Elf|1|jerkin'
+ 'Ettin|10|fur'
+ 'Frog|0|leg'
+ 'Violet Fungi|3|spore'
+ 'Gargoyle|4|gravel'
+ 'Gelatinous Cube|4|jam'
+ 'Ghast|4|vomit'
+ 'Ghost|10|*'
+ 'Ghoul|2|muscle'
+ 'Humidity Giant|12|drops'
+ 'Beef Giant|11|steak'
+ 'Quartz Giant|10|crystal'
+ 'Porcelain Giant|9|fixture'
+ 'Rice Giant|8|grain'
+ 'Cloud Giant|12|condensation'
+ 'Fire Giant|11|cigarettes'
+ 'Frost Giant|10|snowman'
+ 'Hill Giant|8|corpse'
+ 'Stone Giant|9|hatchling'
+ 'Storm Giant|15|barometer'
+ 'Mini Giant|4|pompadour'
+ 'Gnoll|2|collar'
+ 'Gnome|1|hat'
+ 'Goblin|1|ear'
+ 'Grid Bug|1|carapace'
+ 'Jellyrock|9|seedling'
+ 'Beer Golem|15|foam'
+ 'Oxygen Golem|17|platelet'
+ 'Cardboard Golem|14|recycling'
+ 'Rubber Golem|16|ball'
+ 'Leather Golem|15|fob'
+ 'Gorgon|8|testicle'
+ 'Gray Ooze|3|gravy'
+ 'Green Slime|2|sample'
+ 'Griffon|7|nest'
+ 'Banshee|7|larynx'
+ 'Harpy|3|mascara'
+ 'Hell Hound|5|tongue'
+ 'Hippocampus|4|mane'
+ 'Hippogriff|3|egg'
+ 'Hobgoblin|1|patella'
+ 'Homonculus|2|fluid'
+ 'Hydra|8|gyrum'
+ 'Imp|2|tail'
+ 'Invisible Stalker|8|*'
+ 'Iron Peasant|3|chaff'
+ 'Jumpskin|3|shin'
+ 'Kobold|1|penis'
+ 'Leprechaun|1|wallet'
+ 'Leucrotta|6|hoof'
+ 'Lich|11|crown'
+ 'Lizard Man|2|tail'
+ 'Lurker|10|sac'
+ 'Manticore|6|spike'
+ 'Mastodon|12|tusk'
+ 'Medusa|6|eye'
+ 'Multicell|2|dendrite'
+ 'Pirate|1|booty'
+ 'Berserker|1|shirt'
+ 'Caveman|2|club'
+ 'Dervish|1|robe'
+ 'Merman|1|trident'
+ 'Mermaid|1|gills'
+ 'Mimic|9|hinge'
+ 'Mind Flayer|8|tentacle'
+ 'Minotaur|6|map'
+ 'Yellow Mold|1|spore'
+ 'Morkoth|7|teeth'
+ 'Mummy|6|gauze'
+ 'Naga|9|rattle'
+ 'Nebbish|1|belly'
+ 'Neo-Otyugh|11|organ '
+ 'Nixie|1|webbing'
+ 'Nymph|3|hanky'
+ 'Ochre Jelly|6|nucleus'
+ 'Octopus|2|beak'
+ 'Ogre|4|talon'
+ 'Ogre Mage|5|apparel'
+ 'Orc|1|snout'
+ 'Otyugh|7|organ'
+ 'Owlbear|5|feather'
+ 'Pegasus|4|aileron'
+ 'Peryton|4|antler'
+ 'Piercer|3|tip'
+ 'Pixie|1|dust'
+ 'Man-o-war|3|tentacle'
+ 'Purple Worm|15|dung'
+ 'Quasit|3|tail'
+ 'Rakshasa|7|pajamas'
+ 'Rat|0|tail'
+ 'Remorhaz|11|protrusion'
+ 'Roc|18|wing'
+ 'Roper|11|twine'
+ 'Rot Grub|1|eggsac'
+ 'Rust Monster|5|shavings'
+ 'Satyr|5|hoof'
+ 'Sea Hag|3|wart'
+ 'Silkie|3|fur'
+ 'Shadow|3|silhouette'
+ 'Shambling Mound|10|mulch'
+ 'Shedu|9|hoof'
+ 'Shrieker|3|stalk'
+ 'Skeleton|1|clavicle'
+ 'Spectre|7|vestige'
+ 'Sphinx|10|paw'
+ 'Spider|0|web'
+ 'Sprite|1|can'
+ 'Stirge|1|proboscis'
+ 'Stun Bear|5|tooth'
+ 'Stun Worm|2|trode'
+ 'Su-monster|5|tail'
+ 'Sylph|3|thigh'
+ 'Titan|20|sandal'
+ 'Trapper|12|shag'
+ 'Treant|10|acorn'
+ 'Triton|3|scale'
+ 'Troglodyte|2|tail'
+ 'Troll|6|hide'
+ 'Umber Hulk|8|claw'
+ 'Unicorn|4|blood'
+ 'Vampire|8|pancreas'
+ 'Wight|4|lung'
+ 'Will-o-the-Wisp|9|wisp'
+ 'Wraith|5|finger'
+ 'Wyvern|7|wing'
+ 'Xorn|7|jaw'
+ 'Yeti|4|fur'
+ 'Zombie|2|forehead'
+ 'Wasp|0|stinger'
+ 'Rat|1|tail'
+ 'Bunny|0|ear'
+ 'Moth|0|dust'
+ 'Beagle|0|collar'
+ 'Midge|0|corpse'
+ 'Ostrich|1|beak'
+ 'Billy Goat|1|beard'
+ 'Bat|1|wing'
+ 'Koala|2|heart'
+ 'Wolf|2|paw'
+ 'Whippet|2|collar'
+ 'Uruk|2|boot'
+ 'Poroid|4|node'
+ 'Moakum|8|frenum'
+ 'Fly|0|*'
+ 'Hogbird|3|curl')
+ TabOrder = 10
+ WordWrap = False
+ end
+ object MonMods: TMemo
+ Left = 232
+ Top = 360
+ Width = 221
+ Height = 61
+ Lines.Strings = (
+ '-4 f'#339'tal *'
+ '-4 dying *'
+ '-3 crippled *'
+ '-3 baby *'
+ '-2 adolescent'
+ '-2 very sick *'
+ '-1 lesser *'
+ '-1 undernourished *'
+ '+1 greater *'
+ '+1 * Elder'
+ '+2 war *'
+ '+2 Battle-*'
+ '+3 Were-*'
+ '+3 undead *'
+ '+4 giant *'
+ '+4 * Rex')
+ TabOrder = 11
+ WordWrap = False
+ end
+ object OffenseBad: TMemo
+ Left = 316
+ Top = 20
+ Width = 141
+ Height = 89
+ Lines.Strings = (
+ 'Dull|-2'
+ 'Tarnished|-1'
+ 'Rusty|-3'
+ 'Padded|-5'
+ 'Bent|-4'
+ 'Mini|-4'
+ 'Rubber|-6'
+ 'Nerf|-7'
+ 'Unbalanced|-2')
+ TabOrder = 12
+ WordWrap = False
+ end
+ object DefenseBad: TMemo
+ Left = 396
+ Top = 244
+ Width = 141
+ Height = 89
+ Lines.Strings = (
+ 'Holey|-1'
+ 'Patched|-1'
+ 'Threadbare|-2'
+ 'Faded|-1'
+ 'Rusty|-3'
+ 'Motheaten|-3'
+ 'Mildewed|-2'
+ 'Torn|-3'
+ 'Dented|-3'
+ 'Cursed|-5'
+ 'Plastic|-4'
+ 'Cracked|-4'
+ 'Warped|-3'
+ 'Corroded|-3')
+ TabOrder = 13
+ WordWrap = False
+ end
+ object Races: TMemo
+ Left = 480
+ Top = 24
+ Width = 249
+ Height = 89
+ Lines.Strings = (
+ 'Half Orc|HP Max'
+ 'Half Man|CHA'
+ 'Half Halfling|DEX'
+ 'Double Hobbit|STR'
+ 'Hob-Hobbit|DEX,CON'
+ 'Low Elf|CON'
+ 'Dung Elf|WIS'
+ 'Talking Pony|MP Max,INT'
+ 'Gyrognome|DEX'
+ 'Lesser Dwarf|CON'
+ 'Crested Dwarf|CHA'
+ 'Eel Man|DEX'
+ 'Panda Man|CON,STR'
+ 'Trans-Kobold|WIS'
+ 'Enchanted Motorcycle|MP Max'
+ 'Will o'#39' the Wisp|WIS'
+ 'Battle-Finch|DEX,INT'
+ 'Double Wookiee|STR'
+ 'Skraeling|WIS'
+ 'Demicanadian|CON'
+ 'Land Squid|STR,HP Max')
+ TabOrder = 14
+ end
+ object Klasses: TMemo
+ Left = 480
+ Top = 136
+ Width = 249
+ Height = 89
+ Lines.Strings = (
+ 'Ur-Paladin|WIS,CON'
+ 'Voodoo Princess|INT,CHA'
+ 'Robot Monk|STR'
+ 'Mu-Fu Monk|DEX'
+ 'Mage Illusioner|INT,MP Max'
+ 'Shiv-Knight|DEX'
+ 'Inner Mason|CON'
+ 'Fighter/Organist|CHA,STR'
+ 'Puma Burgular|DEX'
+ 'Runeloremaster|WIS'
+ 'Hunter Strangler|DEX,INT'
+ 'Battle-Felon|STR'
+ 'Tickle-Mimic|WIS,INT'
+ 'Slow Poisoner|CON'
+ 'Bastard Lunatic|CON'
+ 'Jungle Clown|DEX,CHA'
+ 'Birdrider|WIS'
+ 'Vermineer|INT')
+ TabOrder = 15
+ end
+ object Titles: TMemo
+ Left = 328
+ Top = 136
+ Width = 57
+ Height = 81
+ Lines.Strings = (
+ 'Mr.'
+ 'Mrs.'
+ 'Sir'
+ 'Sgt.'
+ 'Ms.'
+ 'Captain'
+ 'Chief'
+ 'Admiral'
+ 'Saint')
+ TabOrder = 16
+ end
+ object ImpressiveTitles: TMemo
+ Left = 476
+ Top = 442
+ Width = 149
+ Height = 89
+ Lines.Strings = (
+ 'King'
+ 'Queen'
+ 'Lord'
+ 'Lady'
+ 'Viceroy'
+ 'Mayor'
+ 'Prince'
+ 'Princess'
+ 'Chief'
+ 'Boss'
+ 'Archbishop')
+ TabOrder = 17
+ WordWrap = False
+ end
+end
diff --git a/orig/pq/Config.pas b/orig/pq/Config.pas
new file mode 100755
index 0000000..1f28f02
--- /dev/null
+++ b/orig/pq/Config.pas
@@ -0,0 +1,57 @@
+unit Config;
+{ copyright (c)2002 Eric Fredricksen all rights reserved }
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, StdCtrls, ComCtrls;
+
+type
+ TK = class(TForm)
+ Spells: TMemo;
+ Label1: TLabel;
+ OffenseAttrib: TMemo;
+ Label2: TLabel;
+ DefenseAttrib: TMemo;
+ Label3: TLabel;
+ Shields: TMemo;
+ Label4: TLabel;
+ Armors: TMemo;
+ Label5: TLabel;
+ Weapons: TMemo;
+ Label6: TLabel;
+ Specials: TMemo;
+ Label7: TLabel;
+ ItemAttrib: TMemo;
+ Label8: TLabel;
+ ItemOfs: TMemo;
+ Label9: TLabel;
+ BoringItems: TMemo;
+ Label10: TLabel;
+ Monsters: TMemo;
+ MonMods: TMemo;
+ Label11: TLabel;
+ Label12: TLabel;
+ OffenseBad: TMemo;
+ Label13: TLabel;
+ DefenseBad: TMemo;
+ Label14: TLabel;
+ Races: TMemo;
+ Label15: TLabel;
+ Label16: TLabel;
+ Klasses: TMemo;
+ Label17: TLabel;
+ Titles: TMemo;
+ ImpressiveTitles: TMemo;
+ Label18: TLabel;
+ end;
+
+var
+ K: TK;
+
+implementation
+
+{$R *.dfm}
+
+end.
diff --git a/orig/pq/DelphiZLib.zip b/orig/pq/DelphiZLib.zip
new file mode 100644
index 0000000..7f0c7d2
--- /dev/null
+++ b/orig/pq/DelphiZLib.zip
Binary files differ
diff --git a/orig/pq/Front.dcu b/orig/pq/Front.dcu
new file mode 100644
index 0000000..2437113
--- /dev/null
+++ b/orig/pq/Front.dcu
Binary files differ
diff --git a/orig/pq/Front.ddp b/orig/pq/Front.ddp
new file mode 100644
index 0000000..cdc0ee8
--- /dev/null
+++ b/orig/pq/Front.ddp
Binary files differ
diff --git a/orig/pq/Front.dfm b/orig/pq/Front.dfm
new file mode 100644
index 0000000..425f1c7
--- /dev/null
+++ b/orig/pq/Front.dfm
@@ -0,0 +1,4507 @@
+object FrontForm: TFrontForm
+ Left = 274
+ Top = 206
+ AlphaBlendValue = 100
+ BorderIcons = []
+ BorderStyle = bsNone
+ BorderWidth = 2
+ ClientHeight = 255
+ ClientWidth = 452
+ Color = clRed
+ TransparentColorValue = clWhite
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ Icon.Data = {
+ 0000010001002020000000000000A80800001600000028000000200000004000
+ 0000010008000000000080040000000000000000000000000000000000000000
+ 0000000080000080000000808000800000008000800080800000C0C0C000C0DC
+ C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
+ 220029292900555555004D4D4D004242420039393900807CFF005050FF009300
+ D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
+ CC00003300000033330000336600003399000033CC000033FF00006600000066
+ 330000666600006699000066CC000066FF000099000000993300009966000099
+ 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
+ FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
+ CC003300FF00333300003333330033336600333399003333CC003333FF003366
+ 00003366330033666600336699003366CC003366FF0033990000339933003399
+ 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
+ CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
+ 330066006600660099006600CC006600FF006633000066333300663366006633
+ 99006633CC006633FF00666600006666330066666600666699006666CC006699
+ 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
+ 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
+ CC009999000099339900990099009900CC009900000099333300990066009933
+ CC009900FF00996600009966330099336600996699009966CC009933FF009999
+ 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
+ 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
+ FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
+ 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
+ CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
+ 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
+ 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
+ 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
+ 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
+ FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
+ 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
+ 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
+ D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
+ 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
+ 0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
+ 15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
+ 2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
+ 23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
+ 0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
+ 0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
+ 0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
+ 0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
+ 0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
+ 0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
+ 0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
+ 0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
+ 0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
+ 0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
+ 0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
+ 0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
+ 0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
+ 0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
+ 0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
+ 0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
+ FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
+ FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
+ 003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
+ C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
+ OldCreateOrder = False
+ Position = poScreenCenter
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Panel1: TPanel
+ Left = 0
+ Top = 0
+ Width = 452
+ Height = 255
+ Align = alClient
+ BevelInner = bvLowered
+ Color = clWhite
+ TabOrder = 0
+ object Label2: TLabel
+ Left = 2
+ Top = 240
+ Width = 448
+ Height = 13
+ Align = alBottom
+ Alignment = taCenter
+ Caption = #169' 2003 Eric Fredricksen - v6.3'
+ Color = clWhite
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = 11382189
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentColor = False
+ ParentFont = False
+ end
+ object HomeLink: TLabel
+ Left = 260
+ Top = 208
+ Width = 172
+ Height = 23
+ Cursor = crHandPoint
+ Alignment = taCenter
+ AutoSize = False
+ Caption = 'http://progressquest.com/'
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clBlue
+ Font.Height = -16
+ Font.Name = 'Times New Roman'
+ Font.Style = [fsUnderline]
+ ParentFont = False
+ OnClick = HomeLinkClick
+ end
+ object Label1: TLabel
+ Left = 9
+ Top = 250
+ Width = 3
+ Height = 13
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clSkyBlue
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentFont = False
+ end
+ object Button1: TButton
+ Left = 271
+ Top = 28
+ Width = 154
+ Height = 25
+ Caption = '&New Game (Single player)'
+ ModalResult = 1
+ TabOrder = 0
+ end
+ object Button2: TButton
+ Left = 271
+ Top = 112
+ Width = 154
+ Height = 25
+ Caption = '&Load Game'
+ ModalResult = 4
+ TabOrder = 1
+ end
+ object Button4: TButton
+ Left = 271
+ Top = 160
+ Width = 154
+ Height = 25
+ Caption = 'E&xit'
+ ModalResult = 2
+ TabOrder = 2
+ end
+ object Button3: TButton
+ Left = 271
+ Top = 64
+ Width = 154
+ Height = 25
+ Caption = 'New Game (&Multiplayer)'
+ ModalResult = 10
+ TabOrder = 3
+ end
+ object Panel2: TPanel
+ Left = 2
+ Top = 2
+ Width = 251
+ Height = 238
+ Align = alLeft
+ BevelOuter = bvNone
+ BorderWidth = 10
+ Caption = 'Panel2'
+ ParentColor = True
+ TabOrder = 4
+ object Logo: TImage
+ Left = 10
+ Top = 10
+ Width = 231
+ Height = 200
+ Cursor = crHandPoint
+ Align = alTop
+ AutoSize = True
+ Center = True
+ Picture.Data = {
+ 07544269746D617096160200424D96160200000000003600000028000000E300
+ 0000C8000000010018000000000060160200120B0000120B0000000000000000
+ 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF005169FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFEFEFEFBFBFBF8F8F8F3F3F3EDEDEDE7E7E7E2E2E2DFDFDFDEDEDEE0E0
+ E0E4E4E4E9E9E9EFEFEFF3F3F3F7F7F7FAFAFAFCFCFCFEFEFEFEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFEFEFEFCFCFCFAFAFAF7F7F7F3F3F3EFEFEFE9E9E9E4E4
+ E4E0E0E0DEDEDEDFDFDFE2E2E2E7E7E7EDEDEDF3F3F3F8F8F8FBFBFBFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF5F5F5EDEDEDE5E5E5DBDBDBD2D2
+ D2CCCCCCC5C5C5C5C5C5C7C7C7CDCDCDD4D4D4DCDCDCE3E3E3EAEAEAF0F0F0F5
+ F5F5F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F5F5F5F0F0F0EAEA
+ EAE3E3E3DCDCDCD4D4D4CECECEC7C7C7C5C5C5C5C5C5CBCBCBD2D2D2DBDBDBE5
+ E5E5EDEDEDF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDF9F9F9F2F2F2E9E9
+ E9DDDDDDD1D1D1C3C3C3B5B5B5ABABABA5A5A5A4A4A4A7A7A7AEAEAEB8B8B8C2
+ C2C2CDCDCDD7D7D7E0E0E0E9E9E9F2F2F2F8F8F8FCFCFCFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8
+ F8F2F2F2E9E9E9E0E0E0D7D7D7CDCDCDC2C2C2B8B8B8AEAEAEA7A7A7A5A5A5A7
+ A7A7ABABABB5B5B5C2C2C2D0D0D0DDDDDDE9E9E9F2F2F2F9F9F9FDFDFDFEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFEFE
+ FEF9F9F9F2F2F2E7E7E7D8D8D8C7C7C7B6B6B6A6A6A69696968A8A8A83838383
+ 83838686868D8D8D989898A4A4A4B1B1B1BFBFBFCCCCCCDBDBDBE9E9E9F2F2F2
+ FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFEFEFEFAFAFAF2F2F2E9E9E9DBDBDBCCCCCCBFBFBFB1B1B1A4A4A498
+ 98988D8D8D8787878585858484848A8A8A959595A4A4A4B5B5B5C7C7C7D8D8D8
+ E7E7E7F2F2F2F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFF
+ FFFFFFFFFFFFFFFEFEFEFBFBFBF4F4F4E8E8E8D7D7D7C3C3C3ADADAD9A9A9A86
+ 86867777776E6E6E6868686767676A6A6A707070797979848484929292A2A2A2
+ B5B5B5C9C9C9DDDDDDECECECF7F7F7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF7F7F7ECECECDDDDDDC9C9C9B5
+ B5B5A2A2A29292928484847979797070706A6A6A6767676A6A6A6E6E6E777777
+ 868686989898ADADADC3C3C3D7D7D7E8E8E8F4F4F4FBFBFBFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFF6B5E6BFFFFFFFFFFFFFFFFFFFDFDFDF7F7F7ECECECDADADAC5
+ C5C5ABABAB9393937D7D7D7171715F5F5F5D5D5D595959555555555555595959
+ 6060606969697777778989899E9E9EB9B9B9D1D1D1E5E5E5F3F3F3FCFCFCFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF3
+ F3F3E5E5E5D1D1D1B9B9B99E9E9E8989897777776A6A6A6565655D5D5D555555
+ 5858585353535858585F5F5F6C6C6C7D7D7D939393ABABABC5C5C5DADADAECEC
+ ECF7F7F7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFEFEFEFA
+ FAFAF0F0F0E0E0E0CBCBCBB0B0B09494947B7B7B7C7C7C6F6F6F707070494849
+ 6060606767674E4E4E4A4A4A4F4F4F5656566262627474748C8C8CA9A9A9C6C6
+ C6DDDDDDEFEFEFF9F9F9FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEFEFEFEF9F9F9EFEFEFDDDDDDC6C6C6A9A9A98C8C8C747474666666
+ 6F6F6F6363634948496D6D6D6666666666664A4A4A4F4F4F5858586767677B7B
+ 7B949494B0B0B0CBCBCBE0E0E0F0F0F0FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF80
+ 0080FFFFFFFFFFFFFCFCFCF5F5F5E8E8E8D4D4D4B9B9B99C9C9C8D8D8D676867
+ 6A696A8E8E8E888788CCCCCC5251521E1F1E4D4D4D5757575353534C4C4C5B5B
+ 5B6565657D7D7D9A9A9AB8B8B8D1D1D1E5E5E5F2F2F2F9F9F9FBFBFBFEFEFEFE
+ FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFEFEFEFDFDFDFBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F8F8F8FAFAFAFCFC
+ FCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFEFEFEFDFDFDFCFCFCFAFAFAF8F8F8F7F7F7F7F7F7F8F8F8F9F9F9FBFB
+ FBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFEFEFEFEFEFEFBFBFBF9F9F9F2F2F2E5E5E5D1D1D1AFAEAF
+ 9B9B9B8081807272725252521E1F1E525152CCCCCC8887888D8D8D6867685759
+ 575F605F4B4B4B5656566868688080809C9C9CB9B9B9D4D4D4E8E8E8F5F5F5FC
+ FCFCFFFFFFFFFFFFFFFFFF004F7BFFFFFFFEFEFEFBFBFBF0F0F0E0E0E0C8C8C8
+ A6A6A69696965A595A838283BDBEBDCDCDCDD7D7D7AEAFAE817F810000001C1B
+ 1C4140417070705B5B5B5B5B5B6160616F6F6F8A8A8AA7A7A7C1C1C1D6D6D6E5
+ E5E5EFEFEFF5F5F5F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDF9F9F9F5F5F5F0F0F0ECECECE9E9
+ E9EAEAEAECECECF0F0F0F5F5F5F9F9F9FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFBFBFBF9F9F9F5F5F5F0F0F0ECECECEAEA
+ EAE9E9E9ECECECF0F0F0F5F5F5F9F9F9FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF9F9F9F5F5F5EFEFEF
+ E5E5E5D6D6D6A2A1A27574756E6E6E7B7C7B4645461C1B1C000000817F81AEAF
+ AED7D7D7CDCDCDBDBEBD8180814D4D4D6A696A4F4F4F5A5A5A6F6F6F8A8A8AAA
+ AAAAC8C8C8E0E0E0F0F0F0FBFBFBFEFEFEFFFFFFFFFFFF800080FFFFFFFEFEFE
+ F8F8F8ECECECD9D9D9BDBDBD6464643A3A3A0F0E0F737273A2A2A27A7A7A7C7C
+ 7C9A9A9A797B79171717504F504F4F4F9797977776775252526E6E6E6464647B
+ 7B7B939393ACACACC1C1C1D1D1D1DEDEDEE8E8E8F0F0F0F6F6F6FBFBFBFDFDFD
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F3F3
+ F3EBEBEBE2E2E2DADADAD6D6D6D6D6D6DADADAE1E1E1E9E9E9F2F2F2F8F8F8FB
+ FBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F2F2
+ F2E9E9E9E1E1E1DBDBDBD6D6D6D6D6D6DADADAE2E2E2EBEBEBF3F3F3F9F9F9FD
+ FDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFB
+ F6F6F6F0F0F0E8E8E8DEDEDED1D1D1C1C1C19191915252527776779797974F4F
+ 4F504F50171717797B799A9A9A7C7C7C7A7A7AA2A2A27372730F0E0F32323240
+ 40405252526565657E7E7E9E9E9EBDBDBDD9D9D9ECECECF8F8F8FEFEFEFFFFFF
+ FFFFFF000080FFFFFFFEFEFEF7F7F7E9E9E9D4D4D4ABABAB6261622E2E2E1A19
+ 1A909090919091302F304746478888886E6C6E2C2C2C8384838E8E8E727272AD
+ ACAD5151516B6B6B5B5B5B6B6B6B7E7E7E929292A6A6A6B7B7B7C7C7C7D5D5D5
+ E1E1E1ECECECF3F3F3F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEFBFBFBF4F4F4E9E9E9DCDCDCCDCDCDC1C1C1BBBBBBBBBBBBC1C1C1CD
+ CDCDDBDBDBE8E8E8F2F2F2F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEF9F9F9F2F2F2E8E8E8DBDBDBCDCDCDC1C1C1BCBCBCBABABAC1C1C1CD
+ CDCDDCDCDCE9E9E9F4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FEFEFEFCFCFCF9F9F9F3F3F3ECECECE1E1E1D5D5D5C7C7C7B7B7B7A6A6A68E8E
+ 8E535353ADACAD7272728E8E8E8384832C2C2C6E6C6E888888474647302F3091
+ 90919090901A191A2E2E2E5F5F5F565656606060797979989898B8B8B8D4D4D4
+ E9E9E9F7F7F7FEFEFEFFFFFFFFFFFF800080FFFFFFFEFEFEF7F7F7E9E9E9D5D5
+ D5A1A0A18A898A878687898889D5D5D58787877776779B9D9B8181814D4C4D3D
+ 3D3DA9ABA9807D80B3B3B3A09FA06665665556555050505B5B5B6A6A6A7A7A7A
+ 8A8A8A999999AAAAAABBBBBBCCCCCCDADADAE7E7E7F1F1F1F7F7F7FBFBFBFDFD
+ FDFEFEFEFFFFFFFFFFFFFEFEFEFCFCFCF6F6F6EBEBEBDBDBDBC9C9C9B4B4B4A4
+ A4A49C9C9C9C9C9CA5A5A5B6B6B6CACACADDDDDDECECECF6F6F6FCFCFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6F6ECECECDDDDDDCACACAB6B6B6A5
+ A5A59D9D9D9C9C9CA5A5A5B4B4B4C8C8C8DBDBDBEBEBEBF6F6F6FCFCFCFEFEFE
+ FFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF7F7F7F1F1F1E7E7E7DADADACDCDCDBCBC
+ BCABABAB999999898989757575666566A09FA0B3B3B3807D80A9ABA93D3D3D4D
+ 4C4D8181819B9D9B777677878787D5D5D58988898786878A898A828282616161
+ 7A7A7A989898B9B9B9D5D5D5E9E9E9F7F7F7FEFEFEFFFFFFFFFFFF000080FFFF
+ FFFEFEFEF8F8F8ECECECE0E0E0B5B7B5454545A4A3A4D3D5D3ACACACB1B2B1D4
+ D5D4E9E9E9B6B5B63F3D3F7978799495947877789595958A888A2625263A3A3A
+ 4848484E4E4E5A5A5A6666667171717E7E7E8C8C8C9E9E9EB1B1B1C3C3C3D4D4
+ D4E2E2E2ECECECF2F2F2F7F7F7FAFAFAFCFCFCFDFDFDFCFCFCF8F8F8EFEFEFE0
+ E0E0CCCCCCB4B4B49B9B9B8888888181818181818E8E8EA4A4A4BDBDBDD4D4D4
+ E7E7E7F4F4F4FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF4F4F4E7
+ E7E7D4D4D4BDBDBDA3A3A38E8E8E8282828181818888889B9B9BB3B3B3CBCBCB
+ E0E0E0EFEFEFF8F8F8FCFCFCFDFDFDFCFCFCFAFAFAF7F7F7F2F2F2ECECECE2E2
+ E2D4D4D4C4C4C4B3B3B3A1A1A18E8E8E7C7C7C6F6F6F4B4A4B2625268A888A95
+ 95957877789495947978793F3D3FB6B5B6E9E9E9D4D5D4B1B2B1ACACACD3D5D3
+ A4A3A4454545B5B7B5919191838383A1A1A1BFBFBFDADADAECECECF8F8F8FEFE
+ FEFFFFFFFFFFFF033304FFFFFFFEFEFEFAFAFAF2F2F2FAFAFAB1B2B129292971
+ 7071C8C8C8999999DFE0DFE0E1E0E1E1E15B595B5F5D5FA4A3A4AAABAAB6B7B6
+ BDBDBD7D7D7D3736374543455F5F5F4C4D4C4B4B4B5252525959596464647171
+ 71838383969696A8A8A8BBBBBBCBCBCBD9D9D9E3E3E3EAEAEAEFEFEFF3F3F3F5
+ F5F5F5F5F5EFEFEFE3E3E3D0D0D0B8B8B89E9E9E8383837272726969696E6E6E
+ 7F7F7F999999B5B5B5D1D1D1E5E5E5F3F3F3FBFBFBFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEFBFBFBF3F3F3E5E5E5D0D0D0B4B4B49898987F7F7F707070696969
+ 7272728383839D9D9DB8B8B8D0D0D0E3E3E3EFEFEFF5F5F5F5F5F5F3F3F3EFEF
+ EFEAEAEAE3E3E3D9D9D9CBCBCBBBBBBBA8A8A89595958383837171716868686A
+ 6A6A4543453736377D7D7DBDBDBDB6B7B6AAABAAA4A3A45F5D5F5B595BE1E1E1
+ E0E1E0DFE0DF999999C8C8C8717071292929B1B2B1E8E8E8919191AFAFAFCBCB
+ CBE2E2E2F2F2F2FAFAFAFEFEFEFFFFFFFFFFFF000080FFFFFFFEFEFEFCFCFCFA
+ FAFAEAEAEA828282777777434343757475858585D3D4D3EBECEB919091222122
+ 6463649F9D9F8C8B8CE5E7E5E6E6E6898989898989CBCBCB4B4B4B6D6D6D5F5F
+ 5F4E4E4E5555555252525C5C5C6969697C7C7C8D8D8D9E9E9EB0B0B0BFBFBFCB
+ CBCBD6D6D6DDDDDDE3E3E3E6E6E6E6E6E6DFDFDFD1D1D1BDBDBDAAAAAAA0A0A0
+ 7B7B7B7070706F6F6F656565787878959595B3B3B3D0D0D0E6E6E6F4F4F4FCFC
+ FCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF4F4F4E6E6E6D0D0D0B5B5B5
+ 9B9C9B8181818A898A6C6C6C6060606F6F6F878787A2A2A2BCBCBCD1D1D1DFDF
+ DFE6E6E6E6E6E6E3E3E3DDDDDDD6D6D6CCCCCCC0C0C0B0B0B09E9E9E8C8C8C80
+ 80806E6E6E7272727676764C4C4CCBCBCB898989898989E6E6E6E5E7E58C8B8C
+ 9F9D9F646364222122919091EBECEBD3D4D38585857574754343437777778282
+ 82EAEAEACFCFCFBEBEBED7D7D7EAEAEAF6F6F6FCFCFCFEFEFEFFFFFFFFFFFF80
+ 0080FFFFFFFEFEFEFEFEFEFBFBFBE0DFE05F5F5FCDCDCD707070414141595859
+ 8283828C8A8C403F404442446D6D6D747374525152C7C8C7A9A8A98081809F9F
+ 9FA3A2A35151512C2B2C5353534040406666665858584E4E4E56565663636372
+ 7272828282929292A1A1A1AEAEAEBABABAC3C3C3CBCBCBCFCFCFCFCFCFC9C9C9
+ B9B9B9A4A4A48E8E8E5554553535356160616766676D6C6D7D7D7D989898B8B8
+ B8D4D4D4E9E9E9F6F6F6FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC
+ F6F6F6DBDBDB9D9C9D8382836B6A6B3636365251527373735454545F5F5F7676
+ 768C8C8CA4A4A4B9B9B9C8C8C8CFCFCFCFCFCFCBCBCBC3C3C3BABABAAFAFAFA1
+ A1A19292928282827B7B7B7676764545455756572C2B2C515151A3A2A39F9F9F
+ 808180A9A8A9C7C8C75251527473746D6D6D444244403F408C8A8C8283825958
+ 59414141707070CDCDCD5F5F5FDDDCDDE4E4E4CECECEE3E3E3F2F2F2FAFAFAFE
+ FEFEFEFEFEFFFFFFFFFFFF000080FFFFFFFFFFFFFEFEFEFEFEFEE1E0E1616061
+ D8D8D89D9D9D727372636463323232202020242424949494C3C6C3BFBEBFA8A8
+ A87D7C7D7675769496948C8D8C888A88949494918F914A494A6A6A6A5B5B5B65
+ 64655757574B4B4B5858585C5C5C6B6B6B7777778282828E8E8E999999A4A4A4
+ ACACACB1B1B1B3B3B3ABABAB9F9F9F9696963E3F3E2120216969694F4E4F8282
+ 826564656E6F6EA0A0A0BFBFBFD9D9D9ECECECF8F8F8FDFDFDFEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFDFDFDF6F6F69091906968698282824F4E4F6969692120
+ 21393A396566655656566464647878788C8C8C9E9E9EABABABB2B2B2B1B1B1AC
+ ACACA5A5A59B9B9B8E8E8E8585857575757676766D6C6D5B5B5B6A6A6A4A494A
+ 918F91949494888A888C8D8C9496947675767D7C7DA8A8A8BFBEBFC3C6C39494
+ 942424242020203232326364637273729D9D9DD8D8D8545354C9C8C9D7D7D7DB
+ DBDBECECECF8F8F8FDFDFDFEFEFEFFFFFFFFFFFFFFFFFF00F50CFFFFFFFFFFFF
+ FFFFFFFEFEFEFBFBFB818181898989B8B8B89F9F9FC1C3C16A6A6A0909094141
+ 41858585B6B7B6F5F5F5E4E6E4706F707D7E7D999B99B1B2B1BABDBADBDDDBB2
+ B2B27D7D7DB7B8B7E4E4E47F7F7F4C4C4C6F6F6F6A6A6A4E4E4E5858585F5F5F
+ 6868687373737D7D7D8383838A8A8A8F8F8F9292928C8C8C8383836162612625
+ 267B7C7BA4A4A4BABABA9695965656566D6D6DA5A5A5BFBFBFDBDBDBECECECF8
+ F8F8FCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFCFCFCF6F6F68C8C8C5656
+ 56969596BABABAA4A4A47B7C7B26252652525252535256565666666673737381
+ 81818C8C8C9292929191918B8B8B8484847C7C7C7171718282827F7F7F565656
+ 7F7F7FE4E4E4B7B8B77D7D7DB2B2B2DBDDDBBABDBAB1B2B1999B997D7E7D706F
+ 70E4E6E4F5F5F5B6B7B68585854141410909096A6A6AC1C3C19F9F9FB8B8B889
+ 8989646364B6B6B6D2D2D2E6E6E6F4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDB5B4B53C3A3CD1D1D18F8E
+ 8FBFBEBF5352532A2A2A9696966E6D6E656365ECEDECC8CAC8838383727272A2
+ A2A2C5C5C5D2D2D29E9F9E797A79656565C8C9C8D7D7D78181810808085B5B5B
+ 7171715353534A4A4A4E4E4E5454545A5A5A6363636868686D6D6D7171717272
+ 726E6E6E6F706F2D2E2D8E8F8E999B99C9CAC9E8E9E8D0D0D04F4E4F8989899F
+ 9F9FBBBBBBD4D4D4E7E7E7F3F3F3F9F9F9FCFCFCFEFEFEFEFEFEFEFEFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFC
+ FCF9F9F9F2F2F2C7C7C7595859D0D0D0E8E9E8C9CAC9999B998E8F8E2C2D2C5A
+ 5B5A4D4D4D5454545F5F5F6868686F6F6F7474747171716D6D6D676767616161
+ 6666667A7A7A5D5D5D090909818181D7D7D7C8C9C8656565797A799E9F9ED2D2
+ D2C5C5C5A2A2A2727272838383C8CAC8ECEDEC6563656E6D6E9696962A2A2A53
+ 5253BFBEBF8F8E8FD1D1D13C3A3C898989C5C5C5DDDDDDEEEEEEF8F8F8FDFDFD
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFEFEFEFEFE
+ FEEAEAEA4C4A4CACACACB5B5B52E2C2E222122606060ADAEADA9A9A9605F60C5
+ C7C58F8D8F6E6C6E8D8E8DC8C7C8C1C1C1A3A2A3ABACAB9C9B9C797779B5B8B5
+ 5758574848487A797A8181816F6E6F5756576666665757574747475555554F4F
+ 4F5353535757575A5A5A5B5B5B605F604444443B3A3B5C5A5C6E6F6E95949593
+ 93937C7B7C6D6C6D818181909090ADADADC5C5C5DADADAE9E9E9F2F2F2F7F7F7
+ FBFBFBFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE
+ FEFEFEFEFDFDFDFBFBFBF7F7F7F2F2F2E9E9E9D9D9D98F8E8F7D7C7D93939395
+ 94956E6F6E5C5A5C3B3A3B404040504F504A4A4A5050505555555959595B5B5B
+ 6363635757576363636C6C6C5C5B5C6F6E6F8181817A797A484848575857B5B8
+ B57977799C9B9CABACABA3A2A3C1C1C1C8C7C88D8E8D6E6C6E8F8D8FC5C7C560
+ 5F60A9A9A9ADAEAD6060602221222E2C2EB5B5B5ACACAC434143B0B0B0D3D3D3
+ E7E7E7F4F4F4FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF000080FFFF
+ FFFFFFFFFFFFFFFEFEFEFEFEFEFCFCFCC7C7C73A393A5F5E5F060606565856BB
+ BCBB818081BCBDBCA6A5A65756573C3B3C5C5A5CC1C2C1CDCCCD9D9D9D969496
+ DDDEDDB4B6B44D4C4D4D4C4D696969A8A8A8CFCECFCDCCCD7371734443448888
+ 885656565B5B5B6B6B6B6262624747474949494D4D4D4F4F4F4746475050507E
+ 7D7E7B7A7BCACBCADEDEDE8787874F4E4F6C6C6C6969698080809A9A9AB0B0B0
+ C6C6C6D6D6D6E3E3E3ECECECF3F3F3F8F8F8FBFBFBFDFDFDFEFEFEFEFEFEFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFEFEFEFEFEFEFDFDFDFBFBFBF8F8F8F3F3F3ECECECE4E4E4D6D6D6C5
+ C5C5AAAAAA5A595A878787DEDEDECACBCA7B7A7B7E7D7E505050444244494949
+ 4B4B4B4949494A4A4A6767676F6F6F5E5E5E565656888888444344737173CDCC
+ CDCFCECFA8A8A86969694D4C4D4D4C4DB4B6B4DDDEDD9694969D9D9DCDCCCDC1
+ C2C15C5A5C3C3B3C575657A6A5A6BCBDBC818081BBBCBB5658560606065F5E5F
+ 373637A3A3A3C8C8C8DEDEDEEFEFEFF8F8F8FDFDFDFEFEFEFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFF7B7B7BFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEF1F1F1CA
+ CACA989898626262797B79E7E7E7656465CCCCCCC9CAC9464646111111AEAFAE
+ B0B0B0909190C0C0C0C8C7C8B6B7B66866686F6F6F878787C0C1C0E8E9E8A4A5
+ A4868486ACABAC9F9F9F9A999A5755576C6C6C807F804E4F4E4E4E4E6B6B6B53
+ 53534949490B0B0B525152616161818081AFB0AFCAC9CA8F8E8F6D6C6D5D5D5D
+ 5B5B5B6E6E6E818181989898ABABABBEBEBECDCDCDDADADAE6E6E6EEEEEEF5F5
+ F5F9F9F9FCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFCFCFCF9F9F9F5F5F5EEEEEEE6
+ E6E6DBDBDBCDCDCDBEBEBEAAAAAA9D9D9D7D7C7D8F8E8FCAC9CAAFB0AF818081
+ 6161615251520B0B0B4949495251526B6B6B4E4E4E4E4F4E807F806C6C6C5755
+ 579A999A9F9F9FACABAC868486A4A5A4E8E9E8C0C1C08787876F6F6F686668B6
+ B7B6C8C7C8C0C0C0909190B0B0B0AEAFAE111111464646C9CAC9CCCCCC656465
+ E7E7E7797B796262628B8B8BA3A3A3C0C0C0D7D7D7E9E9E9F5F5F5FBFBFBFEFE
+ FEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00CD19FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFEFEFEFDFDFDF4F5F4FAFAFAB8B7B84E4E4EF3F3F3A6A5A6787878
+ 8E8F8E2B2A2B4E4E4E403F40636263A7A7A7C0C1C0A09FA0848484ABACABCCCC
+ CCCACBCAD7D9D7DFE0DF6B6B6B949494C4C4C48485848E8D8EB4B3B4E9EAE9E8
+ E7E87878786A696A4A494A8D8D8D4849486161616B6A6BA0A1A0939193B1B2B1
+ 615F613736378280824848485050505D5D5D6B6B6B7D7D7D8E8E8E9F9F9FB2B2
+ B2C2C2C2D1D1D1DDDDDDE9E9E9F1F1F1F7F7F7FBFBFBFDFDFDFEFEFEFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFBFBFBF7
+ F7F7F1F1F1E9E9E9DDDDDDD1D1D1C3C3C3B1B1B1A0A0A08D8D8D7B7B7B8A888A
+ 373637615F61B1B2B1939193A0A1A06B6A6B6161614849488D8D8D4A494A6A69
+ 6A787878E8E7E8E9EAE9B4B3B48E8D8E848584C4C4C49494946B6B6BDFE0DFD7
+ D9D7CACBCACCCCCCABACAB848484A09FA0C0C1C0A7A7A7626162403F40505050
+ 2B2A2B909190787878A6A5A6F3F3F34E4E4EB7B6B7E8E8E8C5C6C5D5D5D5E4E4
+ E4F1F1F1F9F9F9FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9FDFDFDE7E6E7
+ 3C3C3CADADADEEEEEE4C4B4C747474A2A2A2C8C8C8D3D3D38989894849484545
+ 45818181A6A7A6C3C4C3D6D7D6BDBEBDD0D1D0E1E3E16766676C6C6C969696A1
+ A2A1C5C5C5E3E4E3E0E0E0ABABABC3C5C39B9B9B929192AFAFAF979697ABADAB
+ CACBCAE9EAE9FDFFFDD5D4D56968692928297372736F6F6F4E4E4E4E4E4E5A5A
+ 5A666666727272828282939393A5A5A5B7B7B7C6C6C6D5D5D5E2E2E2ECECECF3
+ F3F3F8F8F8FBFBFBFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFE
+ FEFEFBFBFBF8F8F8F3F3F3ECECECE2E2E2D5D5D5C6C6C6B6B6B6A5A5A5939393
+ 828282767676818181737273292829696869D5D4D5FDFFFDE9EAE9CACBCAABAD
+ AB979697AFAFAF9291929B9B9BC3C5C3ABABABE0E0E0E3E4E3C5C5C5A1A2A196
+ 96966C6C6C676667E1E3E1D0D1D0BDBEBDD6D7D6C3C4C3A6A7A6818181454545
+ 484948838383CFCFCFCECECEAEAEAE7B7B7B4C4B4CEEEEEEADADAD3C3C3CE7E6
+ E7F6F6F6DEDEDEE5E5E5EFEFEFF7F7F7FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFEFEFEFAFAFAFCFCFC7C7C7C2C2C2C898A89707070D9D9D9EEEEEEF5F5
+ F5FAFAFAFAFAFAACADAC4645465555559E9E9E969796BFC0BFDEDEDED6D6D6AA
+ A9AA666566919291B3B3B3E1E2E1E7E9E7B9BAB9AEAFAEA0A1A0D3D4D3B1B1B1
+ 8E8E8E8F8F8F9A9A9A757575A3A3A3979797A1A3A19F9E9F727072B2B1B28785
+ 87615F616665664E4E4E4C4C4C5353535F5F5F6969697878788686869A9A9AAB
+ ABABBDBDBDCCCCCCDADADAE6E6E6EFEFEFF5F5F5FAFAFAFCFCFCFEFEFEFEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEFEFEFEFCFCFCFAFAFAF5F5F5EFEFEFE6E6E6DBDBDBCCCCCCBDBDBD
+ AAAAAA9A9A9A8686867777776E6E6E747374626062878587B2B1B27270729F9E
+ 9FA1A3A1979797A3A3A37575759A9A9A8F8F8F8E8E8EB1B1B1D3D4D3A0A1A0AE
+ AFAEB9BAB9E7E9E7E1E2E1B3B3B3919291666566AAA9AAD6D6D6DEDEDEBFC0BF
+ 9697969C9C9C555555424242A1A2A1EFEFEFF7F7F7FBFBFBFAFAFAE6E6E67473
+ 74898A892C2C2C7C7C7CFBFBFBF2F2F2EEEEEEF1F1F1F7F7F7FBFBFBFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E4C5FFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDE2E2E25A5B5A8281
+ 82DDDCDDF6F6F6F8F8F8FBFBFBFEFEFEFEFEFEF9F9F9DCDCDC9898988A8A8A66
+ 6666969796AFAFAFA1A1A1929092ACAEACDADBDAE7E7E7CFCECFADADAD969596
+ B6B7B6A9AAA97878785756573838385757575C5B5C706F707B7B7B9594956A6A
+ 6A414141535153A9A8A99190913533352323236364635959594F4F4F4D4D4D55
+ 55556161616D6D6D7D7D7D8D8D8D9E9E9EB1B1B1C3C3C3D1D1D1DEDEDEE9E9E9
+ F1F1F1F6F6F6FAFAFAFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFD
+ FDFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFDFDFDFDFDFDFE
+ FEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFAFAFAF6F6F6F1F1F1E9E9E9DEDEDE
+ D1D1D1C3C3C3B1B1B19F9F9F8C8C8C7B7B7B7171717070706C6D6C2424243533
+ 35919091A9A8A95351534141416A6A6A9594957B7B7B706F705C5B5C57575738
+ 3838575657787878A9AAA9B6B7B6969596ADADADCFCECFE7E7E7DADBDAACAEAC
+ 929092A1A1A1AFAFAF9697966464648080808D8D8DD2D2D2F0F0F0FAFAFAFDFD
+ FDFEFEFEFFFFFFFEFEFEE3E2E38382835A5B5AE2E2E2F9F9F9F6F6F6F7F7F7F9
+ F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF005047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFDFDFDFEFEFEE6E7E6EEEDEEFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFF
+ FFFFFCFCFCFFFFFFEBEBEBB8B6B85A5A5A403E409B9B9BC5C6C5E5E6E5D5D5D5
+ 7C7A7C979697B2B3B2A8A7A89191917B7A7B5A5A5A3E3C3E7C7A7C797879D3D4
+ D3A9A9A9E4E5E4F7F7F7C7C7C74342435958595D5C5D727272696A698C8D8C7A
+ 7A7A5554555657565555554D4E4D4F4F4F595959656565727272818181929292
+ A6A6A6B7B7B7C8C8C8D5D5D5E1E1E1EAEAEAF1F1F1F5F5F5F8F8F8FAFAFAFAFA
+ FAF9F9F9F7F7F7F5F5F5F4F4F4F4F4F4F5F5F5F8F8F8FBFBFBFDFDFDFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF8F8F8F5
+ F5F5F4F4F4F4F4F4F5F5F5F7F7F7F9F9F9FAFAFAFAFAFAF8F8F8F5F5F5F1F1F1
+ EAEAEAE1E1E1D5D5D5C7C7C7B6B6B6A6A6A69292928181817374736F6F6F6263
+ 625857587A7A7A8C8D8C696A697272725D5C5D595859434243C7C7C7F7F7F7E4
+ E5E4A9A9A9D3D4D37978797C7A7C3E3C3E5A5A5A7B7A7B919191A8A7A8B2B3B2
+ 9796977C7A7CD5D5D5E5E6E5C5C6C59B9B9B403E405A5A5AAEADAEDADADAF2F2
+ F2F5F5F5FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0EFF0E6E7E6FC
+ FCFCFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFEFEFEFEFEFEFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFED5D5D5777677
+ 5A5A5AC7C8C77879788A8A8A7A797ABBBBBBD9DBD9BCBDBC605F60737373BABA
+ BAE2E2E2C0BFC0D2D3D2717071706F70636263BABABAF7F7F7989998939393F3
+ F3F3D2D2D2F9F9F9E7E7E7FFFFFFB2B3B24546453B3C3B5657565353534E4E4E
+ 5252525D5D5D6A6A6A7676768686869A9A9AABABABBCBCBCCACACAD6D6D6E0E0
+ E0E7E7E7ECECECEEEEEEEFEFEFECECECE9E9E9E6E6E6E4E4E4E5E5E5E8E8E8ED
+ EDEDF3F3F3F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFC
+ FCFCF8F8F8F3F3F3EDEDEDE8E8E8E5E5E5E4E4E4E6E6E6E9E9E9ECECECEFEFEF
+ EEEEEEECECECE7E7E7E0E0E0D7D7D7CACACABBBBBBABABAB9999998686867979
+ 797272726465643E3F3E454645B2B3B2FFFFFFE7E7E7F9F9F9D2D2D2F3F3F393
+ 9393989998F7F7F7BABABA636263706F70717071D2D3D2C0BFC0E2E2E2BABABA
+ 737373605F60BCBDBCD9DBD9BBBBBB7A797A8A8A8A787978C6C7C65A5A5A7574
+ 75D0D0D0F4F4F4F7F7F7FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFEDEDEDBCBDBC7979798989895F5E5FA1A1A1E5E5E5DDDE
+ DDBABABA605E60999999EDEEEDA3A4A39696964C4A4C4544454B4B4B7E7D7E68
+ 6768C8C8C8888888B8B9B8F4F4F4FFFFFFF4F5F4FCFDFCF5F5F5F3F5F3E1E1E1
+ 8A8A8A3333334C4C4C6161615151514D4D4D5555556161616D6D6D7B7B7B8C8C
+ 8C9D9D9DADADADBCBCBCC8C8C8D1D1D1D7D7D7DBDBDBDBDBDBD8D8D8D4D4D4CF
+ CFCFCDCDCDCECECED4D4D4DDDDDDE7E7E7F1F1F1F8F8F8FDFDFDFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFDFDFDF8F8F8F1F1F1E7E7E7DDDDDDD4D4D4CECECECDCDCD
+ CFCFCFD4D4D4D8D8D8DBDBDBDBDBDBD7D7D7D1D1D1C8C8C8BBBBBBAEAEAE9D9D
+ 9D8C8C8C7B7B7B7373737575755353533333338A8A8AE1E1E1F3F5F3F5F5F5FC
+ FDFCF4F5F4FFFFFFF4F4F4B8B9B8888888C8C8C86867687E7D7E4B4B4B454445
+ 4C4A4C969696A3A4A3EDEEED999999605E60BABABADDDEDDE5E5E5A1A1A15F5E
+ 5F7B7B7B717171B2B3B2E5E5E5FAFAFAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF623063FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEF1F1F1E4E4
+ E48484846D6E6DCBCBCBC5C5C5D5D6D5817F81979797E5E7E5ACADAC6D6C6D9A
+ 999A4E4C4ECBCCCBF0F0F08C8B8C737373626262848484BFBFBFA4A4A4A8A8A8
+ A0A0A0696A69939393BFC0BFECECECCFCFCF595959363636595A595555554B4B
+ 4B5050505858586363637171718181818D8D8D9C9C9CAAAAAAB5B5B5BCBCBCC0
+ C0C0C0C0C0BCBCBCB6B6B6B1B1B1AEAEAEB0B0B0B9B9B9C6C6C6D6D6D6E5E5E5
+ F1F1F1F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9F1F1F1E5E5E5D6D6D6
+ C6C6C6B9B9B9B0B0B0AEAEAEB1B1B1B6B6B6BDBDBDC0C0C0C0C0C0BCBCBCB5B5
+ B5AAAAAA9C9C9C8D8D8D7E7E7E7272726F6F6F636463383838595959CFCFCFEC
+ ECECBFC0BF939393696A69A0A0A0A8A8A8A4A4A4BFBFBF848484626262737373
+ 8C8B8CF0F0F0CBCCCB4E4C4E9A999A6D6C6DACADACE5E7E5979797817F81D5D6
+ D5C5C5C5CBCBCB6D6E6D717171BFBFBFD9D9D9F1F1F1F8F8F8FDFDFDFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFEFEFEEDEEED6E6E6E7070707C7C7CB1B0B19D9B9D66
+ 6566DADBDACBCBCB7674764140413130312727279F9F9F8584856A696A5A5A5A
+ 6665668B8A8B2B2A2B7372736261629A9B9A4E504E6C6B6C8F908FC4C5C4E1E2
+ E1B1B1B15050504141415F5F5F4B4B4B4B4B4B5151515B5B5B6767677272727D
+ 7D7D8989899393939C9C9C9E9E9E9E9E9E9B9B9B9595959090908E8E8E929292
+ 9C9C9CADADADC2C2C2D6D6D6E8E8E8F4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB
+ F4F4F4E8E8E8D6D6D6C2C2C2ADADAD9C9C9C9292928E8E8E9090909696969B9B
+ 9B9E9E9E9E9E9E9B9B9B9494948989897D7D7D7272726969696C6D6C45454550
+ 5050B1B1B1E1E2E1C4C5C48F908F6C6B6C4E504E9A9B9A6261627372732B2A2B
+ 8B8A8B6665665A5A5A6A696A8584859F9F9F272727313031414041767476CBCB
+ CBDADBDA6665669D9B9DB1B0B17C7C7C707070565656B9BAB9D5D5D5EAEAEAF8
+ F8F8FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEDEDEDAD
+ ADAD0C0B0C818181B8B9B8414141AFB1AFEEEEEE6261623736377F807F6D6C6D
+ 2727275D5D5DC0C0C0A7A7A7C3C4C3DCDCDC9FA09F6F6E6FDCDCDCB1B2B1C0C1
+ C0B7B8B76D6D6D787878AEAEAED6D7D6E1E1E19C9C9C46464654545462626248
+ 48484D4D4D5353535A5A5A6464646E6E6E7474747B7B7B7E7E7E7D7D7D7B7B7B
+ 7878787676767676767B7B7B878787999999B0B0B0C8C8C8DDDDDDEDEDEDF8F8
+ F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFDFDFDF8F8F8EDEDEDDDDDDDC8C8C8B0B0B09999998787877B7B
+ 7B7676767777777979797B7B7B7F7F7F7E7E7E7A7A7A7474746D6D6D64646472
+ 72725A5A5A4646469C9C9CE1E1E1D6D7D6AEAEAE7878786D6D6DB7B8B7C0C1C0
+ B1B2B1DCDCDC6F6E6F9FA09FDCDCDCC3C4C3A7A7A7C0C0C05D5D5D2727276D6C
+ 6D7F807F373637626162EEEEEEAFB1AF414141B8B9B88181810A090A78777899
+ 9A99BBBBBBD8D8D8ECECECF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFEFEFEF8F8F8DEDEDE676667636363DADBDA5C5C5C878687F5F6F5
+ A4A4A4515051D6D6D6B0B0B0858685676667C4C6C49B9C9B838383E6E7E6DEDE
+ DE858485757475979997BABBBAF0F2F0E5E6E5A3A2A37776778E8E8EB3B4B3D8
+ D9D8DADBDA8D8D8D4D4D4D6161615757574D4D4D4C4C4C5151515A5A5A5C5C5C
+ 6161616363636464646464646A6A6A6D6D6D6868686F6F6F7C7C7C8E8E8EA4A4
+ A4BCBCBCD4D4D4E6E6E6F4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF4F4F4E6E6E6D4D4D4BCBC
+ BCA4A4A49191918282826F6F6F68686864646464646464646466666663636360
+ 60606262626767676767674E4E4E8D8D8DDADBDAD8D9D8B3B4B38E8E8E777677
+ A3A2A3E5E6E5F0F2F0BABBBA979997757475858485DEDEDEE6E7E68383839B9C
+ 9BC4C6C4676667858685B0B0B0D6D6D6515051A4A4A4F5F6F58786875C5C5CDA
+ DBDA6262624C4B4C767676949494B7B7B7D5D5D5E9E9E9F8F8F8FEFEFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71B770FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF4F4F4E4E4E4B0B0B02C2C2C
+ 6F6F6F909090636363CCCDCCDFE0DF8282827473748686864242426B6A6B8685
+ 86787778343434A2A1A2CFD0CFACADAC5A595A686868C8CAC8D0D0D0C2C3C2F1
+ F1F1D6D6D6959595797879969696ACABACE3E4E3DADBDA8181815554556A6A6A
+ 5656565655564949494C4C4C4E4E4E5959595151516E6E6E6868686868686867
+ 686E6E6E7979798B8B8BA0A0A0B7B7B7CECECEE3E3E3F1F1F1FAFAFAFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFA
+ FAF1F1F1E3E3E3CECECEB1B1B18C8C8C79797978787883838362626263636356
+ 56565353535151515D5D5D5D5D5D6F6F6F555455818181DADBDAE3E4E3ACABAC
+ 969696797879959595D6D6D6F1F1F1C2C3C2D0D0D0C8CAC86868685A595AACAD
+ ACCFD0CFA2A1A23434347877788685866B6A6B424242868686747374828282DF
+ E0DFCCCDCC6363639090906F6F6F2C2C2C7777776F6F6F8D8D8DAFAFAFCDCDCD
+ E4E4E4F4F4F4FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9
+ EFEFEFDCDCDCC6C6C6090809494949ABABAB464546929292F9FAF9DBDDDBCBCB
+ CB868686636363696869656365A4A3A4C8C8C8ACAAACB1B2B1D1D2D1A8A8A857
+ 5657919191ACACACCBCCCBE4E5E4E2E3E2EFF0EFCACACA9795978785878E8D8E
+ C8C9C8F7F7F7D4D4D47E7D7E6766675352535556555151516565656363634444
+ 444A4A4A0D0D0D5352537575757E7E7E8080808F8F8FA2A2A2B7B7B7CECECEE1
+ E1E1EFEFEFF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFEFEFEF9F9F9EFEFEFE1E1E1CDCDCD9B9B9B7B7B7B5352530F
+ 0F0F5252524D4D4D6E6E6E6B6C6B5555555859585553556766677E7D7ED4D4D4
+ F7F7F7C8C9C88E8D8E878587979597CACACAEFF0EFE2E3E2E4E5E4CBCCCBACAC
+ AC919191575657A8A8A8D1D2D1B1B2B1ACAAACC8C8C8A4A3A465636569686963
+ 6363868686CBCBCBDBDDDBF9FAF9929292464546ABABAB494949090809838383
+ 696969838383A4A4A4C2C2C2DCDCDCEFEFEFF9F9F9FEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFEFEFEFCFCFCF5F5F5E8E8E8D4D4D4CACACA5655562F2D2FBDBDBDA5A4
+ A57A797AC7C7C7D8D6D89190917E7E7EB8B8B8E1E1E18787877C7B7CB7B6B7D1
+ D1D1A9A8A9BEC0BED2D3D2ABABAB8A898A8B8B8BB3B3B3E3E4E3E7E8E7DEDFDE
+ EAEBEAEAEAEAC1C1C1888788828182A6A7A6DDDEDDFFFFFFD0D0D09D9E9D8485
+ 845251525253520E0D0E3232321C1C1C3A3A3A6666668A898A52515282818296
+ 9696A7A7A7BABABACECECEE0E0E0EFEFEFF8F8F8FEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8EFEFEFDFDFDFAC
+ ABAC5251528A898A6666663A3A3A1C1C1C3232320E0D0E535453525152848584
+ 9D9E9DD0D0D0FFFFFFDDDEDDA6A7A6828182888788C1C1C1EAEAEAEAEBEADEDF
+ DEE7E8E7E3E4E3B3B3B38B8B8B8A898AABABABD2D3D2BEC0BEA9A8A9D1D1D1B7
+ B6B77C7B7C878787E1E1E1B8B8B87E7E7E919091D8D6D8C7C7C77A797AA5A4A5
+ BDBDBD2F2D2F5352538A8A8A6363637A7A7A979797B7B7B7D3D3D3E8E8E8F5F5
+ F5FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00C623FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF2F2F2E1E1E1C9C9C9ADAD
+ AD595859373537A6A6A6FFFFFF7E7D7E706E704241422E2C2EABACABF6F6F6F8
+ F8F8D1D1D13B3A3B7D7C7D8E8C8E7B797B757575999A99C1C2C1B5B6B59F9F9F
+ 959595A7A6A7C9C9C9E7E8E7E4E5E4DCDDDCE9EAE9E1E2E1A9A7A98180818888
+ 88BBBBBBF6F6F6FBFBFBE5E5E5E5E4E5B3B3B3D0CFD0BABABAF4F5F4A4A4A470
+ 6F70B0B0B08F8E8F5252529E9E9EA8A8A8BBBBBBCDCDCDDFDFDFECECECF7F7F7
+ FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+ FDFDF7F7F7ECECECD6D6D65C5C5C8F8E8FB0B0B0706F70A4A4A4F4F5F4BABABA
+ D0CFD0B3B3B3E5E4E5E5E5E5FBFBFBF6F6F6BBBBBB888888818081A9A7A9E1E2
+ E1E9EAE9DCDDDCE4E5E4E7E8E7C9C9C9A7A6A79595959F9F9FB5B6B5C1C2C199
+ 9A997575757B797B8E8C8E7D7C7D3B3A3BD1D1D1F8F8F8F6F6F6ABACAB2E2C2E
+ 424142706E707E7D7EFFFFFFA6A6A6373537585758807F805B5B5B6F6F6F8C8C
+ 8CACACACC9C9C9E1E1E1F2F2F2FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF7C777EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9
+ F9EEEEEEDBDBDBBFC0BF6564654A494A6D6D6D5C5C5CDEDFDEEEEFEE51505152
+ 51524F4D4F6D6D6DFEFEFEEEEEEEFCFCFC7978797B7C7BD8D9D8555455666566
+ 8080807C7C7CA9AAA9BBBDBBA3A5A3A1A1A19C9B9CA0A0A0C8C9C8E8E9E8E0E1
+ E0E3E4E3F0F2F0DADADA9998997A797AA2A1A2DEDFDEF4F4F4FFFFFFF2F2F2AF
+ AFAFA0A1A05C5C5C7C7C7C3837389F9E9FC1C3C14F504F6B6B6BA2A2A2B3B3B3
+ C6C6C6D7D7D7E6E6E6F1F1F1F8F8F8FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFEFEFEFDFDFDF8F8F8F1F1F1E6E6E68080804F504FC1C3C19F9E9F
+ 3837387C7C7C5C5C5CA0A1A0AFAFAFF2F2F2FFFFFFF4F4F4DEDFDEA2A1A27A79
+ 7A999899DADADAF0F2F0E3E4E3E0E1E0E8E9E8C8C9C8A0A0A09C9B9CA1A1A1A3
+ A5A3BBBDBBA9AAA97C7C7C808080666566555455D8D9D87B7C7B797879FCFCFC
+ EEEEEEFEFEFE6D6D6D4F4D4F525152515051EEEFEEDEDFDE5C5C5C6D6D6D4948
+ 495352536E6E6E686868828282A1A1A1C1C1C1DBDBDBEEEEEEF9F9F9FEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFEFEFEF8F8F8ECECECD9D9D9A6A6A6494849403E4086868680
+ 80808C8C8CC4C4C45C5C5C878687B2B1B24C4B4CCACACAF7F7F7F5F5F5CFCFCF
+ 6060608F8E8F7A7B7AA9AAA9CFCFCF9494947171718E8E8EB0B2B0B4B6B4ABAC
+ ABA1A2A18F8F8FA1A1A1D0D1D0DDDDDDDCDDDCF0F2F0EDEFEDC3C4C3908E9080
+ 8080B2B2B29090909B999B8989890404041E1E1E1A1B1A4647465A5A5A929292
+ 6F706F151515979797A1A1A1B5B5B5C7C7C7D7D7D7E5E5E5EFEFEFF6F6F6FBFB
+ FBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF6F6F6EFEFEFE5E5E5D4D4D4
+ 1515157475749E9E9E6868685C5D5C2223222424240404048989899B999B9090
+ 90B2B2B2808080908E90C3C4C3EDEFEDF0F2F0DCDDDCDDDDDDD0D1D0A1A1A18F
+ 8F8FA1A2A1ABACABB4B6B4B0B2B08E8E8E717171949494CFCFCFA9AAA97A7B7A
+ 8F8E8F606060CFCFCFF5F5F5F7F7F7CACACA4C4B4CB2B1B28786875C5C5CC4C4
+ C48C8C8C808080868686403E404948496F6E6F6666668181819E9E9EBEBEBED9
+ D9D9ECECECF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
+ 1876FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8EDEDEDDADADA9E
+ 9E9E6969698A8A8A626262BBBBBB9A9A9A8A8A8A232223525352E7E7E7858585
+ 767676FBFBFBF0F0F0F5F5F59898983D3C3D737373CDCFCDD6D7D6D2D2D2B4B4
+ B49B9A9B918F919A9A9ABEBFBEC2C4C2B2B2B29B9A9B898A89A9ABA9C8C8C8CF
+ D0CFE5E7E5F5F6F5ECEDEC8B8B8B5A5B5A8E8E8EBEBDBEB3B1B38C8B8C4E4D4E
+ 4747474747475151516060606766673E3D3E7678768B8B8B9C9C9CAFAFAFC0C0
+ C0D1D1D1DEDEDEE9E9E9F2F2F2F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F2F2F2
+ E9E9E9DEDEDED2D2D29B9B9B4948498988898686867B7B7B6B6B6B5F5F5F504F
+ 508C8B8CB3B1B3BEBDBE8E8E8E5A5B5A8B8B8BECEDECF5F6F5E5E7E5CFD0CFC8
+ C8C8A9ABA9898A899B9A9BB2B2B2C2C4C2BEBFBE9A9A9A918F919B9A9BB4B4B4
+ D2D2D2D6D7D6CDCFCD7373733D3C3D989898F5F5F5F0F0F0FBFBFB7676768585
+ 85E7E7E75253522322238A8A8A9A9A9ABBBBBB6262628A8A8A6969697272726F
+ 706F838383A2A2A2C0C0C0DADADAEDEDEDF8F8F8FEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF000900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+ FEFEFAFAFAEDEDEDDCDCDC6C6D6C656565D1D2D1959495A3A3A3E3E4E3757675
+ 353535797A796060608C8C8C423F42ABAAABFDFDFDFFFFFFEEEFEE6E6F6E2827
+ 289C9C9CDADBDAF2F3F2E0E1E0D0D1D0C3C3C39695968C8B8CB5B5B5CDCECDC6
+ C7C6BCBCBCA2A4A2949494A8A6A8A3A4A3B1B0B1DADADAA7A8A7B5B5B5D9D8D9
+ F8F8F8F5F4F5BDBABDA2A0A27A797A5A5A5A4545454A4A4A505050605F607373
+ 73747474808080929292A4A4A4B6B6B6C7C7C7D5D5D5E2E2E2ECECECF3F3F3F8
+ F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC
+ F8F8F8F3F3F3ECECECE2E2E2D5D5D5C7C7C7B7B7B7A8A8A88887887F7F7F7171
+ 716363636868687A797AA2A0A2BDBABDF5F4F5F8F8F8D9D8D9B5B5B5A7A8A7DA
+ DADAB1B0B1A3A4A3A8A6A8949494A2A4A2BCBCBCC6C7C6CDCECDB5B5B58C8B8C
+ 969596C3C3C3D0D1D0E0E1E0F2F3F2DADBDA9C9C9C2827286E6F6EEEEFEEFFFF
+ FFFDFDFDABAAAB423F428C8C8C606060838483393939757675E3E4E3A3A3A395
+ 9495D1D2D16565655758578C8C8C929292ADADADC8C8C8E0E0E0F0F0F0FAFAFA
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2AA32CFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBD8D7D89E9C9E1C1C1C656265BBBBBB
+ DAD9DA8C8C8C4C4C4C7B7B7B9F9F9FD1D1D1D1D1D18A898A3D3B3D5454549394
+ 93D9DAD9FFFFFFE3E4E3706F706C6B6CABACABD5D7D5EDEEEDE5E6E5E0E0E0CB
+ CBCB9B9C9B8C8A8CB0B0B0CBCCCBC5C6C5CCCDCCC9CAC9B0AEB0A9A9A9868486
+ 7D7C7D787878A7A7A7D0CFD0979596F9FDFEFBFBFBDFDCDFB5B1B59390937372
+ 735353534646464B4B4B5656565C5C5C686868767676868686979797A9A9A9BB
+ BBBBCBCBCBD9D9D9E5E5E5EEEEEEF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FEFEFEFDFDFDFAFAFAF5F5F5EEEEEEE5E5E5D9D9D9CBCBCBBBBBBBA9A9A99797
+ 97888888767676686868666566767476939093B5B1B5DFDCDFFBFBFBF9FDFE97
+ 9596D0CFD0A7A7A77878787D7C7D868486A9A9A9B0AEB0C9CAC9CCCDCCC5C6C5
+ CBCCCBB0B0B08C8A8C9B9C9BCBCBCBE0E0E0E5E6E5EDEEEDD5D7D5ABACAB6C6B
+ 6C706F70E3E4E3FFFFFFD9DAD99394935151513C3A3C898889DADADAF0F0F0C2
+ C2C28888884C4C4C8C8C8CDAD9DABBBBBB6562651C1C1C8583859B9A9BBCBCBC
+ D5D5D5E7E7E7F4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDD4D4D4
+ 4443445B5A5B5D5C5D8C8C8CEFF1EFCCCCCC393839A7A6A7CFCFCFE0E0E0EEEE
+ EEF3F3F3D4D4D4A4A4A48C8D8C787978B3B4B3F6F6F6EDEDED9F9E9F85858594
+ 9594BCBCBCDFDFDFEBEDEBE7E8E7D3D4D39F9F9F7E7E7EA9AAA9D1D3D1C3C4C3
+ C3C5C3DADBDACECFCED8DAD8B7B8B76D6D6D9897989C9A9CA1ADB0C0AEB1E3F0
+ F2FEFFFFF5F4F5D4D1D4AAA7AA8C8A8C6A696A5858584747474D4D4D5454545F
+ 5F5F6B6B6B7A7A7A8A8A8A9C9C9CAEAEAEBFBFBFCFCFCFDDDDDDE7E7E7F0F0F0
+ F6F6F6FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFEFEFEFBFBFBF6F6F6F0F0F0E7E7E7DDDDDDCFCFCFBFBF
+ BFAEAEAE9C9C9C8A8A8A7A7A7A6B6B6B7070707170718C8A8CAAA7AAD4D1D4F5
+ F4F5FEFFFFE3F0F2C0AEB1A1ADB09C9A9C9897986D6D6DB7B8B7D8DAD8CECFCE
+ DADBDAC3C5C3C3C4C3D1D3D1A9AAA97E7E7E9F9F9FD3D4D3E7E8E7EBEDEBDFDF
+ DFBCBCBC9495948585859F9E9FEDEDEDF6F6F6B3B4B37677768585859A9A9ACB
+ CBCBF1F1F1F9F9F9FCFCFCFAFAFAC8C7C83C3B3CCCCCCCEFF1EF8C8C8C5D5C5D
+ 5B5A5B444344AEAEAECFCFCFE1E1E1EFEFEFF8F8F8FDFDFDFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEEEEEEE5D5D5DA8A9A87475747F7F7FA8A9A89999996563
+ 65CCCCCCE0E0E0ECECECF6F6F6FBFBFBFEFEFEFFFFFFD5D5D5A7A7A76B6C6B8D
+ 8D8DCCCCCCF8F8F8D0D0D0878787878787A8A8A8CDCECDE8E9E8F0F0F0E5E5E5
+ A8A9A8686768939493DEDFDED9DBD9C0C1C0C8CAC8D5D6D5CBCDCBB5B5B59694
+ 968A898BC4C0C38C1515A05C5EC6C3C6EEF9FAFFFFFFEEEDEEC6C3C69F9C9F84
+ 82847F7F7F4545454848484E4E4E5656566262626E6E6E7E7E7E8F8F8FA1A1A1
+ B3B3B3C3C3C3D3D3D3E0E0E0EAEAEAF2F2F2F8F8F8FBFBFBFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F2F2F2EAEAEAE0E0
+ E0D3D3D3C3C3C3B3B3B3A1A1A18F8F8F7E7E7E6E6E6E6363638A898A8482849F
+ 9C9FC6C3C6EEEDEEFFFFFFEEF9FAC6C3C6A05C5E8C1515C4C0C38A898B969496
+ B5B5B5CBCDCBD5D6D5C8CAC8C0C1C0D9DBD9DEDFDE939493686768A8A9A8E5E5
+ E5F0F0F0E8E9E8CDCECDA8A8A8878787878787D0D0D0F8F8F8CCCCCC8D8D8D67
+ 68679C9C9CC8C8C8F4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFEFEFEE9E9E96D6A6D
+ 999999A8A9A87F7F7F747574A8A9A85B5B5BCFCFCFE1E1E1EDEDEDF6F6F6FCFC
+ FCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003C00FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBADADAD8888889393
+ 93818081525052373637A7A7A7E7E7E7EEEEEEF5F5F5FBFBFBFEFEFEFFFFFFFF
+ FFFFFFFFFFFBFBFBC6C7C6686968636363949594EAEAEAF1F2F1B1B2B17F7F7F
+ 888888B8B9B8D4D5D4EAEBEAF0F1F0C0C1C07C7D7C707070B1B0B1ECECECD2D4
+ D2B5B5B5A0A1A0CDCBCD8C898BB5C2C5AC65677D00007D00008A1414A87678D1
+ D8DBF5FDFEFEFEFEE6E4E6BAB7BA8B888B7D7B7D5857584545454A4A4A505050
+ 595959656565737373838383949494A6A6A6B7B7B7C8C8C8D6D6D6E3E3E3ECEC
+ ECF4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF9F9F9F4F4
+ F4ECECECE3E3E3D6D6D6C8C8C8B7B7B7A6A6A694949483838373737365656565
+ 64657E7C7E8B888BBAB7BAE6E4E6FEFEFEF5FDFED1D8DBA876788A14147D0000
+ 7D0000AC6567B5C2C58C898BCDCBCDA0A1A0B5B5B5D2D4D2ECECECB1B0B17070
+ 707C7D7CC0C1C0F0F1F0EAEBEAD4D5D4B8B9B88888887F7F7FB1B2B1F1F2F1EA
+ EAEA949594616161626362BBBBBBEFEFEFF7F7F7FBFBFBFEFEFEFEFEFEFFFFFF
+ FFFFFFFFFFFFFEFEFEB2B2B2383638525052818081939393888888A2A2A2E4E4
+ E4EFEFEFF6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF7DBA7DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFEEEEEE9B9B9B7A7A7A8B8C8B424142908F90E9E9E9F3F3F3F8F8F8FB
+ FBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDABABAB656665
+ 747574ADAEADE8E9E8E1E1E18787876464648D8E8DB2B4B2DADBDAF2F3F2D4D5
+ D47F807F4B494BA3A4A3DDDCDDADB0ADABAAABAAA8AA919597C2B2B583020282
+ 00008400008200007D0000912A2BB19093DDE7EAF8F8F8FAFAFADCDADCAFACAF
+ 928F926F6E6F5151514747474B4B4B5353535C5C5C6868687777778787879898
+ 98AAAAAABCBCBCCCCCCCDADADAE6E6E6EFEFEFF5F5F5FAFAFAFDFDFDFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFD
+ FDFAFAFAF5F5F5EFEFEFE6E6E6DADADACCCCCCBCBCBCAAAAAA98989887878777
+ 7777686868656465737273928F92AFACAFDCDADCFAFAFAF8F8F8DDE7EAB19093
+ 912A2B7D0000820000840000820000830202C2B2B5919597AAA8AAABAAABADB0
+ ADDDDCDDA3A4A34B494B7F807FD4D5D4F2F3F2DADBDAB2B4B28D8E8D64646487
+ 8787E1E1E1E8E9E8ADAEAD747574606160A0A1A0E1E1E1F5F5F5FAFAFAFDFDFD
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F49494944241428B8C
+ 8B7A7A7A969796E2E2E2F4F4F4F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEA7D7D7D474747848484E3
+ E4E3FAFAFAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFCFCFCF7777775C5B5C8C8C8CCFCFCFE6E7E6BABBBA6363
+ 63636363909090CACBCAEFF0EFDDDEDD8788876B6A6B7E7C7E828282C7C5C786
+ 8485BCC6C9A148487D00008500008400008400008400007F0000800000934142
+ C2BFC2E1E1E2FEFFFFF3F3F3CFCCCFA6A3A68987896564654A4A4A4747474D4D
+ 4D5555555F5F5F6C6C6C7A7A7A8C8C8C9E9E9EAFAFAFC0C0C0D0D0D0DDDDDDE8
+ E8E8F1F1F1F7F7F7FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFEFEFEFBFBFBF7F7F7F1F1F1E8E8E8DDDDDDD0D0D0C0C0C0AFAFAF9E
+ 9E9E8C8C8C7A7A7A6C6C6C6262626D6D6D898789A6A3A6CFCCCFF3F3F3FEFFFF
+ E1E1E2C2BFC29341428000007F00008400008400008400008500007D0000A148
+ 48BCC6C9868485C7C5C78282827E7C7E6B6A6B878887DDDEDDEFF0EFCACBCA90
+ 9090636363636363BABBBAE6E7E6CFCFCF8C8C8C5A595A6F6F6FC3C3C3F3F3F3
+ F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFE7E7E78484844747477D7D7DE6E6E6FAFAFAFBFBFBFDFDFDFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFDFDFDB6B6B6F4F4F4FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F6F7BDBDBD6564
+ 65666666939493D0D1D0EAEBEAACADAC6868687F7F7FA5A6A5DCDDDCEBECEB9D
+ 9D9D7777779C9A9C9593959DA6A8BD9C9E800000840000840000840000840000
+ 840000840000820000810303C4BDC0C2C1C4C9C9CCF0FAFBFFFFFFECEBECC3C0
+ C39E9B9E8280825E5D5E4444444949494F4F4F5757576262627070707F7F7F90
+ 9090A2A2A2B4B4B4C5C5C5D4D4D4E0E0E0EBEBEBF2F2F2F8F8F8FCFCFCFEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F2F2F2EBEBEBE0E0E0D4D4D4C5
+ C5C5B4B4B4A2A2A29090907F7F7F7070706262626968698280829E9B9EC3C0C3
+ ECEBECFFFFFFF0FAFBC9C9CCC2C1C4C4BDC08103038200008400008400008400
+ 00840000840000840000800000BD9C9E9DA6A89593959C9A9C7777779D9D9DEB
+ ECEBDCDDDCA5A6A57F7F7F686868ACADACEAEBEAD0D1D0939493656565615F61
+ B2B2B2EBEBEBF7F7F7FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5B5B4B5FCFCFCFEFEFEFE
+ FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF00EB17FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFE3E3E39B999B5F5F5F737373959595EEEFEEEFF0EFA6
+ A6A67373738484849595958F908FCBCACBC4C2C4848183C4C6C99428287E0000
+ 8400008400008400008400008400008400007C0000AC7374D2E6EAB48E908519
+ 1AAA7D7FD4DCDFF7FDFEFDFDFDE3E1E3B8B5B89694967675765756574646464A
+ 4A4A5151515A5A5A656565747474838383959595A7A7A7B9B9B9C9C9C9D7D7D7
+ E3E3E3EDEDEDF5F5F5F9F9F9FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDF9F9F9F5F5F5EDEDEDE3
+ E3E3D7D7D7C9C9C9B9B9B9A7A7A7959595838383747474656565676667787778
+ 969496B8B5B8E3E1E3FDFDFDF7FDFED4DCDFAA7D7F85191AB48E90D2E6EAAC73
+ 747C00008400008400008400008400008400008400007E0000942828C4C6C984
+ 8183C4C2C4CBCACB8F908F959595848484737373A6A6A6EFF0EFEEEFEE959595
+ 7171715A5A5A929192D9D8D9F6F6F6FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE0E0E0AD
+ AEAD777877898989C4C4C4FBFBFBE6E6E68F8F8F737373212021D0CED0999799
+ A9B3B6B37B7C7E00008500008400008400008400008400008400008000009027
+ 27CAD1D4CBD3D68F24257E00007D0000943637B69EA0E1EDEFFBFFFFF9F9F9D7
+ D4D7ACA9AC8E8B8E6E6C6E5150514747474C4C4C5353535D5D5D696969787878
+ 8888889A9A9AACACACBDBDBDCDCDCDDBDBDBE6E6E6EFEFEFF6F6F6FBFBFBFDFD
+ FDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF6
+ F6F6EFEFEFE6E6E6DBDBDBCDCDCDBDBDBDACACAC9A9A9A888888787878696969
+ 6464647270728E8B8EACA9ACD7D4D7F9F9F9FBFFFFE1EDEFB69EA09436377D00
+ 007E00008F2425CBD3D6CAD1D490272780000084000084000084000084000084
+ 00008500007E0000B37B7CA9B3B6999799D0CED02120217373738F8F8FE6E6E6
+ FBFBFBC4C4C4858585707170A1A2A1D5D5D5F6F6F6FAFAFAFCFCFCFEFEFEFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFDFDFDDBDBDBA3A3A3979797939393D7D7D7FFFFFF
+ CBCBCB666666AEACAE969596CFD2D68D18187900008400008400008400008400
+ 008400008300007F0303B48C8ED2E6EAAA70727C00008400008400007F000081
+ 00009C4F50C0B7BAE9F3F4FEFEFEF2F1F2CCC9CCA4A1A4878587636263484848
+ 4848484D4D4D5656566060606D6D6D7C7C7C8D8D8D9F9F9FB0B0B0C2C2C2D1D1
+ D1DEDEDEE9E9E9F2F2F2F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFE
+ FEFEFBFBFBF8F8F8F2F2F2E9E9E9DEDEDED1D1D1C2C2C2B0B0B09F9F9F8D8D8D
+ 7C7C7C6D6D6D6161616C6B6C878587A4A1A4CCC9CCF2F1F2FEFEFEE9F3F4C0B7
+ BA9C4F508100007F00008400008400007C0000AA7072D2E6EAB48C8E7F030383
+ 00008400008400008400008400008400007900008D1818CFD2D6969596AEACAE
+ 666666CBCBCBFFFFFFD7D7D79191918989898F8F8FC6C6C6EFEFEFF8F8F8FCFC
+ FCFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC
+ D6D6D69998995E5D5EC0C0C0FFFFFF8B8C8B767576AFAFAFACA7ABC6BDC0A659
+ 5A8100007F00008400008400008400007E0000993E3ED0E0E4C4BCBF87141483
+ 00008400008400008400008400007D0000870A0AA56D6EC9C5C8EFF3F4FFFFFF
+ EAE8EAC0BDC09C999C7E7C7E5C5C5C4545454949495050505858586363637171
+ 71808080929292A4A4A4B6B6B6C6C6C6D5D5D5E1E1E1ECECECF3F3F3F8F8F8FC
+ FCFCFEFEFEFEFEFEFCFCFCF8F8F8F3F3F3ECECECE1E1E1D5D5D5C6C6C6B6B6B6
+ A4A4A49292928080807171716363636968697E7D7E9C999CC0BDC0EAE8EAFFFF
+ FFEFF3F4C9C5C8A56D6E870A0A7D000084000084000084000084000083000087
+ 1414C4BCBFD0E0E4993E3E7E00008400008400008400007F0000810000A6595A
+ C6BDC0ACA7ABAFAFAF7675768B8C8BFFFFFFC0C0C05B5A5B7A797AA6A6A6D5D5
+ D5EAEAEAF7F7F7FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00C15DFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF0F0F07D7C7D636363F2F3F2C1C2C14746
+ 47ECEBEC8F8D8F8A8A8CB7C2C5C1A9AC9B3C3D7E0000810000830000840E0FBD
+ A8ABD1E3E7A051537C00008400008400008400008400008400008400007B0000
+ 942F2FCFE0E3B8A5A8D7E0E3F8FEFFFCFCFCE1DFE1B6B3B69492947472745555
+ 554646464A4A4A5252525B5B5B676767757575858585979797A9A9A9BABABACA
+ CACAD8D8D8E4E4E4EDEDEDF4F4F4F7F7F7F7F7F7F4F4F4EDEDEDE4E4E4D8D8D8
+ CACACABABABAA9A9A9979797858585757575676767666566777577949294B6B3
+ B6E1DFE1FCFCFCF8FEFFD7E0E3B8A5A8CFE0E3942F2F7B000084000084000084
+ 00008400008400008400007C0000A05153D1E3E7BDA8AB840E0F830000810000
+ 7E00009B3C3DC1A9ACB7C2C58A8A8C8F8D8FECEBEC474647C1C2C1F2F3F26363
+ 635E5C5EA6A6A6C5C5C5DDDDDDEFEFEFFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF0DAE04FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE4E4
+ E4232323B1B3B1F4F4F4555455666466C2C1C2A7A4A7868486969B9EC2CACDB8
+ 8B8D8E1B1B770000A45C5DD2E6EABAA0A3820B0C840000840000840000840000
+ 840000840000830000840807C0B1B4D0E2E59D4D4E933C3DB8A4A7E3F0F2FDFF
+ FFF7F6F7D4D1D4AAA7AA8C8A8C6968694D4C4D4747474D4D4D5454545E5E5E6B
+ 6B6B7979798989899B9B9BADADADBFBFBFCECECEDADADAE3E3E3E9E9E9E9E9E9
+ E3E3E3DADADACECECEBFBFBFADADAD9B9B9B8989897979796B6B6B6362636F6E
+ 6F8C8A8CAAA7AAD4D1D4F7F6F7FDFFFFE3F0F2B8A4A7933C3D9D4D4ED0E2E5C0
+ B1B4840807830000840000840000840000840000840000840000820B0CBAA0A3
+ D2E6EAA45C5D7700008E1B1BB88B8DC2CACD969B9E868486A7A4A7C2C1C26664
+ 66555455F4F4F4B1B3B12121219F9F9FB2B2B2CECECEE4E4E4F3F3F3FCFCFCFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00E80EFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFDFDFDF5F5F5605F604E4E4EFFFFFF939393191919BEBFBEF0
+ EFF0C9C6C99C999C848284A2ABADC6C6C9AB6F70C5C1C4CACED19535367E0000
+ 8400008400008400008400008400008500007D0101A55F60D1E5E8B99B9D8000
+ 007C00008300009E5557C3BDC0ECF7F9FFFFFFF0EFF0C9C6C9A29FA286848662
+ 61624545454848484E4E4E5656566161616E6E6E7D7D7D8E8E8EA0A0A0B1B1B1
+ C1C1C1CCCCCCD2D2D2D2D2D2CCCCCCC1C1C1B1B1B1A0A0A08E8E8E7D7D7D6E6E
+ 6E6262626B6A6B868486A29FA2C9C6C9F0EFF0FFFFFFECF7F9C3BDC09E555783
+ 00007C0000800000B99B9DD1E5E8A55F607D0101850000840000840000840000
+ 8400008400007E0000953536CACED1C5C1C4AB6F70C6C6C9A2ABAD8482849C99
+ 9CC9C6C9F0EFF0BEBFBE191919939393FFFFFF4E4E4E4E4D4EA8A8A8C1C1C1D8
+ D8D8EAEAEAF6F6F6FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9C1C1C1151515B1
+ B1B1D8D8D8202020A1A1A1E5E4E5FEFEFEE8E6E8BDBABD939093868486AFB9BC
+ CAC7CAC6B9BC7B00007F00008400008400008400008400008400008000008B16
+ 16C8C8CBCCD4D89330308000008400008400007D0000890F0FA67072CFD3D6F1
+ F3F4FEFEFEE8E6E8BEBBBE9A979A7B7A7B5B5A5B4545454A4A4A505050595959
+ 646464727272828282929292A2A2A2AEAEAEB5B5B5B5B5B5AEAEAEA2A2A29292
+ 928282827272726464646868687C7A7C9A979ABEBBBEE8E6E8FEFEFEF1F3F4CF
+ D3D6A67072890F0F7D0000840000840000800000933030CCD4D8C8C8CB8B1616
+ 8000008400008400008400008400008400007F00007B0000C6B9BCCAC7CAAFB9
+ BC868486939093BDBABDE8E6E8FEFEFEE8E7E8A2A1A2202020D8D8D8B1B1B115
+ 15159F9F9FBDBDBDD2D2D2E3E3E3F0F0F0F9F9F9FEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF006B13FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+ FEFEFBFBFBDFDFDF2625266261626867683534356D6C6DB7B5B7CECDCEF4F4F4
+ FBFBFBDEDCDEAFACAF8A888A8C8A8CB3B1B4BEA2A4952E2F7D00008200008400
+ 008400008500007F0303AE7A7CD3EAEDAF80817D000083000084000084000084
+ 00008200007D00008D2A2BB8A4A7D2CED0FAFEFFFAFAFADCDADCB3B0B3939093
+ 6F6E6F5151514646464B4B4B5252525C5C5C6868687575758383838D8D8D9393
+ 939393938D8D8D838383757575686868656465737273939093B3B0B3DCDADCFA
+ FAFAFAFEFFD2CED0B8A4A78D2A2B7D0000820000840000840000840000830000
+ 7D0000AF8081D3EAEDAE7A7C7F03038500008400008400008200007D0000952E
+ 2FBEA2A4B3B1B48C8A8C8A888AAFACAFDEDCDEFBFBFBF6F6F6D4D3D4BFBEBF6E
+ 6D6E353435686768626162232223C2C2C2D4D4D4E1E1E1EDEDEDF5F5F5FBFBFB
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDCFCFCF100F10838383A1A2A18E8F8E
+ 9A9A9A9D9D9DCCCBCCC7C6C7E1E1E1FCFCFCF5F4F5D1CFD1A4A1A4868486999F
+ A2C3CACDB584868C15157D00008300007E0000942F2FCCD5D8C5C0C38C1C1D80
+ 0000840000840000840000840000840000830000790000AE7A7DCBDADEBCACAF
+ E6F2F4FEFFFFF5F4F5D1CFD1A8A5A88A888A6765674B4B4B4747474D4D4D5454
+ 545E5E5E6767676F6F6F7474747474746F6F6F6767676261626E6D6E8A888AA8
+ A5A8D1CFD1F5F4F5FEFFFFE6F2F4BCACAFCBDADEAE7A7D790000830000840000
+ 8400008400008400008400008000008C1C1DC5C0C3CCD5D8942F2F7E00008300
+ 007D00008C1515B58486C3CACD999FA2868486A4A1A4D1CFD1F5F4F5FBFBFBE0
+ DFE0CAC9CAD5D5D5A2A2A29C9C9C8E8F8EA1A2A1838383100F10BFBFBFE6E6E6
+ EEEEEEF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF001F66FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFECDCECD
+ 5B5A5B797979AAABAACDCECD9FA09F7C7C7C666766878787CECDCED9D8D9E9E8
+ E9FFFFFFEEEDEEC6C3C6999799848284A5AFB1C6C3C6AB6869840000800100B9
+ 9D9FD3E9ECA562637D00008400008400008400008400008400008400007F0000
+ 953233CDD6DAC6C2C5890F0FA05C5EC6C3C6EEF9FAFFFFFFEEEDEEC6C3C6A09D
+ A0848284615F614444444949494E4E4E5353535959595C5C5C5C5C5C59595969
+ 6769848284A09DA0C6C3C6EEEDEEFFFFFFEEF9FAC6C3C6A05C5E890F0FC6C2C5
+ CDD6DA9532337F00008400008400008400008400008400008400007D0000A562
+ 63D3E9ECB99D9F800100840000AB6869C6C3C6A5AFB1848284999799C6C3C6EE
+ EDEEFFFFFFE6E5E6D6D4D6CECDCE8989896869687C7C7C9FA09FCDCECDAAABAA
+ 797979595859C3C3C3F3F3F3F8F8F8FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFF9F9F9CFCFCF9493948D8C8D4747479C9B9C5E5D5E5E5E
+ 5EA6A7A6EBEBEBF7F7F7EBEAEBE0DEE0F2F1F2FEFEFEE6E4E6BAB7BA918E9187
+ 8688B1BDC0C4B3B6A96364D0E0E3B99D9F840909810000840000840000840000
+ 840000840000820000810000BCA5A8D1E4E8A255567D00007D00008A1414A876
+ 78D1D8DBF5FDFEFEFEFEE6E4E6BBB8BB9895987977795A595A4545454747474A
+ 4A4A4C4C4C5F5E5F797779989598BBB8BBE6E4E6FEFEFEF5FDFED1D8DBA87678
+ 8A14147D00007D0000A25556D1E4E8BCA5A88100008200008400008400008400
+ 00840000840000810000840909B99D9FD0E0E3A96364C4B3B6B1BDC087868891
+ 8E91BAB7BAE6E4E6FEFEFEEDEDEDD6D5D6E2E1E2F3F3F3EBEBEBA7A8A75F5F5F
+ 5F5D5F9C9B9C4747478C8B8C929192CBCBCBF4F4F4FBFBFBFDFDFDFEFEFEFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF002D71FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE8E8
+ E8E3E3E3EFEFEFEEEFEEFBFBFBF7F8F7FEFEFEFEFEFEFFFFFFF7F7F7E7E6E7E2
+ E1E2F9F9F9F9F9F9D9D7D9ACA9AC898689919496BDC5C8D1D6D9AA6C6D770000
+ 8300008400008400008400008400008500007E00009E4D4ED1E4E8BFAEB08200
+ 008200008400008100007D0000933031B3979ADFEAEDFAF9FAF9F9F9D9D7D9AF
+ ACAF8F8D8F6E6C6E4E4E4E4F4F4F6E6C6E8F8D8FAFACAFD9D7D9F9F9F9FAF9FA
+ DFEAEDB3979A9330317D0000810000840000820000820000BFAEB0D1E4E89E4D
+ 4E7E0000850000840000840000840000840000830000770000AA6C6DD1D6D9BD
+ C5C8919496898689ACA9ACD9D7D9F9F9F9F8F7F8DBD9DBDCDCDCEEEDEEF8F8F8
+ FCFCFCFEFEFEF7F8F7FCFCFCEEEFEEEFEFEFE3E3E3E7E7E7E9E9E9FEFEFEFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF677161FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFF4F4F4E3E2E3E7E6E7FEFEFEF3F3F3CFCCCFA19EA1
+ 858385969295C2C3C6B17D7F890F107D00008400008400008400008000008708
+ 09C3B8BBCDD9DD993B3C7D00008500008400008400008400007F000080000093
+ 4042C2BFC2E1E1E3FEFFFFF3F3F3CFCCCFA3A0A3828082898789A6A3A6CFCCCF
+ F3F3F3FEFFFFE1E1E3C2BFC29340428000007F00008400008400008400008500
+ 007D0000993B3CCDD9DDC3B8BB8708098000008400008400008400007D000089
+ 0F10B17D7FC2C3C6969295858385A19EA1CFCCCFF3F3F3FCFCFCE0DFE0D9D7D9
+ EAE9EAF7F7F7FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00310EFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF0EFF0
+ E0DEE0EDECEDFFFFFFECEBECC3C0C3979597848284A8B2B5C6C0C3A860628300
+ 007E00008400007D0000AA7173D4EBEFB58F917F000084000084000084000084
+ 0000840000840000820000820707C4BDC0C1BFC2C9C9CCF0FAFBC3C2C3858385
+ 9E9B9EC3C0C3ECEBECFFFFFFF0FAFBC9C9CCC1BFC2C4BDC08207078200008400
+ 008400008400008400008400008400007F0000B58F91D4EBEFAA71737D000084
+ 00007E0000830000A86062C6C0C3A8B2B5848284979597C3C0C3ECEBECFFFFFF
+ E8E8E8D6D4D6E5E4E5F5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
+ C010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFBFAFBEBEAEBDFDEDFF4F3F4FCFCFCE1DFE1B4B1
+ B48F8C8F88888AB7C2C5C1A9AC9B3C3D7A0000902223C8C8CCC9CDD09023237E
+ 00008400008400008400008400008400008400007C0000AC7576D1E5E9B28789
+ 833A3B867D7F949294B6B3B6E3E1E3FDFDFDF8FEFFD7E0E3AC838685191AB287
+ 89D1E5E9AC75767C00008400008400008400008400008400008400007E000090
+ 2323C9CDD0C8C8CC9022237A00009B3C3DC1A9ACB7C2C588888A8F8C8FB4B1B4
+ E1DFE1FCFCFCEFEEEFD7D5D7E0DFE0F2F1F2F9F9F9FCFCFCFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF00D021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7
+ F7E6E5E6E4E2E4FBFBFBF8F7F8D7D4D7A9A6A987858793989AC0C9CCB89193B5
+ 8F91D1E3E8A86A6C7E0000850000840000840000840000840000840000800000
+ 902A2ACAD0D4BEC2C58260618E8B8EACA9ACD7D4D7F8F7F8FCFFFFE1EDEFB69E
+ A09436377E00007D00008D1F1FCACFD2CAD0D4902A2A80000084000084000084
+ 00008400008400008500007E0000A86A6CD1E3E8B58F91B89193C0C9CC93989A
+ 878587A9A6A9D7D4D7F8F7F8F8F8F8DCDADCDCDADCEDEDEDF8F8F8FBFBFBFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF004D00FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F2F3E3E1E3E8E8E8FFFEFFF2F1F2CC
+ C9CC9E9C9E8482849FA7AAC4C3C6D1D6DA8A1313790000840000840000840000
+ 8400008400008300007F0404B38E91A2A9AC878587A4A1A4CCC9CCF2F1F2FEFE
+ FEE9F2F4C0B7BA9C4F508100007F00008400008400007C0000A8696AD2E6EAB5
+ 8F927F04048300008400008400008400008400008400007900008A1313D1D6DA
+ C4C3C69FA7AA8482849E9C9ECCC9CCF2F1F2FEFDFEE1E0E1D8D6D8E9E8E9F7F7
+ F7FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF004600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+ FEFEEFEEEFE0DEE0EEEDEEFFFFFFEAE8EAC0BDC0959295858385A39FA1C6BCBF
+ A6595A8100007F00008400008400008400007D00008F5D5E8584869C999CC0BD
+ C0EAE8EAFFFFFFEFF4F5C8C5C8A67072870A0A7D000084000084000084000084
+ 0000830000861010C2B7B9CFE0E49B45457D00008400008400008400007F0000
+ 810000A6595AC6BCBFA39FA1858385959295C0BDC0EAE8EAFFFFFFE8E7E8D3D1
+ D3E2E1E2F3F3F3FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72B972FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E7E6E7E0DEE0F5F5F5FBFBFB
+ DEDCDEB2AFB28B898B8C8D8FB9C5C8C0A4A69835367D00008100008221217E66
+ 67939093B3B0B3DEDCDEFBFBFBF9FEFFDAE4E7B8A5A8CFDFE39531327B000084
+ 00008400008400008400008400008400007C00009F4F4FD0E2E6BCA6A9840F0F
+ 8300008100007D0000983536C0A4A6B9C5C88C8D8F8B898BB2AFB2DEDCDEFBFB
+ FBECECECCBC9CBCCCBCCE0E0E0EFEFEFF6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFB
+ F6F6F6E9E8E9D7D6D7DBD9DBF9F9F9F7F6F7D4D1D4A6A3A6868486969B9EC2CA
+ CDB18A8C835C5D8C8A8CAAA7AAD4D1D4F7F6F7FDFFFFE3F0F2B8A4A7943C3D9B
+ 4647D1E3E6C0B1B3860C0D830000840000840000840000840000840000840000
+ 820909B89B9CD2E6EAA662647700008E1B1BB88B8DC2CACD969B9E868486A6A3
+ A6D4D1D4F7F6F7F3F3F3C3C2C3ABA9ABB5B4B5C7C7C7D8D8D8E6E6E6EFEFEFF6
+ F6F6FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF42A43BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FEFEFEFBFBFBF8F8F8F2F2F2EAEAEAE0E0E0D2D2D2C2C2C2BAB8BAD5D5D5FEFE
+ FEF0EFF0C9C6C99B989B807F80868486A29FA2C9C6C9F0EFF0FFFFFFECF7F9C3
+ BDC09E55578300007D00007F0000B79698D2E6EAA662637D0101850000840000
+ 8400008400008400008400007E0000932F2FC8CBCEC5C1C4AB6F70C6C6C9A2AB
+ AD8482849C999CC9C6C9F0EFF0FDFDFDC6C5C69290928281828787879B9B9BB0
+ B0B0C2C2C2D2D2D2E0E0E0EAEAEAF2F2F2F8F8F8FBFBFBFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00C154FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFCFCFCF9F9F9F4F4F4ECECECE3E3E3D6D6D6C8C8C8B7B7
+ B7A5A5A5959595929192A8A6A8DDDCDDD1D0D18A888A9A979ABBB8BBE6E4E6FE
+ FEFEF0EEEECDCED1A776788A14147D0000830000840000800000922E2ECDD7DB
+ C7C6C98D1C1D8000008400008400008400008400008400008000007A0000C4B4
+ B7CAC7CAB2BDC0878688918E91BAB7BAE8E6E8FEFEFED8D7D89796976C6B6C5A
+ 5A5A626262707070818181939393A5A5A5B7B7B7C8C8C8D6D6D6E3E3E3ECECEC
+ F4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
+ 9728FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF5F5F5EFEFEFE6E6E6DADA
+ DACBCBCBBCBCBCAAAAAA9898988686867676766868686C6B6C7B7A7B918F91B1
+ AEB1DCDADCFAFAFAFAFFFFDAE3E5C4C7CBA25F60780000820000840000840000
+ 8400008300007C0000AF7D7FD4EBEFAE7C7D7F04058500008400008400008200
+ 007D0000952E2FBC9C9EB5B4B78C8A8C8A888AAFACAFDCDADCFAFAFAF1F1F1BF
+ BDBF8C898C5D5C5D4646464B4B4B5252525C5C5C686868767676868686989898
+ AAAAAABCBCBCCBCBCBDADADAE6E6E6EFEFEFF5F5F5FAFAFAFDFDFDFEFEFEFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF003F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFBFBFBF7F7F7F0F0
+ F0E8E8E8DDDDDDD0D0D0C0C0C0AFAFAF9D9D9D8B8B8B7A7A7A6B6B6B6363636F
+ 6E6F8A888AA8A5A8D1CFD1F5F4F5FEFFFFE6F2F4BBAAADA46365D1E3E7B59395
+ 8208088200008400008400008400008400008100008A191AC5BFC2CDD6D99634
+ 367D00008300007D00008C1515B58486C3CACD999FA2868486A4A1A4D1CFD1F5
+ F4F5FCFCFDE6E6E7E0DEE0CFCDCFA8A5A88A888A6765674B4B4B4747474D4D4D
+ 5555555F5F5F6B6B6B7A7A7A8B8B8B9D9D9DAFAFAFC0C0C0D0D0D0DDDDDDE8E8
+ E8F0F0F0F7F7F7FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF007D00FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFB
+ FBF8F8F8F2F2F2EAEAEAE0E0E0D4D4D4C5C5C5B3B3B3A2A2A29090907F7F7F6F
+ 6F6F6262626A696A848284A09DA0C6C3C6EEEDEEFFFFFFEEF9FAC6C3C6A05C5E
+ 840000830808BBA3A6D2E8EBA054557D00008400008400008400008400008400
+ 007D0000A35B5CD3EAEEB99D9F810405840000AB6869C6C3C6A5AFB184828499
+ 9799C6C3C6EEEDEEFFFFFFD4BABBB39193C5C2C5EEF9FAFFFFFFEEEDEEC6C3C6
+ A09DA0848284615F614444444949494F4F4F5757576262626F6F6F7F7F7F9090
+ 90A2A2A2B3B3B3C5C5C5D4D4D4E0E0E0EAEAEAF2F2F2F8F8F8FBFBFBFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEFCFCFCF9F9F9F4F4F4EDEDEDE3E3E3D7D7D7C8C8C8B8B8B8A7A7A795
+ 9595838383747474656565676667787778969496B8B5B8E3E1E3FDFDFDF7FDFE
+ D4DCDFAA7D7F8C191A7D00008300007D00009A3F40CEDBDEC1B6B98715158200
+ 00840000840000840000840000820000840A0BBA9EA0D0E0E4A86163C3AEB1B4
+ C0C388888A8F8C8FB7B4B7E3E1E3FDFDFDE7DBDCAF7E80953738810B0C8C191A
+ AA7D7FD4DCDFF7FDFEFDFDFDE3E1E3B8B5B89694967675765756574646464A4A
+ 4A5050505A5A5A656565747474838383959595A7A7A7B8B8B8C8C8C8D7D7D7E3
+ E3E3EDEDEDF4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF5F5F5EFEFEFE6E6E6DADADACCCCCCBC
+ BCBCABABAB9999998888887777776969696463647270728F8D8FAFACAFD9D7D9
+ F9F9F9FAF9FAD8D8DAB196989330317D00008100008400008400008500008006
+ 06B28689D3EAEEAB72737C0000830000840000840000840000820000780000A8
+ 6667D1D6D9BDC4C7919496898689ACA9ACD9D7D9F9F9F9F7F8F9CCBDBF974849
+ 8C15168400008400008100007D0000933031B19698D8D8DAFAF9FAF9F9F9D9D7
+ D9AFACAF8F8D8F6E6C6E5150514747474C4C4C5353535C5C5C69696977777788
+ 8888999999ABABABBCBCBCCCCCCCDADADAE6E6E6EFEFEFF5F5F5FAFAFAFDFDFD
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF009E1EFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF7F7F7F1F1F1E9E9E9DE
+ DEDED1D1D1C1C1C1B0B0B09E9E9E8C8C8C7B7B7B6C6C6C6262626D6D6D898789
+ A6A3A6CFCCCFF3F3F3FEFFFFE8F4F6C3C0C3BAA8AB7A00007F00008400008400
+ 008400008400008400008000008F2223C9CDD0CAD0D48F262780000084000084
+ 00007D0000890F10B27D7FC3C4C7969294858385A19EA1CFCCCFF3F3F3FAF6F6
+ DBDBDEC6C7CA973C3D8000008400008400008400008400008400007F00007A00
+ 00BAA8ABC3C0C3E8F4F6FEFFFFF3F3F3CFCCCFA6A3A68987896564654A4A4A48
+ 48484D4D4D5656565F5F5F6C6C6C7B7B7B8C8C8C9E9E9EB0B0B0C1C1C1D1D1D1
+ DEDEDEE9E9E9F1F1F1F7F7F7FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF09D710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F3
+ F3F3EBEBEBE1E1E1D4D4D4C5C5C5B5B5B5A3A3A3919191808080707070636363
+ 6968697E7D7E9C999CC0BDC0ECEBECFFFFFFF2FBFCCCCED1A1696BC7C5C8C6C3
+ C7922B2B7E00008400008400008400008400008400008500007D0101A96C6FD3
+ E8ECB38C8E7E00007D0000810000A6595AC5BCBFABB6B9848284959295C0BDC0
+ EAE8EAFFFFFFD6BEBFBFACAFCEDEE1AA6E717D01018500008400008400008400
+ 008400008400007E0000922B2BC6C3C7C7C5C8A1696BCCCED1F2FBFCFFFFFFEC
+ EBECC0BDC09C999C7E7C7E5C5C5C454545494949505050585858636363707070
+ 808080919191A3A3A3B5B5B5C5C5C5D4D4D4E1E1E1EBEBEBF3F3F3F8F8F8FCFC
+ FCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00876CFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD
+ FDFDFAFAFAF5F5F5EEEEEEE4E4E4D8D8D8C9C9C9B9B9B9A7A7A7969696848484
+ 747474666666666566767476949294B6B3B6E1DFE1FCFCFCF8FEFFD7E0E3AC83
+ 868E1F1F770000A96E6FD3E8ECB5919481090984000084000084000084000084
+ 0000840000820000881212C3BABDCFDFE2973C3D983C3DC1A9ACB7C2C58A8B8D
+ 8D8B8DB4B1B4E1DFE1FCFCFCEFEBECBC999CA46365CEDDE0C3BABD8812128200
+ 00840000840000840000840000840000840000810909B59194D3E8ECA96E6F77
+ 00008E1F1FAC8386D7E0E3F8FEFFFCFCFCE1DFE1B6B3B6949294747274555555
+ 4646464A4A4A5151515A5A5A666666747474848484969696A7A7A7B9B9B9C9C9
+ C9D8D8D8E4E4E4EEEEEEF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEFDFDFDFBFBFBF6F6F6EFEFEFE7E7E7DBDBDBCECECEBEBEBEADADAD
+ 9B9B9B8989897878786A6A6A646464716F718E8B8EACA9ACD7D4D7F8F7F8FCFF
+ FFE1EDEFB69EA09436377E0000810000820000861313BFAFB2CFDEE29D4A4A7C
+ 00008400008400008400008400008400008400007B0000983B3CD2E5E8C4AEB1
+ C0C9CC93989A878587A9A6A9D7D4D7F8F7F8F5F5F5C2C0C2A4A6A9C0C8CBC4AE
+ B1D2E5E8983B3C7B00008400008400008400008400008400008400007C00009D
+ 4A4ACFDEE2BFAFB28613138200008100007E0000943637B69EA0E1EDEFFCFFFF
+ F8F7F8D7D4D7ACA9AC8E8B8E6B6A6B4F4E4F4747474C4C4C5353535D5D5D6A6A
+ 6A7878788989899B9B9BADADADBEBEBECECECEDBDBDBE7E7E7EFEFEFF6F6F6FB
+ FBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF002933FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F2F2F2E9E9E9DFDFDFD1D1D1
+ C2C2C2B1B1B1A0A0A08E8E8E7D7D7D6E6E6E6161616C6B6C878587A4A1A4CCC9
+ CCF2F1F2FFFEFFE2DFE1C1B7BA9C4F508100007F00008400008400008400007D
+ 00009D4B4CD1E2E6C0B1B48611118300008400008400008400008400007D0000
+ 880A0AB47F81C2BEC19DA0A38482849E9C9ECCC9CCF2F1F2FEFDFEE9E8E9DDDB
+ DDCAC7CA9E9C9E8482849DA0A3C2BEC1B47F81880A0A7D000084000084000084
+ 0000840000830000861111C0B1B4D1E2E69D4B4C7D0000840000840000840000
+ 7F00008100009C4F50C1B7BAE2DFE1FFFEFFF2F1F2CCC9CCA4A1A48785876362
+ 634848484848484E4E4E5656566060606E6E6E7D7D7D8E8E8EA0A0A0B1B1B1C2
+ C2C2D1D1D1DFDFDFE9E9E9F2F2F2F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F3F3F3ECECEC
+ E2E2E2D5D5D5C6C6C6B6B6B6A4A4A49292928181817171716464646868687C7A
+ 7C9A979ABEBBBEE8E6E8FEFEFEEFEEEFCBC8CBC3C6C98B16167A000084000084
+ 0000840000840000840000830000800606B89A9CD1E4E8A663647C0000840000
+ 8400007F0000800000A35253C5B8BBADB5B8858385939093BDBABDE8E6E8FEFE
+ FEEBEAEBD2CFD2D3D1D3EEEDEEFEFEFEE8E6E8BDBABD939093858385ADB5B8C5
+ B8BBA352538000007F00008400008400007C0000A66364D1E4E8B89A9C800606
+ 8300008400008400008400008400008400007A00008B1616C3C6C9CBC8CBEFEE
+ EFFEFEFEE8E6E8BEBBBE9A979A7B7A7B5B5A5B4545454A4A4A50505059595964
+ 6464717171818181929292A4A4A4B6B6B6C6C6C6D5D5D5E2E2E2ECECECF3F3F3
+ F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFA
+ F5F5F5EEEEEEE5E5E5D9D9D9CBCBCBBABABAA9A9A99797978686867676766868
+ 68666566747374939093B3B0B3DEDCDEFBFBFBF6F6F6D3D0D3C0BCC0C4C1C4CC
+ D6D9A45F607F00008500008400008400008400008400008400007F0000933233
+ CDD7DAC7C7CB8C1D1D7E00007D0000983536C0A4A6B9C5C88C8E908B898BB2AF
+ B2DEDCDEFBFBFBF5F5F5D7D5D7DCDADCEEEEEEF3F3F3E7E6E7E1DFE1F6F6F6FB
+ FBFBDEDCDEB2AFB28B898B8C8E90B9C5C8C0A4A69835367D00007E00008C1D1D
+ C7C7CBCDD7DA9332337F00008400008400008400008400008400008500007F00
+ 00A45F60CCD6D9C4C1C4C0BCC0D3D0D3F6F6F6FBFBFBDEDCDEB3B0B393909372
+ 70725353534646464B4B4B5252525C5C5C686868767676868686979797A9A9A9
+ BABABACBCBCBD9D9D9E5E5E5EEEEEEF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ FEFEFEFBFBFBF6F6F6F0F0F0E7E7E7DCDCDCCECECEBFBFBFADADAD9B9B9B8A8A
+ 8A7A7A7A6B6B6B6463646F6E6F8C8A8CAAA7AAD4D1D4F7F6F7FCFCFCDCDADCC1
+ BEC1C3C0C3C6C3C6C6C3C6C6C5C8C6C5C88F1E1F7F0000840000840000840000
+ 8400008400008300007C0000AF7F81D2E6EAB08385871B1BB88B8DC2CACD969B
+ 9E868486A6A3A6D4D1D4F7F6F7FBFBFBDCDADCCECCCEE9E9E9F5F5F5FAFAFAFD
+ FDFDFEFEFEF6F6F6D6D4D6DFDDDFFCFCFCF7F6F7D4D1D4A6A3A6868486969B9E
+ C2CACDB88B8D871B1BB08385D2E6EAAF7F817C00008300008400008400008400
+ 008400008400007F00008F1E1FC6C5C8C6C5C8C6C3C6C6C3C6C3C0C3C1BEC1DC
+ DADCFCFCFCF7F6F7D4D1D4AAA7AA8C8A8C6968694D4C4D4747474D4D4D545454
+ 5F5F5F6B6B6B7A7A7A8A8A8A9B9B9BADADADBFBFBFCECECEDCDCDCE7E7E7F0F0
+ F0F6F6F6FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF005934FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F2F2F2EAEAEAE0E0E0D3D3D3C3C3C3B3B3
+ B3A1A1A18F8F8F7D7D7D6E6E6E6161616A696A868486A09DA0C6C3C6EEEDEEFF
+ FFFFE5E4E5C6C3C6C1BDC1C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CDD8DBB08385
+ 7F0000840000840000840000840000840000840000810000850D0DC6C3C6CCC8
+ CBC6C3C6A5AFB1848284999799C9C6C9EEEDEEFFFFFFE7E6E7CDCACDDDDCDDF4
+ F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFE9E8E9D3D0D3E9E8E9
+ FFFFFFEEEDEEC9C6C9999799848284A5AFB1C6C3C6CCC8CBC6C3C6850D0D8100
+ 008400008400008400008400008400008400007F0000B08385CDD8DBC6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C1BDC1C6C3C6E5E4E5FFFFFFEEEDEEC6C3C6A09DA0
+ 868486615F614444444848484E4E4E5656566161616E6E6E7D7D7D8F8F8FA1A1
+ A1B3B3B3C3C3C3D3D3D3E0E0E0EAEAEAF2F2F2F8F8F8FBFBFBFEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF137801FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF9F9F9F4F4F4ECECECE3E3E3D6D6
+ D6C8C8C8B7B7B7A6A6A6949494828282727272656565676667797779989598BB
+ B8BBE6E4E6FEFEFEF1F0F1CDCACDC0BCC0C5C2C5C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C4C7CBD2D49635367E00008400008400008400008400008000
+ 007F0000994142CBC7CAABAAAD878688918E91BAB7BAE6E4E6FEFEFEEFEEEFD0
+ CDD0D7D5D7EEEEEEF8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFAFAFAE1E0E1D4D1D4F1F1F1FEFEFEE6E4E6BAB7BA918E918786
+ 88ABAAADCBC7CA9941427F00008000008400008400008400008400007E000096
+ 3536CBD2D4C6C4C7C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C5C2C5C0BCC0
+ CDCACDF1F0F1FEFEFEE6E4E6BBB8BB9895987977795A595A4545454A4A4A5050
+ 50595959656565727272828282949494A6A6A6B7B7B7C8C8C8D6D6D6E3E3E3EC
+ ECECF4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFAFAFAF5F5F5EFEF
+ EFE6E6E6DADADACCCCCCBCBCBCAAAAAA98989887878777777768686865646573
+ 7273918F91B1AEB1DCDADCFAFAFAF8F8F8D5D3D5C0BDC0C4C1C4C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C9CED1BBA3A68200008200
+ 008400008200007D0000952E2FBE9EA0BCC7CA8C8A8C8A888AAFACAFDCDADCFA
+ FAFAF7F7F7D6D4D6D1CFD1E8E8E8F6F6F6FBFBFBFDFDFDFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4DAD9DAD9D8
+ D9F8F8F8FAFAFADCDADCAFACAF8A888A8C8A8CBCC7CABE9EA0952E2F7D000082
+ 0000840000820000820000BBA3A6C9CED1C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C4C1C4C0BDC0D5D3D5F8F8F8FAFAFADCDADCB1AE
+ B1918F916F6E6F5151514747474B4B4B5353535C5C5C68686877777787878798
+ 9898AAAAAABCBCBCCCCCCCDADADAE6E6E6EFEFEFF5F5F5FAFAFAFDFDFDFEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
+ C30BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFBFB
+ FBF7F7F7F1F1F1E8E8E8DDDDDDD0D0D0C0C0C0AFAFAF9E9E9E8C8C8C7A7A7A6C
+ 6C6C6363636F6E6F8A888AA8A5A8D1CFD1F5F4F5FDFDFDDEDDDEC2BFC2C2BFC2
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6CEDCDF9F51527E00007D00008C1515B58486C3CACD999FA2868486A4
+ A1A4D1CFD1F5F4F5FCFCFCDDDCDDCDCBCDE2E2E2F5F5F5FAFAFAFDFDFDFEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFEEEDEED6D4D6E0DFE0FDFDFDF5F4F5D1CFD1A4A1A486
+ 8486999FA2C3CACDB584868C15157D00007E00009F5152CEDCDFC6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C2BF
+ C2C2BFC2DEDDDEFDFDFDF5F4F5D1CFD1A8A5A88A888A6867684B4B4B4747474D
+ 4D4D5555555F5F5F6C6C6C7A7A7A8C8C8C9E9E9EAFAFAFC0C0C0D0D0D0DDDDDD
+ E8E8E8F1F1F1F7F7F7FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEFCFCFCF8F8F8F2F2F2EBEBEBE0E0E0D4D4D4C5C5C5B4B4B4A2A2A290
+ 90907F7F7F7070706262626968698280829E9B9EC3C0C3ECEBECFFFFFFEAE9EA
+ C7C4C7C0BDC0C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C7C8CBC2B8BB870B0BA86062C6C0C3A8
+ B2B5848284979597C3C0C3ECEBECFFFFFFE9E8E9CECBCEDBD9DBF2F2F2F8F8F8
+ FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE6E5E6D2
+ D0D2EBEAEBFFFFFFECEBECC3C0C3979597848284A8B2B5C6C0C3A86062870B0B
+ C2B8BBC7C8CBC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C0BDC0C7C4C7EAE9EAFFFFFFECEBECC3
+ C0C39E9B9E8280825E5D5E4444444949494F4F4F5757576262627070707F7F7F
+ 909090A2A2A2B4B4B4C5C5C5D4D4D4E0E0E0EBEBEBF2F2F2F8F8F8FCFCFCFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFEFEFEFCFCFCF9F9F9F4F4F4EDEDEDE3E3E3D7D7D7C8C8C8B8
+ B8B8A7A7A7959595838383747474656565676667787778969496B8B5B8E3E1E3
+ FDFDFDF3F2F3CECCCEC0BCC0C5C2C5C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6D2
+ DEE2C4B1B3B4C0C388888A8F8C8FB7B4B7E3E1E3FDFDFDF1F0F1D0CED0D5D4D5
+ EDEDEDF8F8F8FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFF8F8F8DFDEDFD4D2D4F3F2F3FDFDFDE3E1E3B7B4B7
+ 8F8C8F88888AB4C0C3C4B1B3D2DEE2C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C5
+ C2C5C0BCC0CECCCEF3F2F3FDFDFDE3E1E3B8B5B8969496767576575657464646
+ 4A4A4A5151515A5A5A656565747474838383959595A7A7A7B8B8B8C8C8C8D7D7
+ D7E3E3E3EDEDEDF4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF6F6F6EFEFEFE6E6E6DA
+ DADACDCDCDBDBDBDABABAB9999998888887777776969696464647270728F8D8F
+ AFACAFD9D7D9F9F9F9FAF9FAD7D5D7C0BDC0C4C0C4C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C8C5C8CDCACDB7B2B5919396898689ACA9ACD9D7D9F9F9F9F9F8F9
+ D8D6D8D0CED0E7E6E7F6F6F6FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F2F3
+ D9D7D9DBD9DBFAF9FAF9F9F9D9D7D9ACA9AC898689919396B7B2B5CDCACDC8C5
+ C8C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C4C0C4C0BDC0D7D5D7FAF9FAF9F9F9
+ D9D7D9AFACAF8F8D8F6E6C6E5150514747474C4C4C5353535D5D5D6969697777
+ 77888888999999ABABABBDBDBDCDCDCDDADADAE6E6E6EFEFEFF6F6F6FBFBFBFD
+ FDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF7F7F7F1
+ F1F1E9E9E9DEDEDED1D1D1C2C2C2B0B0B09E9E9E8C8C8C7C7C7C6D6D6D616161
+ 6C6B6C878587A4A1A4CCC9CCF2F1F2FFFEFFE3E2E3C4C1C4C1BEC1C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6CDCACDC3C0C39A979A8482849E9C9ECCC9CC
+ F2F1F2FFFEFFE3E2E3CDCBCDE0DFE0F5F5F5F9F9F9FCFCFCFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEAEBD4D2D4E5E4E5FFFEFFF2F1F2CCC9
+ CC9E9C9E8482849A979AC3C0C3CDCACDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C1BEC1C4C1C4E3E2E3FFFEFFF2F1F2CCC9CCA4A1A48785876362634848
+ 484848484D4D4D5656566060606D6D6D7C7C7C8C8C8C9E9E9EB0B0B0C2C2C2D1
+ D1D1DEDEDEE9E9E9F1F1F1F7F7F7FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFC
+ FCFCF8F8F8F3F3F3ECECECE1E1E1D4D4D4C5C5C5B5B5B5A4A4A4929292808080
+ 7171716363636968697E7D7E9C999CC0BDC0EAE8EAFFFFFFECEBECC9C6C9C0BD
+ C0C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CBC8CBC9C6C9A4A2A4858385
+ 959295C0BDC0EAE8EAFFFFFFEBEAEBCDCCCDD9D8D9F1F1F1F8F8F8FBFBFBFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD
+ FDE4E3E4D3D0D3EDECEDFFFFFFEAE8EAC0BDC0959295858385A4A2A4C9C6C9CB
+ C8CBC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C0BDC0C9C6C9ECEBECFFFF
+ FFEAE8EAC0BDC09C999C7E7C7E5C5C5C45454549494950505058585863636371
+ 7171808080929292A4A4A4B5B5B5C5C5C5D4D4D4E1E1E1ECECECF3F3F3F8F8F8
+ FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEFDFDFDFAFAFAF5F5F5EEEEEEE4E4E4D8D8D8CACACAB9B9B9A8A8A8
+ 969696858585747474666666666566767476949294B6B3B6E1DFE1FCFCFCF5F4
+ F5D1CED1C0BCC0C5C2C5C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C9C6C9CCC9CC
+ AFADAF8987898D8B8DB4B1B4E1DFE1FCFCFCF4F3F4D3D0D3D4D1D4ECECECF7F7
+ F7FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7DFDDDFD6D3D6F5F4F5FCFCFCE1
+ DFE1B4B1B48D8B8D898789AFADAFCCC9CCC9C6C9C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C5C2C5C0BCC0D1CED1F5F4F5FCFCFCE1DFE1B6B3B694929474727455
+ 55554646464A4A4A5151515B5B5B666666747474858585969696A8A8A8B9B9B9
+ CACACAD8D8D8E4E4E4EEEEEEF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF6F6F6EFEFEFE7E7E7DCDCDCCECECE
+ BEBEBEADADAD9B9B9B8989897979796A6A6A646464716F718E8B8EACA9ACD7D4
+ D7F8F7F8FBFBFBDAD8DAC1BDC1C3C0C3C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C7C4C7CDCACDBAB7BA908E90878587A9A6A9D7D4D7F8F7F8FAFAFADAD8DACFCD
+ CFE6E5E6F5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFF1F1F1D7D5D7DDDBDDFBFBFBF8F7F8D7D4D7A9A6A9878587908E90BAB7BA
+ CDCACDC7C4C7C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C3C0C3C1BDC1DAD8DAFB
+ FBFBF8F7F8D7D4D7ACA9AC8E8B8E6B6A6B4F4E4F4747474C4C4C5353535E5E5E
+ 6A6A6A7979798989899B9B9BADADADBEBEBECECECEDCDCDCE7E7E7EFEFEFF6F6
+ F6FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 5169FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F2F2F2EAEAEA
+ DFDFDFD2D2D2C2C2C2B2B2B2A0A0A08E8E8E7D7D7D6E6E6E6262626B6A6B8684
+ 86A29FA2C9C6C9F0EFF0FFFFFFE5E4E5C5C2C5C1BEC1C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6CDC9CDC4C1C49C9A9C8482849C999CC9C6C9F0EFF0FFFF
+ FFE4E3E4CDCBCDDEDDDEF4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E8E9D3D1D3E6E5E6FFFFFF
+ F0EFF0C9C6C99C999C8482849C9A9CC4C1C4CDC9CDC6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C1BEC1C5C2C5E5E4E5FFFFFFF0EFF0C9C6C9A29FA2868486
+ 6261624545454848484E4E4E5656566161616E6E6E7D7D7D8E8E8EA0A0A0B2B2
+ B2C2C2C2D2D2D2DFDFDFEAEAEAF2F2F2F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC
+ F8F8F8F1F1F1E6E6E6D8D8D8C8C8C8B7B7B7A4A4A49292928181817171716464
+ 646868687C7A7C9A979ABEBBBEE8E6E8FEFEFEEFEEEFCBC8CBC0BDC0C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CBC8CBCAC7CAA7A5A7858385939093BDBA
+ BDE8E6E8FEFEFEEEEDEECFCCCFD7D6D7F0F0F0F8F8F8FBFBFBFEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFCFCFCE2E2E2D3D1D3F0EFF0FEFEFEE8E6E8BDBABD939093858385A7A5
+ A7CAC7CACBC8CBC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C0BDC0CBC8CB
+ EFEEEFFEFEFEE8E6E8BEBBBE9A979A7B7A7B5B5A5B4545454A4A4A5050505959
+ 59646464717171818181929292A4A4A4B7B7B7C8C8C8D8D8D8E6E6E6F1F1F1F8
+ F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFAFAFAF2F2F2E7E7E7D7D7D7C3C3C3AEAEAE9A9A9A8686
+ 86767676686868666566747374939093B3B0B3DEDCDEFBFBFBF6F6F6D3D0D3C0
+ BCC0C4C1C4C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C9C6C9CDCACDB2AFB28A88
+ 8A8B898BB2AFB2DEDCDEFBFBFBF5F5F5D5D2D5D2D0D2EAE9EAF7F7F7FBFBFBFE
+ FEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F5F6DDDBDDD8D6D8F6F6
+ F6FBFBFBDEDCDEB2AFB28B898B8A888AB2AFB2CDCACDC9C6C9C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C4C1C4C0BCC0D3D0D3F6F6F6FBFBFBDEDCDEB3B0B39390
+ 937270725353534646464B4B4B5252525C5C5C6868687676768686869A9A9AAE
+ AEAEC3C3C3D7D7D7E7E7E7F2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8EDEDEDDDDDDDC6C6
+ C6ADADAD9595957F7F7F6C6C6C6363636E6D6E8A888AA8A5A8D1CFD1F5F4F5FD
+ FDFDDEDDDEC2BFC2C2BFC2C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C7C4C7CDCA
+ CDBEBCBE959295868486A4A1A4D1CFD1F5F4F5FCFCFCDDDCDDCECCCEE3E3E3F5
+ F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFEEEDEED6D4D6E0DFE0FDFDFDF5F4F5D1CFD1A4A1A486848695
+ 9295BEBCBECDCACDC7C4C7C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C2BFC2C2BF
+ C2DEDDDEFDFDFDF5F4F5D1CFD1A8A5A88A888A6765674B4B4B4747474D4D4D54
+ 54545F5F5F6C6C6C7F7F7F959595ADADADC6C6C6DDDDDDEDEDEDF8F8F8FEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFEFEFEFEFE
+ FEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD
+ FDF6F6F6E9E9E9D5D5D5BABABA9E9E9E8383836B6B6B6C6B6C848284A09DA0C6
+ C3C6EEEDEEFFFFFFE8E7E8C6C3C6C1BDC1C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6CCC9CCC6C3C69F9C9F848284999799C6C3C6EEEDEEFFFFFFE7E6E7CD
+ CACDDDDBDDF4F4F4F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E6E8D3D0D3E9
+ E8E9FFFFFFEEEDEEC6C3C69997998482849F9C9FC6C3C6CCC9CCC6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C1BDC1C6C3C6E8E7E8FFFFFFEEEDEEC6C3C6A0
+ 9DA0848284615F614444444949494F4F4F5A5A5A6B6B6B8383839E9E9EBABABA
+ D5D5D5E9E9E9F6F6F6FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B5E6BFFFF
+ FFFEFEFEFEFEFEFCFCFCFBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5E8E8E8D3D3D3B6B6B69797977D7C7D7B
+ 797B989598BBB8BBE6E4E6FEFEFEF1F0F1CDCACDC0BCC0C5C2C5C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6CAC7CACBC8CBAAA7AA868486918E91BAB7BAE6E4E6FE
+ FEFEEFEEEFD0CDD0D7D5D7EEEEEEF8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFAFAFAE1E0E1D4D1D4F1F1F1FEFEFEE6E4E6BAB7BA918E91
+ 868486AAA7AACBC8CBCAC7CAC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C5C2C5C0
+ BCC0CDCACDF1F0F1FEFEFEE6E4E6BBB8BB9895987977795A595A474747515151
+ 6262627A7A7A979797B6B6B6D3D3D3E8E8E8F5F5F5FDFDFDFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF000080FFFFFFFDFDFDFBFBFBF8F8F8F5F5F5F4F4F4F5F5F5F8
+ F8F8FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF7F7F7EAEAEAD5
+ D5D5ACACAC848284918F91B1AEB1DCDADCFAFAFAF8F8F8D5D3D5C0BDC0C4C1C4
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C8C5C8CDCACDB5B2B58C8A8C8A888AAF
+ ACAFDCDADCFAFAFAF7F7F7D6D4D6D1CFD1E8E8E8F6F6F6FBFBFBFDFDFDFEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4DAD9DA
+ D9D8D9F8F8F8FAFAFADCDADCAFACAF8A888A8C8A8CB5B2B5CDCACDC8C5C8C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C4C1C4C0BDC0D5D3D5F8F8F8FAFAFADCDADC
+ B1AEB1918F91716F715C5C5C6262627A7A7A999999B9B9B9D5D5D5EAEAEAF7F7
+ F7FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFE
+ FEFCFCFCFCFCFCFCFCFCFDFDFDFEFEFEFEFEFE800080FEFEFEFBFBFBF7F7F7F2
+ F2F2ECECECE9E9E9E9E9E9EDEDEDF2F2F2F8F8F8FCFCFCFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEF9F9F9E5E5E5A4A3A4898789A6A3A6CFCCCFF3F3F3FEFEFEE1DFE1
+ C3C0C3C2BFC2C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CDCACDC1BEC197
+ 9597858385A19EA1CFCCCFF3F3F3FDFDFDE0DEE0CECCCEE2E1E2F5F5F5FAFAFA
+ FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFEDECEDD5D3D5E3E1E3FEFEFEF3F3F3CFCCCFA19E
+ A1858385979597C1BEC1CDCACDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C2BFC2C3C0C3E1DFE1FEFEFEF3F3F3CFCCCFA6A3A6898789777577848484A4A4
+ A4C2C2C2DCDCDCEEEEEEF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFDFDFDFBFBFBF8F8F8F5F5F5F4F4F4F5F5F5F8F8F8FAFAFAFCFCFC00
+ 4F7BFEFEFEF9F9F9F2F2F2E9E9E9E0E0E0D9D9D9D9D9D9DDDDDDE6E6E6EFEFEF
+ F7F7F7FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFB8684869D9B9DC5C2C5E7E6E7
+ FFFFFFEBE9EBC7C4C7C0BDC0C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CC
+ C9CCC7C4C7A29FA2848284979597C3C0C3ECEBECFFFFFFE9E8E9CCC9CCDBD9DB
+ F1F1F1F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE6E5
+ E6D2D0D2EBEAEBFFFFFFECEBECC3C0C3979597848284A29FA2C7C4C7CCC9CCC6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C0BDC0C7C4C7EBE9EBFFFFFFE7E6
+ E7C5C2C59D9B9D848284B3B3B3CECECEE5E5E5F3F3F3FBFBFBFEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF5F5F5EFEFEFE9E9E9E7E7E7E9
+ E9E9EEEEEEF4F4F4F9F9F9800080FEFEFEF8F8F8EEEEEEE1E1E1D3D3D3C7C7C7
+ C5C5C5C9C9C9D3D3D3E0E0E0EDEDEDF6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ A8A8A8ACA9ACDEDCDEFFFFFFCBC8CBBEBABEC5C2C5C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6CAC7CACCC8CCADAAAD8785878F8C8FB7B4B7E3E1E3FDFDFDF3F2F3
+ D0CFD0D4D3D4EBEBEBF7F7F7FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8DFDEDFD5D3D5F3F2F3FDFDFDE3E1E3B7
+ B4B78F8C8F878587ADAAADCCC8CCCAC7CAC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C5C2C5BEBABECBC8CBFFFFFFDEDCDEACA9AC8B8B8BC3C3C3DCDCDCEEEEEEF8
+ F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF4F4F4EA
+ EAEAE0E0E0D8D8D8D4D4D4D7D7D7E0E0E0EBEBEBF4F4F4000080FEFEFEF7F7F7
+ ECECECDCDCDCC9C9C9B8B8B8B0B0B0B3B3B3BDBDBDCCCCCCDDDDDDEBEBEBF5F5
+ F5FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFEBEBEB8B898BBFBCBFF9F9F9DFDDDFC0BDC0C7C4
+ C7C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C7C4C7CDCACDBAB7BA908E90878587A9A6A9D7D4D7
+ F8F7F8FBFBFBDAD8DACBC8CBE6E5E6F5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+ F1F1D1CED1DAD8DAFBFBFBF8F7F8D7D4D7A9A6A9878587908E90BAB7BACDCACD
+ C7C4C7C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C7C4C7C0BDC0DFDDDFF9F9F9BFBCBF858385B0
+ B0B0D2D2D2E7E7E7F5F5F5FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFDFDFDF6F6F6ECECECDCDCDCCCCCCCC1C1C1BCBCBCC1C1C1CFCFCFE0E0E0
+ EEEEEE800080FEFEFEF8F8F8ECECECDADADAC4C4C4AEAEAEA1A1A19E9E9EA6A6
+ A6B5B5B5C8C8C8DADADAE9E9E9F2F2F2F9F9F9FDFDFDFEFEFEFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEBDBCBD9693
+ 96DAD8DAFEFDFEC8C5C8C3C0C3C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CDCACDC3C0C39A979A848284
+ 9E9C9ECCC9CCF2F1F2FEFDFEE3E2E3C9C7C9DDDCDDF4F4F4F9F9F9FCFCFCFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E6E7CDCBCDE3E2E3FFFEFFF2F1F2
+ CCC9CC9E9C9E8482849A979AC3C0C3CDCACDC6C3C6C6C3C6C6C3C6C6C3C6C6C3
+ C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C3C0C3C8C5C8FE
+ FDFEDAD8DA969396949394C8C8C8E0E0E0F0F0F0FAFAFAFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF0F0F0E1E1E1CCCCCCB6B6B6A8A8A8
+ A3A3A3AAAAAABDBDBDD3D3D3E6E6E6000080FEFEFEF9F9F99C9CDF9090D4C5C5
+ C5ABABAB9898988F8F8F9191919D9D9DB0B0B0C4C4C4D7D7D7E6E6E6F0F0F0F8
+ F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFAFAFA939393B0ADB0F5F4F5ECEBECBFBCBFC6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CBC8CBC9C6C9
+ A4A2A4858385959295C0BDC0EAE8EAFFFFFFEBEAEBCFCDCFD9D8D9F2F1F2F8F8
+ F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FDFCFDE1E0E1D3D1D3EDECEDFFFFFFEAE8EAC0BDC0959295858385A4A2A4C9C6
+ C9CBC8CBC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6BFBCBFECEBECF5F4F5B0ADB0848484BBBBBBD6D6D6EAEAEAF6F6F6
+ FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF6F6F6E9E9E9
+ D5D5D5BBBBBBA1A1A19090908C8C8C959595ACACACC7C7C7DFDFDF033304FFFF
+ FFFBFBFBBABAE71414C77B7BC9B1B1B1999999888888828282868686959595AA
+ AAAABFBFBFD3D3D3E3E3E3EFEFEFF8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFED2D1D2908D90CECBCEFE
+ FFFED2CFD2C1BEC1C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6
+ C9C6C9CCC9CCAFADAF8987898D8B8DB4B1B4E1DFE1FCFCFCF1F0F1D7D5D7D5D4
+ D5EEEEEEF8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8DDDBDDDFDDDFF5F4F5FCFC
+ FCE1DFE1B4B1B48D8B8D898789AFADAFCCC9CCC9C6C9C6C3C6C6C3C6C6C3C6C6
+ C3C6C6C3C6C6C3C6C6C3C6C6C3C6C1BEC1D2CFD2FEFFFECECBCE908D909F9E9F
+ CBCBCBE3E3E3F2F2F2FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFBFBFBF1F1F1E0E0E0C8C8C8AAAAAA8784846E65657979798484849E9E
+ 9EBDBDBDD8D8D8000080FFFFFFFDFDFDBDBDEA1414C71414C75252C3A0A0A088
+ 88887979797676767D7D7D8F8F8FA5A5A5BCBCBCD1D1D1E4E4E4F1F1F1F9F9F9
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFDFDFD9D9C9DA3A1A3EEEDEEF5F4F5C0BCC0C5C2C5C6C3C6C6C3C6C6C3C6
+ C6C3C6C6C3C6C7C4C7CDCACDBCB9BC929092868486A6A3A6D4D1D4F7F6F7F9F9
+ F9DDDBDDDAD9DAEBEAEBF8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFF6F5F6E5E4E5E5E3E5FCFCFCF7F6F7D4D1D4A6A3A6868486929092BC
+ B9BCCDCACDC7C4C7C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C5C2C5C0BCC0F5F4F5
+ EEEDEEA3A1A3878687C0C0C0DADADAECECECF8F8F8FDFDFDFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8ECECECD7D7D7BCBCBC7461613200
+ 003D14146C6C6C7A7A7A959595B8B8B8D4D4D4800080FFFFFFFEFEFEC0C0ED14
+ 14C71414C71414C74C4CBC8D8D8D7777776B6B6B6B6B6B7676768B8B8BA4A4A4
+ BEBEBED6D6D6E8E8E8F5F5F5FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE2E1E28A888AC4C1C4FDFDFDDBD9DB
+ C1BEC1C6C3C6C6C3C6C6C3C6C6C3C6CDC9CDC4C1C49C9A9C8482849C999CC9C6
+ C9F0EFF0FEFEFEE3E2E3D8D6D8E8E7E8F7F7F7FBFBFBFDFDFDFEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F1F2E2E0E2EAE9EAFF
+ FFFFF0EFF0C9C6C99C999C8482849C9A9CC4C1C4CDC9CDC6C3C6C6C3C6C6C3C6
+ C6C3C6C1BEC1DBD9DBFDFDFDC4C1C4898789AAA9AAD0D0D0E6E6E6F4F4F4FBFB
+ FBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF5F5F5E6E6
+ E6CFCFCF918484320000320000320000625C5C7A7A7A969696B8B8B8D5D5D500
+ 0080FFFFFFFFFFFFEEEEF91414C71414C71414C71414C72B2BBE71717D656565
+ 5E5E5E646464777777909090ACACACC9C9C9E0E0E0F0F0F0FAFAFAFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ AFAFAF9A979AE3E2E3FBFBFBC3C0C3C4C1C4C6C3C6CBC8CBCAC7CAA7A5A78583
+ 85939093BDBABDE8E6E8FEFEFEEBEAEBD6D4D6E3E2E3F3F3F3FAFAFAFDFDFDFE
+ FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFDFDFDEEEDEEE0DEE0F1F0F1FEFEFEE8E6E8BDBABD939093858385
+ A7A5A7CAC7CACBC8CBC6C3C6C4C1C4C3C0C3FBFBFBE3E2E39A979A908F90C6C6
+ C6DDDDDDEFEFEFF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFEFE
+ FEFEFEFEFCFCFCF2F2F2E0E0E0C7C7C7401414320000320000320000533D3D80
+ 80809D9D9DBEBEBED9D9D900F50CFFFFFFFFFFFFFEFEFEA3A3E71414C71414C7
+ 1414C71414C72121BE5656775959595B5B5B6B6B6B848484A1A1A1C1C1C1DADA
+ DAEDEDEDF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8C8B8CBAB7BAF9F9F9E4E3E4C1BEC1CECB
+ CEB5B2B58C8A8C8A888AAFACAFDCDADCFAFAFAF5F5F5D9D8D9DCDCDCEFEFEFF8
+ F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E9E8E9E2E0E2
+ F8F8F8FAFAFADCDADCAFACAF8A888A8C8A8CB5B2B5CECBCEC1BEC1E4E3E4F9F9
+ F9BAB7BA878687BABABAD7D7D7E9E9E9F5F5F5FCFCFCFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFAFAFAF7F7F7F5F5
+ F5F4F4F4F5F5F5F7F7F7F9F9F9FCFCFCF9F9F9EEEEEEDBDBDB8A777732000032
+ 00003200003200003F16168D8D8DAAAAAAC8C8C8E0E0E0000080FFFFFFFFFFFF
+ FFFFFFFCFCFC8282DC1414C71414C71414C71414C71919C13F3F825959596868
+ 688282829E9E9EBFBFBFD9D9D9ECECECF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEC2C2C29492
+ 94D7D5D7FEFEFEC8C5C88D8B8D868486A4A1A4D1CFD1F5F4F5FBFBFBDFDEDFD9
+ D8D9EBEAEBF8F8F8FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFF5F4F5E4E3E4E6E5E6FDFDFDF5F4F5D1CFD1A4A1A48684
+ 868D8B8DC8C5C8FEFEFED7D5D7949294A5A4A5D4D4D4E4E4E4F2F2F2FAFAFAFE
+ FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFB
+ FBF6F6F6F1F1F1EBEBEBE6E6E6E5E5E5E6E6E6EBEBEBF1F1F1F6F6F6F5F5F5E9
+ E9E9D6D6D64B2222320000320000320000320000320000928C8CBCBCBCD6D6D6
+ E9E9E9800080FFFFFFFFFFFFFFFFFFFDFDFDF3F3F32D2DCA1414C71414C71414
+ C71414C71414C730309F676773878787A4A4A4C2C2C2DCDCDCEDEDEDF8F8F8FE
+ FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFDFDFD969596ACA9ACF5F4F5D5D4D5949194C6C3C6EEEDEEFF
+ FFFFE7E6E7D7D6D7E6E5E6F6F6F6FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F0F1E1DF
+ E1ECEBECFFFFFFEEEDEEC6C3C6949194D5D4D5F5F4F5ACA9AC8F8E8FDADADAE5
+ E5E5EFEFEFF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFEFEFEFBFBFBF5F5F5ECECECE2E2E2D7D7D7D0D0D0CECECED1D1D1D9
+ D9D9E4E4E4EEEEEEEFEFEFE5E5E5BDB7B7320000320000320000320000320000
+ 3200008A7A7ACCCCCCE3E3E3F2F2F2000080FFFFFFFFFFFFFFFFFFFEFEFEF5F5
+ F56262D21414C71414C71414C71414C71414C71414C72020BD949494B0B0B0CC
+ CCCCE3E3E3F1F1F1F9F9F9FEFEFEFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFDFDFD
+ FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFED7D6D78E8C8ED1CFD1C7
+ C4C7E7E5E7FEFEFEEEEEEED9D7D9E2E1E2F2F2F2F8F8F8FBFBFBFDFDFDFDFDFD
+ FDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFCFCFCEDECEDDFDEDFF2F1F2FEFEFEE7E5E7C7C4C7D1
+ CFD18E8C8EC7C7C7EBEBEBF2F2F2F7F7F7FBFBFBFEFEFEFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF5F5F5EAEAEADDDDDDCCCCCCBD
+ BDBDB3B3B3B0B0B0B5B5B5C2C2C2D3D3D3E2E2E2E6E6E6DFDFDF927F7F320000
+ 3200003200003200003200003200009E9191DADADAEDEDEDF8F8F87B7B7BFFFF
+ FFFFFFFFFFFFFFFEFEFEF5F5F57C7CD61414C71414C71414C71414C71414C714
+ 14C71414C79999A5BEBEBED7D7D7EAEAEAF6F6F6FBFBFBFEFEFEFEFEFEFCFCFC
+ FAFAFAF8F8F8F6F6F6F6F6F6F8F8F8FBFBFBFCFCFCFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEA2A2A2A7A4A7DAD8DAF9F9F9DFDEDFE2E1E2F2F1F2F9F9F9FBFBFB
+ FAFAFAF9F9F9F6F6F6F4F4F4F3F3F3F4F4F4F6F6F6F9F9F9FBFBFBFEFEFEFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F8F9E7
+ E6E7E2E1E2FAF9FADAD8DAA7A4A7A09FA0F4F4F4F6F6F6F9F9F9FCFCFCFEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF5F5F5EB
+ EBEBDBDBDBC8C8C8B3B3B39F9F9F929292909090989898A9A9A9BFBFBFD4D4D4
+ DDDDDDD8D8D8694A4A320000320000320000320000320000320000CECECEE5E5
+ E5F5F5F5FCFCFC00CD19FFFFFFFFFFFFFFFFFFFFFFFFF7F7F79696DA1414C714
+ 14C71414C71414C71414C71414C71414C78787B4C9C9C9E0E0E0F1F1F1FAFAFA
+ FDFDFDFFFFFFFDFDFDF9F9F9F5F5F5F0F0F0ECECECECECECEEEEEEF2F2F2F7F7
+ F7FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E7E8908F90DAD8DAE3E1E3F2F1F2
+ FCFCFCFDFDFDFDFDFDFAFAFAF5F5F5EFEFEFE9E9E9E5E5E5E3E3E3E4E4E4E8E8
+ E8EDEDEDF3F3F3F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F4F5E3E2E3DAD8DA908F90E6E6E6FCFCFC
+ FDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFDFDFDF8F8F8EDEDEDDDDDDDC9C9C9B1B1B19A9A9A868686787878777777
+ 808080949494AEAEAEC7C7C7D3D3D3D1D1D14317173200003200003200003708
+ 08959292BABABAD7D7D7ECECECF9F9F9FFFFFF800080FFFFFFFFFFFFFFFFFFFF
+ FFFFF8F8F8B3B3E01414C71414C71414C71414C71414C71414C71414C78D8DBA
+ D1D1D1E7E7E7F6F6F6FDFDFDFEFEFEFFFFFFFBFBFBF5F5F5EEEEEEE6E6E6DDDD
+ DDDBDBDBDEDEDEE4E4E4ECECECF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FCFCFCF2F2F2FEFEFEFFFFFFFFFFFFFEFEFEFBFBFBF5F5F5ECECECE0E0E0D6D6
+ D6CECECECBCBCBCCCCCCD2D2D2DBDBDBE5E5E5EEEEEEF5F5F5FAFAFAFDFDFDFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ F2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF1F1F1E2E2E2CECECEB6B6B69E9E9E
+ 8686867474746868686868687171718484849F9F9FBBBBBBCACACACACACA3200
+ 003200003200003200005E4545A1A1A1C0C0C0DCDCDCEFEFEFFBFBFBFFFFFF00
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8B4B4E11414C71414C71414C71414C7
+ 2626B97070873434BB9090BDD6D6D6EBEBEBF8F8F8FFFFFFFFFFFFFFFFFFFBFB
+ FBF2F2F2E7E7E7DADADACDCDCDC8C8C8CACACAD1D1D1DBDBDBE8E8E8F1F1F1F8
+ F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6
+ F6ECECECDEDEDECDCDCDBCBCBCB1B1B1ABABABADADADB5B5B5C1C1C1CFCFCFDD
+ DDDDE9E9E9F2F2F2F9F9F9FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF5F5F5E8E8E8
+ D5D5D5BEBEBEA5A5A5898686573E3E411B1B411F1F5A50506B6B6B7C7C7C9595
+ 95B1B1B1C2C2C2A09393320000320000320000320000827C7CA7A7A7C5C5C5DF
+ DFDFF2F2F2FCFCFCFFFFFF5E4C5FFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9C3C3E4
+ 1414C71414C71414C71414C73F3FA47F7F7F979797BABABAD7D7D7ECECECFAFA
+ FAFFFFFFFFFFFFFFFFFFFAFAFAF1F1F1E3E3E3D2D2D2BFBFBFB6B6B6B3B3B3B9
+ B9B9C5C5C5D4D4D4E2E2E2EDEDEDF5F5F5FAFAFAFDFDFDFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFEFEFEFAFAFAF1F1F1E2E2E2CECECEB6B6B6A1A1A19393938C8C8C8D
+ 8D8D979797A5A5A5B6B6B6C8C8C8D8D8D8E7E7E7F2F2F2F9F9F9FDFDFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF
+ FEFEFEF9F9F9EFEFEFDEDEDEC8C8C8AFAFAF857C7C3708083200003200003200
+ 003506066A67677A7A7A909090AAAAAABBBBBB9A8E8E32000032000032000042
+ 1919909090AAAAAAC8C8C8E2E2E2F3F3F3FDFDFDFFFFFF005047FFFFFFFFFFFF
+ FFFFFFFFFFFFF9F9F9ECECEC1414C71414C71414C71414C72C2CB37F7F7F9696
+ 96B9B9B9D6D6D6ECECECF9F9F9FFFFFFFFFFFFFFFFFFFBFBFBF1F1F1E2E2E2CE
+ CECEB8B8B8A8A8A8A0A0A0A1A1A1ABABABBCBCBCCDCDCDDCDCDCE9E9E9F2F2F2
+ F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF7F7F7EAEAEAD7D7D7BEBEBEA3
+ A3A38C8C8C7D7D7D7676767878788181818F8F8F9F9F9FB1B1B1C5C5C5D7D7D7
+ E6E6E6F2F2F2FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFB
+ FAFAFAF9F9F9F9F9F9FAFAFAF9F9F9F3F3F3E7E7E7D4D4D4BCBCBC8F85853809
+ 09320000320000320000320000320000553C3C7F7F7F8F8F8FA5A5A5B6B6B675
+ 5C5C320000320000320000513232929292ADADADCBCBCBE3E3E3F5F5F5FEFEFE
+ FFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAECECEC1414C71414C71414
+ C71414C72D2DB47F7F7F959595B8B8B8D5D5D5EBEBEBF9F9F9FFFFFFFFFFFFFF
+ FFFFFBFBFBE7E4E4AC9C9CD0D0D0B7B7B7A2A2A29393938E8E8E929292A1A1A1
+ B3B3B3C5C5C5D7D7D7E7E7E7F2F2F2F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF4
+ F4F4E4E4E4CECECEB0B0B09393937D7D7D7070706B6B6B707070797979838383
+ 9090909F9F9FB1B1B1C5C5C5D8D8D8E9E9E9F4F4F4FBFBFBFEFEFEFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ FEFEFEFBFBFBF7F7F7F2F2F2EFEFEFECECECECECECEFEFEFEFEFEFEBEBEBDEDE
+ DECBCBCBABA8A83E131332000032000032000032000032000032000041181884
+ 8484909090A3A3A3B2B2B2745B5B3200003200003200005C4343939393AFAFAF
+ CDCDCDE5E5E5F5F5F5FEFEFEFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFBFB
+ FBEEEEEE1414C71414C71414C71414C72D2DB47E7E7E949494B6B6B6D4D4D4EA
+ EAEAF8F8F8FFFFFFFFFFFFFFFFFFFDFDFDDDD7D73200008F7979BDBDBDA4A4A4
+ 8E8E8E8080807E7E7E868686979797ADADADC3C3C3D9D9D9E9E9E9F5F5F5FBFB
+ FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFCFCFCF2F2F2E0E0E0C6C6C68A7D7D5233334725254F3636
+ 6660607575757E7E7E8585858C8C8C959595A2A2A2B4B4B4C8C8C8DCDCDCECEC
+ ECF6F6F6FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFDFDFDF9F9F9F3F3F3ECECECE3E3E3DCDCDCD9D9D9D9D9
+ D9DEDEDEE2E2E2E0E0E0D5D5D5C4C4C459363632000032000032000032000032
+ 0000320000320000320000838080929292A1A1A1AFAFAF6A4E4E320000320000
+ 3200006C5C5C949494B1B1B1CFCFCFE6E6E6F7F7F7FFFFFFFFFFFF623063FFFF
+ FFFFFFFFFFFFFFFFFFFFFBFBFBEFEFEF3838CB1414C71414C71414C72D2DB47E
+ 7E7E929292B5B5B5D3D3D3E9E9E9F8F8F8FFFFFFFFFFFFFFFFFFFEFEFEFAFAFA
+ 320000320000613E3EA3A0A08F8F8F7B7B7B717171747474818181989898B1B1
+ B1CBCBCBE1E1E1F0F0F0FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEFEFEFDCDCDC8B7878
+ 3200003200003200003200003200005233338680809595959696969696969B9B
+ 9BA7A7A7B9B9B9CECECEE1E1E1EFEFEFF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F2F2F2E7E7E7DADA
+ DACECECEC2C2C2BDBDBDBFBFBFC7C7C7CFCFCFD1D1D1CBCBCB816B6B32000032
+ 0000320000320000320000320000320000320000320000756969929292A0A0A0
+ ADADAD512C2C320000320000320000716464959595B3B3B3D1D1D1E8E8E8F8F8
+ F8FFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEFEFEF4545CC14
+ 14C71414C71414C72D2DB47D7D7D919191B3B3B3D1D1D1E9E9E9F8F8F8FFFFFF
+ FFFFFFFFFFFFFFFFFFFDFDFD3200003200003200004216167C70707A7A7A6B6B
+ 6B6868687474748B8B8BA6A6A6C3C3C3DCDCDCEDEDEDF8F8F8FEFEFEFEFEFEFE
+ FEFEFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FBFBFBEEEEEECFCCCC3A0B0B320000320000320000320000320000320000390A
+ 0A887878AAAAAAA1A1A19D9D9DA1A1A1ADADADC0C0C0D5D5D5E7E7E7F4F4F4FC
+ FCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFA
+ FAF2F2F2E6E6E6D6D6D6C3C3C3B1B1B1A2A2A29C9C9CA0A0A0ABABABB9B9B9C2
+ C2C2B9B6B63A0B0B320000320000390A0AA49B9BA497976C4D4D320000320000
+ 3200006C59599393939F9F9FACACAC502B2B3200003200003200007265659797
+ 97B4B4B4D2D2D2E9E9E9F8F8F8FFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFF
+ FFFFFCFCFCF1F1F14646CD1414C71414C71414C72D2DB47D7D7D8F8F8FB1B1B1
+ D0D0D0E7E7E7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFEFEFE7C5D5D3200003200
+ 003200003200005337376764646565656F6F6F868686A3A3A3C1C1C1DADADAED
+ EDEDF7F7F7FCFCFCFCFCFCF9F9F9F7F7F7F5F5F5F4F4F4F5F5F5F7F7F7FAFAFA
+ FCFCFCFEFEFEFFFFFFFFFFFFFBFBFBEEEEEE9A87873200003200003200003200
+ 003200003200003200003200003200008B7878B2B2B2A5A5A5A1A1A1A5A5A5B4
+ B4B4C8C8C8DDDDDDEEEEEEF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFDFDFDFEFEFEFE
+ FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFEFEFEFBFBFBF4F4F4E8E8E8D6D6D6C1C1C1AAAAAA9494948383837E
+ 7E7E838383939393A4A4A4B3B3B36D5151320000320000320000998C8CCACACA
+ D3D3D3B5ACAC3200003200003200006047479292929E9E9EAAAAAA502B2B3200
+ 00320000320000776E6E989898B6B6B6D4D4D4EAEAEAF8F8F8FFFFFFFFFFFF00
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F24646CD1414C71414C71414C7
+ 1919C37D7D7D8E8E8EAFAFAFCECECEE6E6E6F6F6F6FEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFCFCFC795A5A320000320000320000320000390D0D5848487373738B
+ 8B8BA7A7A7C5C5C5DDDDDDEFEFEFF6F6F6F9F9F9F6F6F6F0F0F0EAEAEAE6E6E6
+ E4E4E4E6E6E6EAEAEAF0F0F0F5F5F5FAFAFAFDFDFDFEFEFEFBFBFBEEEEEE866D
+ 6D3200003200003200003200003200003200003200003200003200003200008D
+ 7A7AB2B2B2A5A5A5A2A2A2ABABABBDBDBDD3D3D3E6E6E6F4F4F4FCFCFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF9F9F9F7F7F7F5
+ F5F5F4F4F4F5F5F5F8F8F8FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF7F7F7ECECECDADADAC3C3C3AA
+ AAAA9191917B7B7B6C6C6C696969717171838383979797AAAAAA512C2C320000
+ 3200005C3939C4C4C4D1D1D1D8D8D8D7D7D73200003200003200005F46469292
+ 929E9E9EAAAAAA4115153200003200003200008989899A9A9AB8B8B8D5D5D5EB
+ EBEBF9F9F9FFFFFFFFFFFF71B770FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF2F2F2
+ 7A7AD41414C71414C71414C71414C77C7C7C8D8D8DADADADCDCDCDE5E5E5F5F5
+ F5FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F3471B1B32000032000032
+ 0000320000320000451F1F908D8DB3B3B3CECECEE5E5E5F2F2F2F6F6F6F5F5F5
+ EDEDEDE3E3E3D8D8D8D0D0D0CDCDCDCFCFCFD6D6D6E0E0E0EAEAEAF3F3F3F9F9
+ F9FDFDFDFBFBFBEFEFEF5C36363200003200003200003809097E6E6EA8A2A28B
+ 75753C0D0D3200003200003B0C0CA49B9BADADADA3A3A3A5A5A5B3B3B3C8C8C8
+ DDDDDDEFEFEFF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFB
+ FBFBF6F6F6F0F0F0EAEAEAE6E6E6E5E5E5E8E8E8EDEDEDF3F3F3F9F9F9FDFDFD
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF0
+ F0F0E0E0E0CACACAAFAFAF9494947C7C7C5B4F4F5347475E5B5B6C6C6C808080
+ 939393A7A7A7512C2C320000320000A49B9BCBCBCBD7D7D7DADADAD7D7D73200
+ 003200003200005E45459090909E9E9EAAAAAA32000032000032000032000089
+ 89899C9C9CBABABAD7D7D7ECECECFAFAFAFFFFFFFFFFFF000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFDFDFDF3F3F37B7BD51414C71414C71414C71414C77C7C7C8C8C
+ 8CAAAAAACBCBCBE3E3E3F5F5F5FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4
+ F4F47F6363320000320000320000320000320000320000867979BFBFBFD8D8D8
+ ECECECF5F5F5F5F5F5EEEEEEE1E1E1D0D0D0BFBFBFB3B3B3AEAEAEB1B1B1BBBB
+ BBC9C9C9D9D9D9E7E7E7F2F2F2F9F9F9FAFAFAF0F0F05D373732000032000032
+ 0000776868A4A4A4BCBCBCD5D5D5DDDADA562D2D3200003200004E2525B6B6B6
+ A7A7A7A1A1A1AAAAAABEBEBED4D4D4E8E8E8F6F6F6FDFDFDFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFEFEFEFBFBFBF5F5F5ECECECE1E1E1D7D7D7D1D1D1CFCFCFD4D4D4
+ DDDDDDE8E8E8F2F2F2F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFD
+ FDFDFDFDFDFBFBFBF5F5F5E8E8E8D4D4D4B9B9B99C9C9C695959390D0D320000
+ 320000350606605050878787999999AAAAAA532D2D3200004C2323C3C3C3D0D0
+ D0D8D8D8DADADAD3D3D33200003200003200005C43438F8F8F9E9E9EAAAAAA32
+ 00003200003200003200008B8B8B9E9E9EBCBCBCD8D8D8EDEDEDFAFAFAFFFFFF
+ FFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4F4F47B7BD51414C71414
+ C71414C71414C77B7B7B8A8A8AA9A9A9C9C9C9E3E3E3F4F4F4FEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFEFEFEF5F5F58B7272320000320000320000320000320000
+ 320000857575C8C8C8E0E0E0F1F1F1F7F7F7F1F1F1E5E5E5D2D2D2BBBBBBA5A5
+ A59595958E8E8E9191919D9D9DAFAFAFC3C3C3D7D7D7E7E7E7F2F2F2F8F8F8F2
+ F2F25D38383200003200003809099C9C9CA7A7A7BEBEBED5D5D5EAEAEAEAE7E7
+ 572E2E320000320000785F5FABABABA1A1A1A4A4A4B4B4B4CBCBCBE0E0E0F2F2
+ F2FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF4F4F4E9E9E9DBDBDBCBCBCB
+ BDBDBDB3B3B3B2B2B2B9B9B9C8C8C8D8D8D8E8E8E8F4F4F4FBFBFBFEFEFEFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFC
+ FCFCFAFAFAF8F8F8F7F7F7F6F6F6F7F7F7F5F5F5ECECECDDDDDDC5C5C5A8A8A8
+ 654F4F3200003200003200003200003200003708089B9B9BA8A8A8B4B4B4542E
+ 2E320000816B6BC6C6C6D1D1D1D7D7D7D6D6D6CCCCCC3200003200003200005A
+ 41418E8E8E9F9F9FACACAC3200003200003200003708088C8C8C9F9F9FBDBDBD
+ DADADAEEEEEEFBFBFBFFFFFFFFFFFF00C623FFFFFFFFFFFFFFFFFFFFFFFFFEFE
+ FEF5F5F57C7CD61414C71414C71414C71414C77A7A7A898989A7A7A7C8C8C8E1
+ E1E1F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF6F6F6A28F8F320000
+ 320000320000320000503030370808705757CDCDCDE5E5E5F4F4F4F7F7F7ECEC
+ ECDBDBDBC3C3C3A7A7A78F8F8F7D7D7D757575777777848484979797ADADADC4
+ C4C4D9D9D9E9E9E9F3F3F3F2F2F25E39393200003200004F2929A1A1A1A8A8A8
+ BDBDBDD4D4D4E9E9E9F7F7F7E1DBDB3D0E0E3200003B0C0CA8A5A5A1A1A19F9F
+ 9FACACACC2C2C2D9D9D9ECECECF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF3F3F3
+ E8E8E8D8D8D8C5C5C5B1B1B1A0A0A09595959595959F9F9FB2B2B2C8C8C8DDDD
+ DDEDEDEDF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEFCFCFCF9F9F9F5F5F5F0F0F0ECECECEAEAEAEBEBEBEDEDEDEBEBEB
+ E2E2E2D1D1D1B7B7B7725F5F3200003200003200003200003200003200003200
+ 00B6B6B6BEBEBEC4C4C4573131320000B0AAAAC9C9C9D2D2D2D4D4D4CECECEB0
+ AAAA3200003200003200005940408D8D8DA1A1A1ADADAD320000320000320000
+ 4621218C8C8CA1A1A1BFBFBFDBDBDBEFEFEFFBFBFBFFFFFFFFFFFF7C777EFFFF
+ FFFFFFFFFFFFFFFFFFFFFEFEFEF6F6F6A4A4DC1414C71414C71414C71414C760
+ 608D878787A4A4A4C5C5C5E0E0E0F2F2F2FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFF7F7F7BAAEAE3200003200003200003200008383838C8989A09A9ACFCF
+ CFE6E6E6F5F5F5F5F5F5E7E7E7D2D2D2B5B5B59696967D7D7D6C6C6C65656568
+ 68687474748686869B9B9BB2B2B2C9C9C9DDDDDDECECECF0F0F0775757320000
+ 320000502B2BA6A6A6AAAAAABCBCBCD1D1D1E6E6E6F5F5F5FBFBFB937A7A3200
+ 00320000735A5AA1A1A19B9B9BA4A4A4B9B9B9D1D1D1E7E7E7F6F6F6FEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ FDFDFDF9F9F9F2F2F2E7E7E7D7D7D7C2C2C2ACACAC9797978686867D7D7D8080
+ 808D8D8DA2A2A2BCBCBCD5D5D5E8E8E8F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF6F6F6EFEFEFE7E7E7E0E0E0DADADA
+ D9D9D9DBDBDBE0E0E0DFDFDFD6D6D6C4C4C49289893200003200003200003200
+ 00320000320000320000320000A89B9BD3D3D3D4D4D45934344F2626C8C8C8CC
+ CCCCD1D1D1CECECEC4C4C4928686320000320000320000573E3E8E8E8EA4A4A4
+ 9184843200003200003200004621218E8E8EA3A3A3C1C1C1DCDCDCEFEFEFFBFB
+ FBFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7B2B2DF14
+ 14C71414C71414C71414C760608D868686A2A2A2C4C4C4DEDEDEF1F1F1FCFCFC
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8BCAFAF3200003200003200003200
+ 00838383929292AFAFAFCECECEE6E6E6F3F3F3F2F2F2E2E2E2C9C9C99289894C
+ 2A2A411C1C4E38385C59596565657171717E7E7E8F8F8FA3A3A3B9B9B9D0D0D0
+ E3E3E3EDEDED8F7676320000320000542E2EADADADADADADBBBBBBCECECEE2E2
+ E2F2F2F2FBFBFBEAE7E73200003200003A0B0BA1A1A19898989E9E9EB1B1B1CA
+ CACAE2E2E2F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFEFEFEFDFDFDF8F8F8F2F2F2E6E6E6D5D5D5C1C1C1AAAAAA9393
+ 9380808067677E7070707777778686869D9D9DB6B6B6D1D1D1E6E6E6F3F3F3FC
+ FCFCFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBF8F8F8F3F3F3EBEBEB
+ E0E0E0D4D4D4C9C9C9C4C4C4C4C4C4C9C9C9D1D1D1D2D2D2CACACAB6B6B6461D
+ 1D320000320000320000320000320000320000320000320000B8ABABE4E4E4E1
+ E1E13200005A3535CECECECECECECDCDCDC5C5C5B6B6B6715B5B320000320000
+ 3200005C4646909090A7A7A79185853200003200003200004621218F8F8FA5A5
+ A5C3C3C3DDDDDDF1F1F1FCFCFCFFFFFFFFFFFF761876FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFF8F8F8B3B3E01414C71414C71414C71414C760608D858585A0A0A0
+ C2C2C2DDDDDDF0F0F0FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8BCAF
+ AF320000320000320000320000838383919191ADADADCDCDCDE5E5E5F1F1F1EF
+ EFEFDDDDDDA79D9D380909320000320000320000350606584545787878828282
+ 8C8C8C9A9A9AADADADC2C2C2D8D8D8E7E7E7A69393320000320000553030B4B4
+ B4AFAFAFB7B7B7C8C8C8DBDBDBECECECF8F8F8F7F7F777575732000032000078
+ 6565959595989898AAAAAAC3C3C3DDDDDDEFEFEFFBFBFBFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFBFBFBF8F8F8F0F0F0E4E4E4D4D4
+ D4BFBFBFA8A8A89292927878833131AC1414C74C4C907B7B7B8D8D8DA3A3A3BB
+ BBBBD4D4D4E6E6E6F4F4F4FBFBFBFEFEFEFCFCFCFAFAFAF7F7F7F5F5F5F3F3F3
+ F0F0F0ECECECE6E6E6DBDBDBCCCCCCBCBCBCB0B0B0ACACACB0B0B0B9B9B9C5C5
+ C5C7C7C7BFBFBF7D6A6A32000032000032000032000032000032000032000032
+ 0000320000C3B6B6F1F1F1ECECEC3200005D3737D4D4D4CECECEC7C7C7B8B8B8
+ A5A5A54F2C2C3200003200003200006B5E5E959595ABABAB9588883200003200
+ 003200004621218F8F8FA7A7A7C5C5C5DFDFDFF2F2F2FCFCFCFFFFFFFFFFFF00
+ 0900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8B4B4E11414C71414C71414C7
+ 1414C760608D8484849E9E9EC0C0C0DCDCDCEFEFEFFBFBFBFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFF9F9F9EBEBEB320000320000320000320000848484909090AC
+ ACACCBCBCBE3E3E3EFEFEFECECECD9D9D9542E2E320000320000320000320000
+ 3200003200006956568F8F8F929292979797A3A3A3B6B6B6CCCCCCE0E0E0C8BF
+ BF320000320000583232B9B9B9AEAEAEB1B1B1BEBEBECFCFCFE1E1E1F0F0F0F2
+ F2F2B0A0A0320000320000553232929292939393A3A3A3BDBDBDD7D7D7ECECEC
+ FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF9F9F9F8F8F8F7F7F7F6F6F6F2F2
+ F2ECECECE1E1E1D1D1D1BCBCBCA5A5A58F8F8F6F6F862626B71414C71414C714
+ 14C76161A4A1A1A1B4B4B4C8C8C8DCDCDCEBEBEBF5F5F5FBFBFBFBFBFBF8F8F8
+ F2F2F2EBEBEBE6E6E6E3E3E3E0E0E0DBDBDBD4D4D4C6C6C6B4B4B4A4A4A49999
+ 99989898A1A1A1B0B0B0BCBCBCBFBFBFB6B6B640141432000032000032000032
+ 00003809099A8E8ED7D7D7D4CECE572E2EEFECECF9F9F9F5F5F53200008B7272
+ D8D8D8CDCDCDBEBEBEAAAAAA8C89893200003200003200003200006C5F5F9A9A
+ 9AB0B0B0968A8A3200003200003200005C4343909090A9A9A9C7C7C7E0E0E0F2
+ F2F2FDFDFDFFFFFFFFFFFF2AA32CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8
+ D0D0E61414C71414C71414C71414C74D4D9B8383839C9C9CBFBFBFDADADAEFEF
+ EFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAECECEC32000032000032
+ 00003200008484848F8F8FAAAAAAC9C9C9E2E2E2EDEDEDE9E9E9C0BABA320000
+ 3200003200003200003200003200003200003200007C6D6D9C9C9C9999999C9C
+ 9CAAAAAAC0C0C0D7D7D7E7E7E7481C1C320000320000BABABAAAAAAAA7A7A7B0
+ B0B0BFBFBFD1D1D1E1E1E1E7E7E7D5D2D23200003200003200008885858D8D8D
+ 9C9C9CB7B7B7D3D3D3E9E9E9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAF6F6F6F2F2
+ F2ECECECEAEAEAE8E8E8E3E3E3DADADACCCCCCB9B9B9A3A3A38C8C8C68688A19
+ 19C31414C71414C71414C71414C71414C77D7DC0CBCBCBDADADAE7E7E7F1F1F1
+ F8F8F8FAFAFAF7F7F7EFEFEFE4E4E4D9D9D9D1D1D1CCCCCCC8C8C8C5C5C5BEBE
+ BEB0B0B09E9E9E8F8F8F898989868383949191ADADADBBBBBBBCBCBC89797932
+ 0000320000320000320000370808958C8CCBCBCBE3E3E3F3F3F3FCFCFCFEFEFE
+ FDFDFDF8F8F83200008D7474D9D9D9C8C8C8B2B2B29999995940403200003200
+ 00320000320000807D7DA1A1A1B6B6B68875753200003200003200005C434392
+ 9292AAAAAAC8C8C8E2E2E2F3F3F3FDFDFDFFFFFFFFFFFF000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFF9F9F9EBEBEB1414C71414C71414C71414C746469F8282
+ 829A9A9ABCBCBCD9D9D9EDEDEDFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
+ FAFAEDEDED3200003200003200003200007F7C7C8F8F8FA9A9A9C8C8C8E1E1E1
+ ECECECE6E6E69683833200003200003200003200003200003200003200003200
+ 00390A0A9993939E9E9E999999A1A1A1B5B5B5CDCDCDE0E0E0A3909032000032
+ 0000958989A3A3A39A9A9A9E9E9EAAAAAABABABACBCBCBD4D4D4D1D1D13A0B0B
+ 3200003200006D5D5D878787969696B2B2B2CFCFCFE6E6E6F6F6F6FEFEFEFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFBFBFBF6F6F6EFEFEFE7E7E7DEDEDED9D9D9D4D4D4CCCCCCC0C0C0B1B1B19E
+ 9E9E8989896565861919C11414C71414C71414C71414C71414C71414C71F1FC8
+ E0E0E0E9E9E9F2F2F2F7F7F7F9F9F9F7F7F7EFEFEFE2E2E2D1D1D1C1C1C1B4B4
+ B4AEAEAEAAAAAAA8A8A8A4A4A49999998A8A8A8080805D4747370808827676B1
+ B1B1BDBDBDBBBBBB5835353200003200003200003200006C5656B9B9B9D5D5D5
+ EAEAEAF8F8F8FEFEFEFFFFFFFEFEFEFAFAFA3200008C7373D4D4D4BDBDBDA3A3
+ A3776E6E3200003200003200003200003200008D8D8DAAAAAABCBCBC785F5F32
+ 00003200003200005C4343929292ADADADCACACAE3E3E3F4F4F4FEFEFEFFFFFF
+ FFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAECECEC1414C71414
+ C71414C71414C746469F818181989898BBBBBBD7D7D7ECECECFAFAFAFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFBFBFBEEEEEE3C0D0D320000320000320000706363
+ 8E8E8EA7A7A7C6C6C6E0E0E0E9E9E9E4E4E46C4D4D3200003200003200003200
+ 00360707624949390A0A3200003200005A3737A3A3A39898989B9B9BABABABC3
+ C3C3D8D8D8E2E2E2471B1B320000694D4D9898988989898787878F8F8F9E9E9E
+ B0B0B0BABABABABABA502B2B320000320000533737808080909090ADADADCBCB
+ CBE4E4E4F5F5F5FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF2F2F2E9E9E9DCDCDCCECECEC4C4C4BB
+ BBBBB0B0B0A3A3A39595958484846363851919C11414C71414C71414C71414C7
+ 1414C71414C71414C72E2ECBEFEFEFF5F5F5F9F9F9FBFBFBF8F8F8F2F2F2E5E5
+ E5D2D2D2BCBCBCA6A6A69696968F8F8F8C8C8C8C8C8C8C8C8C8484845F4C4C3F
+ 1616320000320000877A7AB8B8B8C1C1C1B2AFAF320000320000320000320000
+ 3D1111A4A4A4C3C3C3DDDDDDF0F0F0FBFBFBFFFFFFFFFFFFFEFEFEEDEAEA3200
+ 00A08D8DCBCBCBB0B0B08C89893F1616320000320000320000320000441E1E98
+ 9898B4B4B4C3C3C37A61613200003200003200005C4343939393AEAEAECCCCCC
+ E4E4E4F5F5F5FEFEFEFFFFFFFFFFFF003C00FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFAFAFAEDEDED1414C71414C71414C71414C746469F808080969696B9B9B9D6
+ D6D6ECECECF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEFEFEF5C3636
+ 3200003200003200007063638D8D8DA6A6A6C5C5C5DDDDDDE8E8E8E3E3E35933
+ 333200003200003200003200006350509A9A9A9F96963B0C0C3200003200008C
+ 7F7F989898959595A2A2A2B9B9B9CFCFCFDADADAA494943200004014148C8C8C
+ 7A7A7A7272727676768181819090909B9B9B9D9D9D4B2525320000320000431D
+ 1D7979798B8B8BA9A9A9C8C8C8E2E2E2F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF1F1F1E3
+ E3E3D3D3D3BFBFBFB0B0B0A1A1A19494948686867A7A7A4C4C901919C11414C7
+ 1414C71414C71414C71414C74141C89F9FD77272D85A5AD6FAFAFAFCFCFCFEFE
+ FEFCFCFCF7F7F7EBEBEBD9D9D9C1C1C1A5A5A58C8C8C7C7C7C74747472727270
+ 6D6D584242390E0E3200003200003200003200008C7F7FBEBEBEC4C4C4887575
+ 320000320000320000320000665050ADADADCBCBCBE4E4E4F5F5F5FDFDFDFFFF
+ FFFFFFFFFEFEFEEBE8E88F7676CFCCCCBFBFBFA1A1A14B292932000032000032
+ 0000320000320000513131A4A4A4BFBFBFCBCBCB7C6363320000320000320000
+ 6D5D5D949494B0B0B0CECECEE6E6E6F6F6F6FEFEFEFFFFFFFFFFFF7DBA7DFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEEEEEE2020C81414C71414C71414C739
+ 39A97F7F7F949494B6B6B6D4D4D4E9E9E9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFBFBFBEFEFEF5C36363200003200003200007164648C8C8CA4A4A4C2C2
+ C2DCDCDCE6E6E6E1E1E13B0C0C3200003200003200003200008282829D9D9DBD
+ BDBD806767320000320000502B2B9898989292929B9B9BB0B0B0C6C6C6D3D3D3
+ D1D1D1552F2F3200006552526E6E6E6262626060606868687373737B7B7B7D7D
+ 7D4C2D2D320000320000320000717171858585A4A4A4C4C4C4DDDDDDF0F0F0FB
+ FBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFAFAFAF1F1F1E3E3E3D0D0D0B8B8B8A2A2A28F8F8F7E7E7E707070
+ 48488C1414C71414C71414C71414C71414C71414C75959C9E0E0E0EEEEEEF7F7
+ F7FCFCFCFEFEFEFFFFFFFFFFFFFBFBFBF2F2F2E3E3E3CCCCCCAFAFAF92929279
+ 7979686868626262626262584B4B320000320000320000320000320000573838
+ B1B1B1C2C2C2C5C5C55C39393200003200003200003200008F8C8CB6B6B6D3D3
+ D3E9E9E9F8F8F8FEFEFEFFFFFFFFFFFFFCFCFCF5F5F5E6E6E6CFCFCFB1B1B15B
+ 3F3F320000320000320000320000320000320000685252B3B3B3CACACAD1D1D1
+ 7E6565320000320000320000736666959595B2B2B2CFCFCFE7E7E7F7F7F7FFFF
+ FFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEFEFEF45
+ 45CC1414C71414C71414C72D2DB47D7D7D909090B1B1B1CECECEE3E3E3F3F3F3
+ FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFCFCFCF1F1F15D37373200003200003200
+ 007164648C8C8CA2A2A2C1C1C1DADADAE5E5E5E0E0E032000032000032000032
+ 0000431D1D8383839E9E9EBFBFBFC8C5C5320000320000320000857C7C8F8F8F
+ 949494A7A7A7BEBEBECBCBCBCBCBCB998C8C3200004017176565655656565151
+ 515555555C5C5C626262646464452525320000320000320000635D5D7F7F7F9E
+ 9E9EBDBDBDD6D6D6E9E9E9F5F5F5FAFAFAFBFBFBFEFEFEFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF3F3F3CCCCE2D3D3D3B9B9B9
+ A1A1A18989897474743C3C961414C71414C71414C71414C71414C71414C75656
+ C6DADADAEBEBEBF6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFEFEFEF9F9F9EDEDEDDA
+ DADABFBFBF989595503030401A1A3C17174832325C5C5C524646320000320000
+ 3200003200005C4646999999B5B5B5C5C5C5C5C5C53A0B0B3200003200003200
+ 004B29299C9C9CBCBCBCD8D8D8ECECECF8F8F8FDFDFDFDFDFDFCFCFCF8F8F8EE
+ EEEEDDDDDDC3C3C3877A7A320000320000320000320000320000320000320000
+ 958F8FC2C2C2D4D4D4D8D8D8593333320000320000320000726565959595B2B2
+ B2D0D0D0E6E6E6F6F6F6FEFEFEFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFBFBFBEFEFEF4545CC1414C71414C71414C72D2DB47A7A7A8B8B8B
+ A9A9A9C4C4C4D9D9D9E9E9E9F3F3F3F7F7F7FBFBFBFEFEFEFFFFFFFCFCFCF2F2
+ F25D37373200003200003200006653538B8B8BA1A1A1BFBFBFDADADAE4E4E4E0
+ E0E0320000320000320000320000431D1D8383839F9F9FC1C1C1D4D4D45A3535
+ 3200003200005F43438D8D8D8F8F8F9F9F9FB6B6B6C5C5C5A195953200003200
+ 003200003E18184B3E3E4A4A4A4B4B4B4F4F4F5151515353533A141432000032
+ 0000320000594C4C7A7A7A979797B3B3B3CACACADBDBDBE7E7E7EDEDEDF1F1F1
+ F5F5F5F8F8F8FBFBFBFCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD
+ DADAF02121C9B5B5D7C2C2C2A6A6A683838F3737A81414C71414C71414C71414
+ C71414C71414C75050C0CBCBCBDFDFDFEEEEEEF8F8F8FCFCFCFEFEFEFFFFFFFF
+ FFFFFEFEFEF6F6F6E7E7E7D1D1D1ABA8A8441B1B320000320000320000370B0B
+ 626262584B4B3200003200003200003200007D7D7D9B9B9BB6B6B6C4C4C4A79D
+ 9D320000320000320000320000685555A2A2A2C2C2C2DADADAEBEBEBF3F3F3F5
+ F5F5F5F5F5F4F4F4EFEFEFE4E4E4D1D1D1AFACAC380909320000320000320000
+ 3200003200003200003E1212B6B6B6D1D1D1DEDEDEDDDDDD5933333200003200
+ 00320000716464939393AFAFAFCBCBCBE2E2E2F2F2F2FBFBFBFEFEFEFEFEFE00
+ EB17FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F14646CD1414C71414C7
+ 1414C72C2CB37777778383839E9E9EB5B5B5C8C8C8D9D9D9E6E6E6EDEDEDF5F5
+ F5FBFBFBFEFEFEFCFCFCF2F2F28970703200003200003200005B42428A8A8A9E
+ 9E9EBDBDBDD8D8D8E3E3E3C9C3C3320000320000320000320000543B3B838383
+ A0A0A0C2C2C2D6D6D6866D6D3200003200003809098C8C8C8B8B8B999999B0B0
+ B0C1C1C1684949320000320000320000320000320000370E0E4330304B48484D
+ 4D4D4B4848330404320000320000320000564949767676909090A9A9A9BBBBBB
+ CACACAD4D4D4DADADADFDFDFE6E6E6EBEBEBF0F0F0F5F5F5F9F9F9FCFCFCFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFEFEFEC0C0ED1414C71414C77B7BC97F7FB82424C11414
+ C71414C71414C71414C71414C71414C74545B6B0B0B0C6C6C6D9D9D9E8E8E8F2
+ F2F2F9F9F9FDFDFDFFFFFFFFFFFFFCFCFCF2F2F2E1E1E1C8C8C8563434320000
+ 320000320000320000320000594646635656320000320000320000390D0D7F7F
+ 7F9C9C9CB7B7B7C2C2C2816B6B320000320000320000320000848181A4A4A4C1
+ C1C1D6D6D6E2E2E2E7E7E7E6E6E6E6E6E6E6E6E6E2E2E2D8D8D8C5C5C5664A4A
+ 3200003200003200003200003200003200003200006E5555C6C6C6DDDDDDE6E6
+ E6E0E0E05933333200003200003200007771718E8E8EA8A8A8C4C4C4DADADAEC
+ ECECF7F7F7FBFBFBFEFEFE800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC
+ F2F2F24646CD1414C71414C71414C72626B97272727A7A7A8F8F8FA1A1A1B3B3
+ B3C3C3C3D2D2D2DEDEDEEBEBEBF5F5F5FBFBFBFCFCFCF3F3F38A717132000032
+ 00003200005B42428989899D9D9DBCBCBCD7D7D7E3E3E3B5A8A8320000320000
+ 320000320000543B3B848484A0A0A0C2C2C2D7D7D7B3A6A63200003200003200
+ 00746868878787939393AAAAAABDBDBD55303032000032000032000032000032
+ 00003200003200003200003E1B1B3B15153200003200003200003200004B3232
+ 7676768D8D8D9F9F9FABABABB5B5B5BCBCBCC1C1C1C6C6C6CECECED7D7D7E0E0
+ E0E9E9E9F1F1F1F7F7F7FBFBFBFEFEFEFFFFFFFEFEFEFEFEFEFDFDFDFBFBFBFB
+ FBFBFAFAFAFBFBFBFBFBFBFCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEDEDEF52121C91414
+ C71414C71414C71414C71414C71414C71414C71414C71414C73939A98C8C8CA1
+ A1A1B6B6B6C8C8C8DADADAE8E8E8F2F2F2F9F9F9FEFEFEFFFFFFFBFBFBEFEFEF
+ DCDCDC9E91913200003200003200003200003200003200003D11117366663200
+ 00320000320000411C1C8181819E9E9EB7B7B7C2C2C26E525232000032000032
+ 0000401717898989A1A1A1B9B9B9CACACAD1D1D1D3D3D3D0D0D0D0D0D0D1D1D1
+ D0D0D0C9C9C9A8A2A23200003200003200003200003200003200003200003809
+ 09AAA4A4D2D2D2E5E5E5E9E9E9E1E1E15933333200003200003200007B7B7B86
+ 86869D9D9DB7B7B7CECECEE3E3E3F1F1F1F8F8F8FDFDFD000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFDFDFDF2F2F27A7AD41414C71414C71414C71414C76E6E
+ 6E7171718080808D8D8D9B9B9BAAAAAABBBBBBCBCBCBDDDDDDECECECF7F7F7FB
+ FBFBF3F3F38A71713200003200003200005B42428989899B9B9BBABABAD6D6D6
+ E3E3E3B5A8A8320000320000320000320000553C3C848484A0A0A0C2C2C2D8D8
+ D8D4D1D1320000320000320000593D3D8585858E8E8EA4A4A4BABABA57313132
+ 0000320000320000320000320000320000320000320000320000320000320000
+ 3200003200003200005037377E7E7E9090909B9B9BA0A0A0A1A1A1A2A2A2A3A3
+ A3A8A8A8B2B2B2BEBEBECBCBCBD9D9D9E7E7E7F2F2F2F9F9F9FDFDFDFEFEFEFC
+ FCFCF9F9F9F5F5F5F2F2F2EFEFEFEDEDEDEEEEEEF1F1F1F4F4F4F8F8F8FBFBFB
+ FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEFBFBFBA1A1E41414C71414C71414C71414C71414C71414C71414C714
+ 14C72424B66F6F6F7D7D7D8C8C8C9E9E9EB0B0B0C5C5C5D8D8D8E9E9E9F4F4F4
+ FBFBFBFEFEFEF9F9F9ECECECD7D7D75D3A3A3200003200003200003200003200
+ 00320000320000380909320000320000320000431D1D8484849F9F9FB7B7B7C1
+ C1C1542E2E3200003200003200004C2D2D838383989898ABABABB6B6B6B9B9B9
+ B6B6B6B3B3B3B4B4B4B8B8B8BABABAB8B8B86E55553200003200003200003200
+ 00320000320000320000725959C8C8C8DADADAE7E7E7E8E8E8DDDDDD3B0C0C32
+ 00003200003200007272727979798D8D8DA6A6A6BEBEBED7D7D7E9E9E9F3F3F3
+ FBFBFB800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F37B7BD51414
+ C71414C71414C71414C76C6C6C6C6C6C7777777F7F7F898989959595A4A4A4B6
+ B6B6CDCDCDE0E0E0EFEFEFF8F8F8F3F3F38B72723200003200003200005B4242
+ 878787999999B8B8B8D5D5D5E3E3E3B5A9A9320000320000320000320000553C
+ 3C858585A0A0A0C2C2C2D9D9D9E0E0E0320000320000320000421A1A8383838A
+ 8A8A9F9F9FB8B8B8573131320000320000320000320000320000320000320000
+ 3200003200003200003200003200003200003200005940408E8E8E9B9B9B9F9F
+ 9F9C9C9C9696968E8E8E8989898A8A8A949494A3A3A3B5B5B5C8C8C8DDDDDDEC
+ ECECF6F6F6FBFBFBFBFBFBF6F6F6F0F0F0E9E9E9E1E1E1DCDCDCD9D9D9DADADA
+ DFDFDFE6E6E6ECECECF4F4F4F9F9F9FCFCFCFEFEFEFEFEFEFDFDFDFBFBFBF9F9
+ F9F8F8F8F7F7F7F7F7F7F8F8F8FAFAFAFCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFF
+ FFFFFEFEFEFDFDFDFBFBFBFAFAFAF8F8F8F8F8F8F8F8F8F8F8F8FAFAFAFCFCFC
+ FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8EFEFEF6060D01414C71414C714
+ 14C71414C71414C71414C72323B562626D6C6C6C7373737B7B7B878787989898
+ ADADADC5C5C5DADADAEBEBEBF6F6F6FCFCFCF8F8F8E9E9E9C9C6C63200003200
+ 0032000032000032000032000032000032000032000032000032000032000049
+ 2626888888A1A1A1B8B8B8BFBFBF3A0B0B320000320000320000564040797979
+ 8989899696969C9C9C9B9B9B9595959292929797979E9E9EA5A5A5A8A8A83E13
+ 13320000320000320000320000320000320000492020B7B4B4D0D0D0DADADAE3
+ E3E3E2E2E2D6D6D63200003200003200003200006767676B6B6B7D7D7D949494
+ ADADADCBCBCBE0E0E0EFEFEFFAFAFA00C15DFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEF4F4F47B7BD51414C71414C71414C71414C76B6B6B6B6B6B73737379
+ 79797E7E7E878787939393A4A4A4BCBCBCD4D4D4E7E7E7F3F3F3F2F2F2AD9D9D
+ 320000320000320000462121868686979797B6B6B6D4D4D4E2E2E2B5A9A93200
+ 00320000320000320000563D3D858585A0A0A0C2C2C2D9D9D9E1E1E15C363632
+ 00003200003200008080808686869B9B9BB6B6B6694A4A320000320000320000
+ 3200003200003200003200003200003200003200003200003200003200003200
+ 00654C4CA4A4A4ADADADACACACA2A2A29494948383837878787676767E7E7E8F
+ 8F8FA5A5A5BCBCBCD5D5D5E8E8E8F3F3F3F8F8F8F6F6F6EEEEEEE2E2E2D5D5D5
+ CACACAC1C1C1BDBDBDBFBFBFC5C5C5D0D0D0DBDBDBE7E7E7F0F0F0F7F7F7F9F9
+ F9F8F8F8F5F5F5F1F1F1ECECECE9E9E9E7E7E7E8E8E8EBEBEBEFEFEFF4F4F4F8
+ F8F8FBFBFBFEFEFEFEFEFEFDFDFDFBFBFBF7F7F7F2F2F2EEEEEEEBEBEBE9E9E9
+ E9E9E9ECECECEFEFEFF4F4F4F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF2F2F2E4
+ E4E4D1D1D13D3DC41414C71414C71414C71414C73636A66A6A75727272737373
+ 727272727272777777848484989898B0B0B0CBCBCBE0E0E0F0F0F0F9F9F9F5F5
+ F5E7E7E7958282320000320000320000320000320000461D1D64444432000032
+ 0000320000320000320000583F3F8B8B8BA3A3A3B8B8B8BFBFBF320000320000
+ 3200003200005B4F4F6C6C6C7777778080808282827F7F7F7A7A7A7979798080
+ 808A8A8A959595887E7E320000320000320000320000320000320000390A0AA0
+ 9797C9C9C9D1D1D1D5D5D5DBDBDBD7D7D7CBCBCB320000320000320000350606
+ 5C5C5C5F5F5F6E6E6E858585A1A1A1C2C2C2DADADAECECECF9F9F90DAE04FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF5F5F57C7CD61414C71414C71414C714
+ 14C76D6D6D4A4A8D56568E6D6D847E7E7E828282898989969696ACACACC5C5C5
+ DCDCDCEDEDEDF0F0F0B9ACAC320000320000320000462121858585959595B3B3
+ B3D1D1D1E1E1E1B5A9A9320000320000320000320000563D3D8585859F9F9FC1
+ C1C1D9D9D9E2E2E25C36363200003200003200006C5F5F838383969696B3B3B3
+ 7D64643200003200003200003200003200003200003200003200003200003200
+ 00320000320000320000320000745B5B785F5F5E3C3C918181ADADAD98989880
+ 80807171716B6B6B7171718484849E9E9EB9B9B9D3D3D3E6E6E6F2F2F2F4F4F4
+ EFEFEFE0E0E0CECECEBCBCBCABABAB9F9F9F9A9A9A9C9C9CA4A4A4B3B3B3C3C3
+ C3D4D4D4E3E3E3EDEDEDF1F1F1EFEFEFE9E9E9E1E1E1DADADAD3D3D3D1D1D1D1
+ D1D1D6D6D6DDDDDDE6E6E6EEEEEEF5F5F5F9F9F9FBFBFBF8F8F8F3F3F3ECECEC
+ E3E3E3DBDBDBD6D6D6D2D2D2D3D3D3D7D7D7DEDEDEE6E6E6EFEFEFF6F6F6FBFB
+ FBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+ FEFEFBFBFBF4F4F4E7E7E7D5D5D5BEBEBE9D9DA82B2BBE1414C71414C72626B9
+ 50509E4C4CA64D4DA76767947C7C7C7474747070707676768686869E9E9EBABA
+ BAD4D4D4E9E9E9F5F5F5F3F3F3E5E5E56C4D4D32000032000032000032000042
+ 1919A09D9DC0C0C06C4C4C3200003200003200003200005940408D8D8DA4A4A4
+ B9B9B99C8F8F3200003200003200003200005F5C5C6262626969696E6E6E7070
+ 706C6C6C6868686868687171717D7D7D8A8A8A68525232000032000032000032
+ 0000320000320000847171C5C5C5CECECED0D0D0CECECED1D1D1CBCBCBBDBDBD
+ 3200003200003200003C17175353535656566464647B7B7B989898BCBCBCD7D7
+ D7EBEBEBF9F9F900E80EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF6F6F6A4
+ A4DC1414C71414C71414C71414C75959862B2BB21414C71A1AC4727294878787
+ 8888888F8F8F9F9F9FB7B7B7D1D1D1E6E6E6ECECECB9ACAC3200003200003200
+ 00462121838383929292B0B0B0CFCFCFE0E0E0E2E2E232000032000032000032
+ 0000563D3D8585859E9E9EC0C0C0D9D9D9E3E3E37C6060320000320000320000
+ 5D4747808080929292B0B0B0A296963200003200003200003200003200003200
+ 00320000320000320000320000320000320000320000320000AB9E9E856C6C32
+ 00003200003A0B0B5B3C3C6A5A5A6C69696868686F6F6F838383A0A0A0BCBCBC
+ D7D7D7E9E9E9F1F1F1EFEFEFE4E4E4D1D1D1B9B9B9A1A1A18E8E8E8080807A7A
+ 7A7D7D7D868686959595A9A9A9BFBFBFD2D2D2E0E0E0E6E6E6E3E3E3D9D9D9CD
+ CDCDC1C1C1B8B8B8B4B4B4B6B6B6BCBCBCC5C5C5D2D2D2DFDFDFEBEBEBF2F2F2
+ F4F4F4F0F0F0E8E8E8DBDBDBCECECEC3C3C3BABABAB6B6B6B7B7B7BDBDBDC7C7
+ C7D3D3D3E0E0E0ECECECF5F5F5FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8ECECECDADADAC3C3C3AAAAAA939393
+ 76768C2121BE1414C71414C71414C71414C71414C71414C72424C16060977474
+ 747171717A7A7A8D8D8DAAAAAAC8C8C8E0E0E0EFEFEFF0F0F0E3E3E34E252532
+ 0000320000320000360707898686ADADADC6C6C6BCB6B6320000320000320000
+ 3200005A41418F8F8FA6A6A6B9B9B99A8E8E3200003200003200003200005F5F
+ 5F5E5E5E6565656969696663635646464930303E1818523C3C77777784848455
+ 3535320000320000320000320000320000806D6DC1C1C1CDCDCDD1D1D1CDCDCD
+ C8C8C8C8C8C8C0C0C0A09A9A3200003200003200003B15154D4D4D483838380C
+ 0C7A7A7A989898BBBBBBD7D7D7ECECECF9F9F9800080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFF7F7F7B2B2DF1414C71414C71414C71414C75C5C891414C7
+ 1414C71414C71C1CC47B7B9C8E8E8E8C8C8C979797ABABABC5C5C5DDDDDDE7E7
+ E7B7AAAA3200003200003200004620208282828F8F8FADADADCCCCCCDEDEDEE1
+ E1E1320000320000320000320000573E3E8585859D9D9DBFBFBFD8D8D8E3E3E3
+ 876E6E3200003200003200004E2F2F7E7E7E8F8F8FADADADC6C6C63B0C0C3200
+ 00320000867777827676604444390A0A32000032000032000032000032000032
+ 0000320000D0CACA8E75753200003200003200003200003200003200003D1414
+ 4E3232685555A8A8A8C5C5C5DDDDDDEDEDEDF0F0F0E9E9E9D8D8D8BFBFBFA3A3
+ A3898989767676696969656565686868717171808080949494ABABABC1C1C1D1
+ D1D1D7D7D7D3D3D3C5C5C5B6B6B6A6A6A69B9B9B979797999999A0A0A0ABABAB
+ BABABACCCCCCDCDCDCE7E7E7EBEBEBE6E6E6D9D9D9C8C8C8B6B6B6A8A8A89E9E
+ 9E9999999A9A9AA1A1A1ACACACBCBCBCCECECEDFDFDFEDEDEDF7F7F7FDFDFDFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF2F2F2E2E2E2
+ CCCCCCB1B1B198989859599D1919C31414C71414C71414C71414C71414C71414
+ C71414C71414C71414C757579A7272727373738282829B9B9BBCBCBCD7D7D7E9
+ E9E9ECECECE2E2E2320000320000320000320000503030929292B2B2B2C9C9C9
+ D2D2D23200003200003200003200005A4141909090A7A7A7BABABA816B6B3200
+ 00320000320000401A1A5F5F5F616161625C5C50373736070732000032000032
+ 0000401A1A7777778484844923233200003200003200003200005C3D3DB9B9B9
+ C9C9C9D1D1D1AA9D9DC9C9C9C2C2C2C0C0C0B7B7B78A7D7D3200003200003200
+ 00360A0A3913133200003200008080809E9E9EC1C1C1DBDBDBEEEEEEFAFAFA00
+ 6B13FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8B3B3E01414C71414C7
+ 1414C71414C75D5D8A1414C71414C71414C71414C72F2FC09797978F8F8F9191
+ 91A1A1A1B9B9B9D2D2D2E1E1E1CAC4C43200003200003200003708088080808C
+ 8C8CA7A7A7C7C7C7DBDBDBE0E0E0320000320000320000320000573E3E848484
+ 9B9B9BBCBCBCD7D7D7E3E3E3886F6F320000320000320000451F1F7D7D7D8C8C
+ 8CA9A9A9C2C2C27F6666320000320000A4A4A49292928C8C8C8C898976636341
+ 15153200003200003200003200006D4A4AF3F3F3F7F7F7AA97973C0D0D320000
+ 320000320000320000320000320000320000B3B3B3CECECEE5E5E5F0F0F0EFEF
+ EFE2E2E2CCCCCCAFAFAF9090907777776565655B5B5B5B5B5B60606069696977
+ 77778989899E9E9EB3B3B3C2C2C2C8C8C8C3C3C3B3B3B3A2A2A2939393898989
+ 8686868888888D8D8D979797A5A5A5B8B8B8CBCBCBD9D9D9DEDEDED8D8D8C9C9
+ C9B4B4B4A1A1A19494948B8B8B8787878888888C8C8C979797A6A6A6BABABACF
+ CFCFE3E3E3F1F1F1FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FDFDFDF7F7F7EAEAEAD6D6D6BCBCBC9F9F9F4040B01414C71414C71414C71414
+ C71414C71414C71414C71414C71414C71414C71414C71414C75E5E8A7171717A
+ 7A7A909090B0B0B0CECECEE3E3E3E9E9E9D5D2D2320000320000320000320000
+ 655252959595B5B5B5CBCBCBD3D3D35832323200003200003200006E62629191
+ 91A9A9A9BBBBBB785F5F320000320000320000401A1A5B525247282832000032
+ 0000320000320000320000320000411C1C7A7A7A868686320000320000320000
+ 3200004B2525ACACACC1C1C1CECECEA19191320000C5C5C5BDBDBDBCBCBCB3B3
+ B38679793200003200003200003200003200003200003200008E8E8EABABABCA
+ CACAE0E0E0F1F1F1FBFBFB800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ F8F8F8B4B4E11414C71414C71414C71414C75F5F8C1A1AC41414C71414C71414
+ C71414C75A5AB49393938E8E8E989898ADADADC8C8C8DADADADCDCDC32000032
+ 00003200003200007C7C7C8686869F9F9FBFBFBFD4D4D4DBDBDB320000320000
+ 320000320000573E3E8383839A9A9ABBBBBBD6D6D6E2E2E29E8B8B3200003200
+ 003200003607077C7C7C898989A4A4A4BDBDBDBDBABA3A0B0B3200007E717183
+ 83837A7A7A7D7D7D8989899B9B9B9184847B6262705050968080E4E1E1F8F8F8
+ FCFCFCF8F8F8B0A0A0320000320000320000320000320000320000320000BBBB
+ BBD7D7D7EAEAEAF2F2F2ECECECDADADAC1C1C1928C8C50303032000032000032
+ 0000401D1D594C4C6F6F6F7B7B7B8989899B9B9BACACACBABABABEBEBEB8B8B8
+ A8A8A89898988C8C8C8585858383838484848686868C8C8C959595A6A6A6B9B9
+ B9C9C9C9D0D0D0CBCBCBBCBCBCA7A7A79696968B8B8B85858583838383838384
+ 84848A8A8A959595A8A8A8BFBFBFD7D7D7E9E9E9F6F6F6FDFDFDFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF2F2F2E1E1E1C9C9C9ACACAC4343B31414
+ C71414C71414C71414C71414C71F1FC84646CD3C3CCD1414C71414C71414C714
+ 14C71414C72121BE727272757575878787A5A5A5C6C6C6DDDDDDE5E5E5B3A6A6
+ 320000320000320000320000716464989898B7B7B7CDCDCDD4D4D45832323200
+ 003200003200006E6262929292AAAAAABCBCBC785F5F32000032000032000032
+ 0000320000320000320000320000320000320000320000320000441E1E7E7E7E
+ 8A8A8A3200003200003200003200008F8888B1B1B1C4C4C4CECECE8168683200
+ 00C2C2C2BCBCBCBBBBBBB3B3B379666632000032000032000032000032000032
+ 0000320000A0A0A0BCBCBCD6D6D6E8E8E8F5F5F5FCFCFC001F66FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8D0D0E61414C71414C71414C71414C74D4D
+ 9B6E6E8F6F6FA61D1DC51414C71414C71D1DC58F8F9A8E8E8E929292A3A3A3BD
+ BDBDD0D0D0D5D5D53200003200003200003200007777777F7F7F959595B3B3B3
+ C9C9C9D1D1D13B0C0C320000320000320000573E3E838383989898B9B9B9D5D5
+ D5E2E2E2B5A8A83200003200003200003200007A7A7A888888A0A0A0B6B6B6BE
+ BEBE745B5B320000634D4D7777776E6E6E7070707B7B7B8B8B8B9E9E9EB2B2B2
+ C7C7C7DADADAEAEAEAF5F5F5FBFBFBF8F8F8D4CECE3200003200003200003200
+ 003B0F0F5C4343695050C0C0C0DBDBDBEEEEEEF2F2F2E9E9E9D4D4D4A59F9F38
+ 09093200003200003200003200003200003200005539398E8E8E989898A4A4A4
+ AFAFAFB8B8B8B9B9B9B3B3B3A4A4A47E7171786B6B776A6A817B7B8F8F8F8D8D
+ 8D8C8C8C8E8E8E999999AAAAAABABABAC2C2C2C0C0C0B3B3B3A1A1A18E8B8B77
+ 6A6A7569698683838C8C8C8989898787878C8C8C9B9B9BB1B1B1CBCBCBE1E1E1
+ F2F2F2FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8EBEBEBD7D7
+ D7BCBCBC6969AD1414C71414C71414C71414C71D1DC57676C5DBDBDBEDEDEDF8
+ F8F8C0C0ED2121C91414C71414C71414C71414C75050937373738080809C9C9C
+ BFBFBFD7D7D7E0E0E0B0A3A33200003200003200003200008686869A9A9AB9B9
+ B9CECECED4D4D44E25253200003200003200006E6262939393ACACACBDBDBD67
+ 4747320000320000320000320000320000320000320000320000320000320000
+ 3200003200004E2F2F838383776A6A320000320000320000502D2D9C9C9CB2B2
+ B2C3C3C3CBCBCB7F6666320000BCBCBCB9B9B9AAA4A4532D2D32000032000032
+ 0000320000320000320000320000320000B5B5B5CECECEE3E3E3F0F0F0F8F8F8
+ FEFEFE800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EBEBEB1414
+ C71414C71414C71414C746469F8282829898988282BB1414C71414C71414C759
+ 59B28E8E8E8D8D8D9A9A9AB1B1B1C5C5C5CCCCCC320000320000320000320000
+ 6B6868757575878787A3A3A3B9B9B9C3C3C3552F2F3200003200003200005236
+ 36838383969696B6B6B6D3D3D3E1E1E1B5A8A83200003200003200003200006C
+ 63638686869B9B9BB0B0B0B6B6B6A4A1A13809093C10107070706969696C6C6C
+ 777777838383919191A2A2A2B6B6B6CBCBCBDEDEDEEEEEEEF8F8F8F8F8F8ECEC
+ EC320000320000320000320000583F3F898989A1A1A1C2C2C2DDDDDDEEEEEEF1
+ F1F1E5E5E5CDCDCD502B2B320000320000320000320000320000320000320000
+ 3200005F3F3FB0B0B0B6B6B6BABABABDBDBDB3B0B0725959390A0A3200003200
+ 003200003200004F29298980809595958F8F8F9292929E9E9EADADADB6B6B6B7
+ B7B7887878471E1E3200003200003200003200004E28288B85858E8E8E8A8A8A
+ 929292A5A5A5BFBFBFD8D8D8ECECECF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFCFCFCF4F4F4E4E4E4CCCCCC9A9AB11A1AC41414C71414C71414C71C1CC496
+ 96B7D1D1D1E6E6E6F5F5F5FCFCFCFDFDFD9292E01414C71414C71414C71414C7
+ 2626B97272727C7C7C959595B7B7B7D1D1D1DCDCDCAEA1A13200003200003200
+ 003200008787879C9C9CBBBBBBCECECED4D4D432000032000032000032000070
+ 6363959595ADADADBFBFBF552F2F320000320000320000320000320000320000
+ 3200003200003200003200003200003200005940408686867A6D6D3200003200
+ 003200006E5B5B9B9B9BADADADBCBCBCC2C2C2705454320000B3B3B3B6B6B688
+ 7575320000320000320000320000320000320000320000320000502B2BC8C8C8
+ DDDDDDEEEEEEF7F7F7FBFBFBFEFEFE002D71FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFF9F9F9ECECEC1414C71414C71414C71414C746469F818181989898B6
+ B6B63434C61414C71414C72626C38F8F8F8A8A8A929292A6A6A6B9B9B9C0C0C0
+ 320000320000320000320000594C4C6A6A6A7777778F8F8FA5A5A5B0B0B0502B
+ 2B320000320000320000441E1E828282959595B3B3B3D1D1D1E0E0E0B5A8A832
+ 0000320000320000320000685B5B848484989898ABABABAFAFAF8E8484370808
+ 3200003D14144F36366B65657E7E7E8686868E8E8E989898A7A7A7BBBBBBD1D1
+ D1E5E5E5F3F3F3F6F6F6ECECEC320000320000320000320000594040898989A2
+ A2A2C2C2C2DDDDDDEDEDEDEFEFEFE0E0E0A19595320000320000320000320000
+ 3200003200003200003200003200003200007E6565CBCBCBCBCBCBC8C8C84318
+ 183200003200003200003200003200003200003200003A0B0B8E84849494948F
+ 8F8F969696A1A1A1A3A0A0512C2C320000320000320000320000320000320000
+ 320000390A0A847B7B8C8C8C8E8E8E9C9C9CB6B6B6D1D1D1E7E7E7F6F6F6FEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAEFEFEFDCDCDCC2C2C23737BE1414C714
+ 14C71414C71414C76C6CB0C1C1C1DBDBDBEFEFEFFAFAFAFEFEFEFEFEFEF8F8F8
+ 2E2ECB1414C71414C71414C71414C766667D7979798F8F8FB1B1B1CCCCCCD8D8
+ D8AB9F9F3200003200003200003708088888889E9E9EBCBCBCCFCFCFD3D3D332
+ 0000320000320000320000756C6C969696B0B0B0C0C0C0553030320000320000
+ 320000320000320000401414887575BCB9B9552F2F3200003200003200005B42
+ 428B8B8B7F72723200003200003200007D7474959595A4A4A4AFAFAFB4B4B451
+ 2C2C320000AAAAAAB1B1B1775E5E320000320000320000320000320000320000
+ 320000320000542E2ED5D5D5E9E9E9F6F6F6FBFBFBFEFEFEFFFFFF677161FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAECECEC1414C71414C71414C714
+ 14C746469F808080969696B6B6B68585C81414C71414C71414C76A6AA3888888
+ 8C8C8C9A9A9AABABABB2B2B24115153200003200003200004A34345F5F5F6868
+ 687B7B7B8F8F8F9B9B9B5B3B3B320000320000320000441E1E828282939393B0
+ B0B0CFCFCFDFDFDFB3A7A7320000320000320000320000685B5B838383959595
+ A7A7A79A94943809093200003200003200003200003708086B58589292929292
+ 929595959D9D9DADADADC3C3C3DADADAECECECF3F3F3ECECEC50282832000032
+ 0000320000594040898989A1A1A1C2C2C2DDDDDDECECECECECECDDDDDD5E3C3C
+ 320000320000320000320000320000320000320000320000320000320000471B
+ 1BE0E0E0DDDDDDD6D6D64F262632000032000032000032000032000032000032
+ 0000320000390A0A8D87878F8F8F909090989898796666320000320000320000
+ 320000320000320000320000320000320000471E1E9090908C8C8C969696AEAE
+ AECACACAE3E3E3F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8E9E9E9D4
+ D4D48D8DBA1414C71414C71414C71414C73232B9ADADADCBCBCBE3E3E3F4F4F4
+ FDFDFDFFFFFFFFFFFFF9F9F97272D81414C71414C71414C71414C74949987777
+ 778A8A8AABABABC8C8C8D4D4D4AA9D9D320000320000320000462020898989A0
+ A0A0BEBEBED0D0D0D3D3D3320000320000320000320000868686989898B1B1B1
+ C2C2C25530303200003200003200003708086E5B5BABABABC0C0C0C8C8C85530
+ 303200003200003200006754549090908276763200003200003200008C8C8C8C
+ 8C8C9696969D9D9DA1A1A14E28284D2727A1A1A1ADADAD9A8E8E320000320000
+ 320000320000320000320000320000401414856F6FDFDFDFF1F1F1FBFBFBFEFE
+ FEFFFFFFFFFFFF00310EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEE
+ EEEE1414C71414C71414C71414C73939A97F7F7F959595B6B6B6BFBFCA1414C7
+ 1414C71414C73C3CB88787878686868F8F8F9E9E9EA4A4A44D27273200003200
+ 003200003F20205656565C5C5C6969697A7A7A8686865F464632000032000032
+ 0000441E1E818181919191ADADADCBCBCBDDDDDDC7C1C1320000320000320000
+ 3200005A4444838383939393A4A4A45C3D3D3200003200003200003200003200
+ 003200003200007764649C9C9C959595969696A1A1A1B6B6B6CFCFCFE5E5E5EF
+ EFEFECECEC5C3636320000320000320000594040898989A1A1A1C1C1C1DCDCDC
+ EBEBEBEBEBEBDBDBDB3200003200003200003200003200003200003809096E52
+ 52705050320000320000320000D7D1D1EBEBEBE2E2E25A35353200003200003A
+ 0B0B927F7FA49494471B1B3200003200003200005B3B3B8E8E8E8C8C8C929292
+ 8477773200003200003200004C23239B8B8B7A5E5E3200003200003200003200
+ 006E5B5B8A8A8A929292A7A7A7C5C5C5DFDFDFF1F1F1FCFCFCFFFFFFFFFFFFFF
+ FFFFFDFDFDF4F4F4E3E3E3CBCBCB3939C01414C71414C71414C71414C77575A2
+ B7B7B7D4D4D4EAEAEAF8F8F8FEFEFEFFFFFFFFFFFFFBFBFBB8B8E51414C71414
+ C71414C71414C73232AD747474868686A7A7A7C3C3C3D1D1D18A747432000032
+ 00003200004620208A8A8AA1A1A1BFBFBFD0D0D0D2D2D2320000320000320000
+ 320000868686999999B3B3B3C3C3C35731313200003200003200007366669494
+ 94ACACACBFBFBFC6C6C6552F2F320000320000320000746868979797897C7C32
+ 00003200003200008787878181818484848888888B8B8B3200004A2424999999
+ ACACACBFBFBF573131320000320000320000320000462020746464AEAEAECDCD
+ CDE5E5E5F5F5F5FEFEFEFFFFFFFFFFFFFFFFFF11C010FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFBFBFBEFEFEF4545CC1414C71414C71414C72D2DB47E7E7E
+ 939393B4B4B4CBCBCB4343CA1414C71414C71414C780808B8282828888889393
+ 939A9A9A4A24243200003200003200003405055151515454545D5D5D6B6B6B77
+ 77776350503200003200003200003B0F0F8282828F8F8FAAAAAAC8C8C8DADADA
+ DCDCDC320000320000320000320000563D3D828282929292A2A2A2390A0A3200
+ 0032000032000032000032000032000032000032000083737399999992929298
+ 9898ABABABC5C5C5DDDDDDEBEBEBEAEAEA5C36363200003200003200005A4141
+ 898989A1A1A1C0C0C0DBDBDBEAEAEAE9E9E9B0A3A33200003200003200003200
+ 003200003D1111A09D9DC8C8C8E1E1E1D9D3D3572E2E320000AE9B9BF5F5F5EB
+ EBEB5D38383200003B0C0CAFA6A6D6D6D6E0E0E0D9D6D6745454320000320000
+ 320000807A7A8888888D8D8D8175753200003200004C2323BEBBBBD4D4D4DEDE
+ DECAC4C4461A1A3200003200003D11118686868D8D8DA3A3A3C1C1C1DCDCDCEF
+ EFEFFBFBFBFFFFFFFFFFFFFFFFFFFBFBFBF0F0F0DDDDDDAEAEC41414C71414C7
+ 1414C71414C72F2FB69E9E9EC0C0C0DBDBDBEFEFEFFBFBFBFFFFFFFFFFFFFFFF
+ FFFBFBFBF0F0F01414C71414C71414C71414C72020BD747474838383A2A2A2BF
+ BFBFCECECE7F66663200003200003200004620208B8B8BA3A3A3BFBFBFD1D1D1
+ C8C5C53200003200003200003200008787879B9B9BB5B5B5C5C5C55731313200
+ 00320000320000746767939393AAAAAABCBCBCC1C1C13A0B0B32000032000032
+ 00007D74749E9E9E8F8282320000320000320000838383777777737373727272
+ 625252320000462121969696AEAEAEC2C2C2A497973200003200003200003200
+ 00716464939393B0B0B0CFCFCFE6E6E6F7F7F7FFFFFFFFFFFFFFFFFFFFFFFF00
+ D021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEFEFEF4545CC1414C7
+ 1414C71414C72D2DB47D7D7D919191B3B3B3CBCBCB7474CE1414C71414C71414
+ C75B5B9F7F7F7F8282828C8C8C95959549232332000032000032000032000046
+ 33335353535858584525256A6767685B5B320000320000320000320000838383
+ 8F8F8FA6A6A6C3C3C3D6D6D6D9D9D9320000320000320000320000553C3C8282
+ 829292928E84843200003200003200003200003C101075656558353532000032
+ 0000390A0A979494919191929292A1A1A1BBBBBBD6D6D6E6E6E6E8E8E85C3636
+ 3200003200003200005940408989899F9F9FBFBFBFDADADAE9E9E9E8E8E88F79
+ 79320000320000320000320000320000786B6BB0B0B0CFCFCFE6E6E6F5F5F5F1
+ EEEE582F2FB19E9EFBFBFBF2F2F2603A3A320000856C6CD5D5D5DCDCDCE1E1E1
+ E1E1E1DADADA3B0C0C320000320000563A3A8383838989898174743200003200
+ 00B1ABABCFCFCFD8D8D8DDDDDDDBDBDB8B757532000032000032000076707089
+ 89899F9F9FBFBFBFDADADAEFEFEFFBFBFBFFFFFFFFFFFFFFFFFFF9F9F9ECECEC
+ D7D7D75E5EC21414C71414C71414C71414C75B5B9FA7A7A7C8C8C8E0E0E0F2F2
+ F2FDFDFDFFFFFFFFFFFFFFFFFFFCFCFCF2F2F23939CC1414C71414C71414C714
+ 14C76D6D798181819E9E9EBCBCBCCBCBCB7E6565320000320000320000462020
+ 8C8C8CA4A4A4C1C1C1D1D1D1AA9D9D3200003200003200003200008888889C9C
+ 9CB7B7B7C8C8C8583232320000320000320000746767929292A6A6A6B6B6B6B9
+ B9B9320000320000320000320000939393A7A7A7968A8A320000320000320000
+ 8585857373736969696666664728283200004621219B9B9BB6B6B6C8C8C8CFCF
+ CF4E2525320000320000320000716464949494B2B2B2D1D1D1E8E8E8F7F7F7FF
+ FFFFFFFFFFFFFFFFFFFFFF004D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FBFBFBF0F0F04646CD1414C71414C71414C72D2DB47D7D7D8F8F8FB1B1B1CBCB
+ CBA5A5D21414C71414C71414C73F3FAF7D7D7D7F7F7F7E78788F8C8C3E121232
+ 0000320000320000320000340505555252554F4F3200005D5151737070320000
+ 3200003200003200008484848D8D8DA1A1A1BEBEBED1D1D1D4D4D43200003200
+ 00320000320000553C3C828282929292877A7A32000032000032000032000065
+ 5252979797B2B2B24C24243200003200005B3C3C9090908D8D8D9A9A9AB3B3B3
+ CECECEE2E2E2E6E6E65C36363200003200003200005940408888889E9E9EBDBD
+ BDDADADAE8E8E8E7E7E7846B6B320000320000320000320000451F1F909090B1
+ B1B1CECECEE5E5E5F4F4F4FBFBFBF0EDEDFEFEFEFCFCFCF6F6F6613B3B320000
+ D5D2D2DBDBDBDDDDDDDDDDDDD7D7D7CDCDCD5D3A3A3200003200004017177D7D
+ 7D888888827676320000684848CACACAD3D3D3D7D7D7D6D6D6CFCFCF9E919132
+ 00003200003200005F4C4C8585859E9E9EBEBEBEDADADAEEEEEEFBFBFBFFFFFF
+ FFFFFFFEFEFEF7F7F7E9E9E9D2D2D22727C51414C71414C71414C71414C78484
+ 90AEAEAECECECEE5E5E5F5F5F5FEFEFEFFFFFFFFFFFFFFFFFFFDFDFDF2F2F246
+ 46CD1414C71414C71414C71414C75A5A877F7F7F9C9C9CB9B9B9C8C8C87D6464
+ 3200003200003200005A41418C8C8CA6A6A6C2C2C2D1D1D1AA9D9D3200003200
+ 003200003C10108989899E9E9EB9B9B9CBCBCB59333332000032000032000079
+ 6F6F8F8F8F9E9E9EABABAB9E98983200003200003200003D1111999999B0B0B0
+ 9E91913200003200003200008885857878786B6B6B605A5A3200003200004923
+ 23A7A7A7C1C1C1D1D1D1D4D4D4583232320000320000320000716464959595B3
+ B3B3D1D1D1E9E9E9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFF004600FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F14646CD1414C71414C71414C72626
+ B97C7C7C8E8E8EB0B0B0CACACAC9C9D51414C71414C71414C72222BF7D7D7D7E
+ 7E7E482222380909320000320000320000320000320000320000350606380C0C
+ 320000543E3E7A7A7A370808320000320000320000766D6D8C8C8C9D9D9DB8B8
+ B8CACACACFCFCF320000320000320000320000543B3B828282959595735D5D32
+ 0000320000320000320000817E7E999999B5B5B5988888320000320000320000
+ 847E7E8A8A8A939393AAAAAAC8C8C8DDDDDDE3E3E37051513200003200003200
+ 005940408787879C9C9CBCBCBCD8D8D8E7E7E7E7E7E766434332000032000032
+ 00003200005F4C4C8D8D8DABABABC6C6C6DBDBDBE9E9E9F1F1F1F5F5F5F8F8F8
+ F8F8F8F6F6F6795A5A320000E5E5E5DDDDDDD8D8D8D1D1D1C6C6C6B8B8B86B52
+ 523200003200003200007878788787878679793200007D6464D0D0D0D4D4D4D1
+ D1D1C8C8C8BCBCBCABABAB320000320000320000533A3A8383839E9E9EBFBFBF
+ DADADAEFEFEFFBFBFBFFFFFFFFFFFFFEFEFEF5F5F5E4E4E4AAAACC1414C71414
+ C71414C71414C72D2DB4929292B5B5B5D3D3D3E9E9E9F8F8F8FEFEFEFFFFFFFF
+ FFFFFFFFFFFDFDFDF3F3F37B7BD51414C71414C71414C71414C74D4D917D7D7D
+ 999999B7B7B7C6C6C67B62623200003200003200005A41418D8D8DA7A7A7C2C2
+ C2D1D1D1A89C9C3200003200003200004620208989899F9F9FBCBCBCCECECE59
+ 34343200003200003200008989898A8A8A9494949D9D9D827676320000320000
+ 3200004F2C2CA1A1A1BBBBBBB0A7A7320000320000320000674E4E8686867878
+ 78431D1D3200003200004D2727B8B8B8CFCFCFDBDBDBDADADA58323232000032
+ 00003200007B7575969696B5B5B5D3D3D3E9E9E9F8F8F8FFFFFFFFFFFFFFFFFF
+ FFFFFF72B972FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF2F2F26D6D
+ D31414C71414C71414C71414C77B7B7B8C8C8CADADADC9C9C9D5D5D51414C714
+ 14C71414C71414C76E6E857D7D7D482222320000320000320000320000320000
+ 370808320000320000320000320000533A3A8080804822223200003200003200
+ 007467678C8C8C999999B0B0B0C2C2C2C8C8C832000032000032000032000054
+ 3B3B8383839797976D5454320000320000320000320000878787999999B6B6B6
+ C8C8C83200003200003200005A3E3E8787878F8F8FA4A4A4C2C2C2DADADAE2E2
+ E2866D6D3200003200003200005940408686869B9B9BBBBBBBD7D7D7E7E7E7E7
+ E7E75A35353200003200003200003200006C66668585859F9F9FB6B6B6C9C9C9
+ D7D7D7DFDFDFE4E4E4EAEAEAEFEFEFF1F1F1917878320000E3E3E3D8D8D8CCCC
+ CCBFBFBFAEAEAE9D9D9D5E4545320000320000320000675E5E888888877B7B32
+ 00007E6565D0D0D0CECECEC3C3C3B4B4B4A4A4A4867F7F320000320000320000
+ 482929828282A0A0A0C2C2C2DDDDDDF0F0F0FBFBFBFFFFFFFFFFFFFDFDFDF2F2
+ F2E0E0E06D6DC71414C71414C71414C71414C74848A2979797BABABAD7D7D7EC
+ ECECF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4F4F47B7BD51414C71414C7
+ 1414C71414C742429C7D7D7D989898B6B6B6C5C5C57B62623200003200003200
+ 005A41418E8E8EA8A8A8C3C3C3D1D1D1A89B9B32000032000032000046202089
+ 8989A1A1A1BFBFBFD1D1D15A35353200003200003200007E7878848484878787
+ 8C8C8C654F4F320000320000320000624949AAAAAAC5C5C5D8D8D83200003200
+ 003200003200003E13134923233200003200003200005A3838CBCBCBDEDEDEE4
+ E4E4DDDDDD3B0C0C320000320000320000868686979797B6B6B6D4D4D4EAEAEA
+ F8F8F8FFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFDFDFDF2F2F27A7AD41414C71414C71414C71414C77B7B7B8B8B8BAA
+ AAAAC8C8C8D5D5D54343CA1414C71414C71414C75555987D7D7D492323320000
+ 3200003200003200003200003E1313320000320000320000320000583F3F8787
+ 875C40403200003200003200006650508D8D8D949494A6A6A6B6B6B6BBBBBB32
+ 0000320000320000320000543B3B8585859B9B9B6F5656320000320000320000
+ 462121888888999999B5B5B5C8C8C85832323200003200003D11118585858A8A
+ 8A9E9E9EBDBDBDD7D7D7E0E0E0866D6D3200003200003200005438388686869B
+ 9B9BBABABAD7D7D7E6E6E6E7E7E75A35353200003200003200003607076E6E6E
+ 7A7A7A8F8F8FA2A2A2B2B2B2BEBEBEC6C6C6CECECED6D6D6DEDEDEE5E5E58D74
+ 74320000DBDBDBCBCBCBB9B9B9A6A6A69292928080804A2A2A32000032000032
+ 00006255558B8B8B8C7F7F3200007E6565CBCBCBC1C1C1AFAFAF9B9B9B888888
+ 655959320000320000320000411B1B858585A5A5A5C6C6C6E0E0E0F2F2F2FCFC
+ FCFFFFFFFFFFFFFBFBFBF0F0F0DDDDDD3F3FC61414C71414C71414C71414C764
+ 64919C9C9CBFBFBFDADADAEFEFEFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ F4F4F49696D91414C71414C71414C71414C742429C7C7C7C979797B5B5B5C3C3
+ C35530303200003200003200005A41418F8F8FAAAAAAC4C4C4D0D0D09D8D8D32
+ 0000320000320000462020898989A1A1A1C0C0C0D5D5D57C6060320000320000
+ 3200007569698080807C7C7C7B7B7B4D2E2E320000320000320000817474B5B5
+ B5D0D0D0E3E3E3542B2B32000032000032000032000032000032000032000032
+ 0000938080DEDEDEEBEBEBEBEBEBE0E0E0320000320000320000320000868686
+ 989898B7B7B7D4D4D4EBEBEBF9F9F9FFFFFFFFFFFFFFFFFFFFFFFF42A43BFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF3F3F37B7BD51414C71414C714
+ 14C71414C77A7A7A8A8A8AA9A9A9C6C6C6D5D5D54343CA1414C71414C71414C7
+ 4747A17D7D7D5F4646320000320000320000320000320000512C2C471F1F3200
+ 00320000320000593D3D9292927A6A6A3200003200003200005D41418F8F8F8F
+ 8F8F9B9B9BA6A6A6ABABAB320000320000320000320000543B3B898989A1A1A1
+ 725959320000320000320000482222898989989898B3B3B3C6C6C67458583200
+ 003200003200007973738787879B9B9BB9B9B9D4D4D4DFDFDF866D6D32000032
+ 0000320000462020868686999999B9B9B9D6D6D6E6E6E6E7E7E75C3636320000
+ 320000320000411B1B6868686E6E6E7E7E7E8C8C8C999999A2A2A2AAAAAAB2B2
+ B2BCBCBCC9C9C9D4D4D49C89895C3636CECECEBABABAA4A4A48C8C8C78787868
+ 6868370B0B3200003200003200006457579090908F82823200007C6363C0C0C0
+ AFAFAF9898988282826F6F6F462A2A320000320000320000411C1C8C8C8CADAD
+ ADCCCCCCE4E4E4F5F5F5FDFDFDFFFFFFFFFFFFFBFBFBEEEEEEDADADA1414C714
+ 14C71414C71414C71414C77A7A85A1A1A1C3C3C3DEDEDEF1F1F1FCFCFCFFFFFF
+ FFFFFFFFFFFFFFFFFFFEFEFEF4F4F4AFAFDC1414C71414C71414C71414C73737
+ A77C7C7C969696B3B3B3C2C2C25530303200003200003200005A41418F8F8FAA
+ AAAAC2C2C2CDCDCD7D6464320000320000320000451F1F898989A2A2A2C2C2C2
+ D8D8D88970703200003200003200007B6E6E808080757575707070390D0D3200
+ 00320000320000A6A6A6C2C2C2DADADAEBEBEB866A6A32000032000032000032
+ 00003200003200003200005A3535E3E3E3EDEDEDF3F3F3EFEFEFE1E1E1320000
+ 320000320000320000868686999999B9B9B9D6D6D6ECECECF9F9F9FFFFFFFFFF
+ FFFFFFFFFFFFFF00C154FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4
+ F4F47B7BD51414C71414C71414C71414C77A7A7A898989A7A7A7C5C5C5D4D4D4
+ 7474CE1414C71414C71414C72D2DB47B7B7B8A8A8A745E5E3200003200003200
+ 00320000583232816B6B3200003200003200004D27279F9F9FA09D9D32000032
+ 00003200004D27279393938C8C8C8F8F8F9595958B8585320000320000320000
+ 320000543B3B8D8D8DA8A8A88F7F7F3200003200003200004923238989899797
+ 97B1B1B1C4C4C47E6565320000320000320000645151858585979797B6B6B6D2
+ D2D2DEDEDE866D6D320000320000320000462020858585989898B6B6B6D4D4D4
+ E6E6E6E7E7E75C3636320000320000320000411B1B6666666A6A6A7575758080
+ 808989898D8D8D909090969696A1A1A1B0B0B0BEBEBEC8C8C8C8C8C8BCBCBCA7
+ A7A78E8E8E767676636363442B2B3200003200003200003200006B5E5E989898
+ B3B3B39D9090B7B4B4B3B3B39C9C9C8383836C6C6C5145453200003200003200
+ 00320000441E1E979797B8B8B8D4D4D4E9E9E9F7F7F7FEFEFEFFFFFFFFFFFFFA
+ FAFAECECECB3B3D41414C71414C71414C71414C72020BD848484A6A6A6C7C7C7
+ E0E0E0F2F2F2FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4F4F4AFAFDC1414
+ C71414C71414C71414C72B2BB27B7B7B969696B3B3B3C0C0C0552F2F32000032
+ 00003200006959598E8E8EA9A9A9BFBFBFC7C7C7796060320000320000320000
+ 523636888888A3A3A3C4C4C4DBDBDBA28F8F3200003200003200007764648989
+ 897979796862623200003200003200004B2626B5B5B5CECECEE4E4E4F2F2F2E0
+ DADA3200003200003200003200003200003200003D0E0EDFDCDCF1F1F1F7F7F7
+ F8F8F8F1F1F1E0E0E03200003200003200003200008686869A9A9AB9B9B9D7D7
+ D7ECECECF9F9F9FFFFFFFFFFFFFFFFFFFFFFFF2A9728FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFEFEFEF5F5F58989D81414C71414C71414C71414C760608D
+ 878787A4A4A4C3C3C3D4D4D47474CE1414C71414C71414C72121BE7A7A7A8888
+ 88A6A6A68E7B7B3200003200003200005D3737C1BBBB32000032000032000051
+ 2C2CB0B0B0B6B6B64C23233200003200003200009B9B9B8D8D8D878787868686
+ 706363320000320000320000320000563D3D949494B0B0B09E91913200003200
+ 003200004A24248C8C8C969696AEAEAEC1C1C199898932000032000032000054
+ 3838818181939393B3B3B3CECECEDCDCDC866D6D320000320000320000462020
+ 828282949494B3B3B3D1D1D1E3E3E3E6E6E65C36363200003200003200004D31
+ 316868686B6B6B7777778080808585858585858282828383838B8B8B999999A8
+ A8A8B6B6B6B7B7B7ABABAB959595787575523F3F360A0A320000320000320000
+ 320000320000746767A4A4A4B9B9B9C0C0C0B9B9B9A4A4A48A8A8A665C5C401D
+ 1D320000320000320000320000320000583C3CA6A6A6C5C5C5DDDDDDEFEFEFFA
+ FAFAFEFEFEFFFFFFFFFFFFF9F9F9EBEBEB8C8CCF1414C71414C71414C71414C7
+ 2B2BB2868686AAAAAACACACAE3E3E3F4F4F4FEFEFEFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEF4F4F4AFAFDC1414C71414C71414C71414C72B2BB27B7B7B959595B1
+ B1B1BDBDBD542E2E3200003200003200006C60608D8D8DA7A7A7BABABABFBFBF
+ 735A5A320000320000320000543B3B878787A4A4A4C5C5C5DDDDDDC8BFBF3200
+ 00320000320000694D4D9999998686864D2E2E320000320000320000776161C5
+ C5C5DCDCDCEDEDEDF8F8F8FDFDFD8A6E6E320000320000320000320000562D2D
+ D0C7C7F7F7F7FAFAFAFCFCFCFBFBFBF2F2F2CAC4C43200003200003200003200
+ 008686869B9B9BBBBBBBD7D7D7ECECECFAFAFAFFFFFFFFFFFFFFFFFFFFFFFF00
+ 3F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF5F5F5B1B1DE1414C7
+ 1414C71414C71414C75F5F8C858585A1A1A1C2C2C2D2D2D27474CE1414C71414
+ C71414C71414C7777777868686A3A3A3C4C4C49C89893200003200003D0E0EE8
+ E8E8522929320000320000573131C4C4C4C8C8C88A7474320000320000320000
+ 8A7D7D9292928383837A7A7A6050503200003200003200003200005940409D9D
+ 9DBBBBBBA599993200003200003200004B25258E8E8E959595AAAAAABBBBBB9E
+ 9191320000320000320000451F1F7D7D7D8D8D8DACACACC8C8C8D7D7D7846B6B
+ 320000320000320000451F1F7E7E7E8E8E8EAAAAAAC8C8C8DCDCDCE0E0E05A35
+ 353200003200003200004B2B2B6761617575758282828B8B8B8E8E8E89898980
+ 80807979797D7D7D898989989898A7A7A7A9A9A99794945D4444360707320000
+ 320000320000320000320000320000320000827676B3B3B3C1C1C1C0C0C0B2B2
+ B28B8585451F1F320000320000320000320000320000320000320000674E4EB8
+ B8B8D2D2D2E6E6E6F4F4F4FCFCFCFFFFFFFFFFFFFFFFFFF8F8F8E9E9E97373CD
+ 1414C71414C71414C71414C744449E898989ADADADCDCDCDE5E5E5F5F5F5FEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F3AEAEDB1414C71414C71414C714
+ 14C72B2BB27B7B7B949494ADADADB8B8B8512C2C3200003200003200006B5E5E
+ 8C8C8CA4A4A4B5B5B5B6B6B65F3F3F320000320000320000533A3A868686A6A6
+ A6C7C7C7E0E0E0EFEFEF491D1D3200003200003B0C0CA6A3A381757532000032
+ 0000320000320000B8B5B5D6D6D6E8E8E8F4F4F4FBFBFBFEFEFEFFFFFF987F7F
+ 653F3F653F3FA38D8DEFECECFDFDFDFEFEFEFEFEFEFFFFFFFCFCFCF1F1F1B3A6
+ A63200003200003200004118188787879C9C9CBCBCBCD8D8D8EDEDEDFAFAFAFF
+ FFFFFFFFFFFFFFFFFFFFFF007D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFF6F6F6B1B1DE1414C71414C71414C71414C75E5E8A8383839F9F9FBFBF
+ BFD1D1D1A3A3D01414C71414C71414C71414C7646485838383A0A0A0C2C2C2DD
+ DDDDA79494320000320000F4F4F49B85853200003200003C0D0DD8D8D8DADADA
+ C8C2C23200003200003200006B4F4F9E9E9E8A8A8A7A7A7A5037373200003200
+ 00320000320000756969AAAAAAC7C7C7D7D7D732000032000032000032000091
+ 9191949494A4A4A4B3B3B3988B8B3200003200003200003F1616777777858585
+ A2A2A2BFBFBFCECECEA89C9C320000320000320000441E1E7878788585859E9E
+ 9EBBBBBBCECECED4D4D45933333200003200003200003200003200003200004A
+ 24245B3B3B684F4F7F72728787877979797777778080808C8C8C9B9B9B989595
+ 441B1B320000320000320000320000320000320000320000320000320000A9A6
+ A6C2C2C2C8C8C8C1C1C18F828237080832000032000032000032000032000032
+ 00003200003200008A7A7ACACACADEDEDEEEEEEEF8F8F8FEFEFEFFFFFFFFFFFF
+ FFFFFFF7F7F7E8E8E84343CA1414C71414C71414C71414C744449E8B8B8BB0B0
+ B0CFCFCFE7E7E7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF3F3F3AE
+ AEDB1414C71414C71414C71414C72B2BB27A7A7A919191A8A8A8B0B0B0390A0A
+ 3200003200003200006A5D5D8A8A8AA2A2A2B1B1B1B0B0B04E28283200003200
+ 00320000543B3B8A8A8AAAAAAAC9C9C9E2E2E2F2F2F2957C7C32000032000032
+ 0000320000320000320000320000320000684949D6D6D6E6E6E6F2F2F2F9F9F9
+ FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFBFBFBF0F0F0B3A6A63200003200003200004620208888889E9E9EBD
+ BDBDD9D9D9EEEEEEFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7B2B2DF1414C71414C71414C71414
+ C75E5E8A8282829C9C9CBDBDBDCFCFCFA2A2CF1414C71414C71414C71414C75C
+ 5C898181819E9E9EC1C1C1DCDCDCEFEFEF886C6C320000FBFBFBDFD9D9320000
+ 320000320000E9E9E9E9E9E9ECECEC603A3A3200003200003B0C0CA8A5A59999
+ 99868686431D1D320000320000320000320000897F7FB9B9B9D3D3D3E1E1E147
+ 1B1B3200003200003200009595959393939B9B9BA7A7A78C8080320000320000
+ 3200003200006E6E6E7A7A7A959595B0B0B0C0C0C09E92923200003200003200
+ 00411C1C7070707979798E8E8EA8A8A8BCBCBCC5C5C55E3C3C32000032000032
+ 00003200003200003200003200003200003200003200003809094E2F2F6F6868
+ 7B7B7B8585859595955839393200003200003200003200003200003200003200
+ 00320000320000421616C5C5C5CFCFCFCECECEB0AAAA390A0A32000032000032
+ 0000320000320000320000320000320000320000BCB9B9D7D7D7E7E7E7F3F3F3
+ FAFAFAFEFEFEFFFFFFFFFFFFFEFEFEF6F6F6E6E6E64242C91414C71414C71414
+ C71414C75D5D8A8D8D8DB3B3B3D1D1D1E8E8E8F8F8F8FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFDFDFDF2F2F2ADADDA1414C71414C71414C71414C72B2BB27A7A7A
+ 8E8E8EA2A2A2A7A7A7320000320000320000320000685B5B898989A2A2A2B0B0
+ B0B0B0B04F2929320000320000320000583F3F929292B0B0B0CECECEE4E4E4F4
+ F4F4EEEBEB3E0F0F320000320000320000320000320000320000320000C7C1C1
+ E7E7E7F1F1F1F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF1F1F1B3A6A632000032000032
+ 00004621218B8B8BA0A0A0BFBFBFDADADAEFEFEFFBFBFBFFFFFFFFFFFFFFFFFF
+ FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF6F6F6B1B1
+ DE1414C71414C71414C71414C74A4A98808080999999BABABACCCCCC9F9FCC14
+ 14C71414C71414C71414C754548C7F7F7F9B9B9BBFBFBFDADADAEFEFEFFBFBFB
+ 987F7FFEFEFEFDFDFD643E3E320000320000F4F4F4F5F5F5F5F5F5C5B8B83200
+ 00320000320000684949AEAEAE887E7E320000320000320000320000320000B1
+ B1B1CACACADFDFDFEBEBEB6A4848320000320000320000959292939393949494
+ 9999998174743200003200003200003200006464646F6F6F8686869E9E9EAEAE
+ AE928686320000320000320000390D0D6666666D6D6D7C7C7C929292A6A6A6B0
+ B0B0715858320000320000320000320000320000320000320000320000320000
+ 3200003200003200003607077C7C7C8484848C89893200003200003200003200
+ 00320000320000320000320000320000320000735757D3D3D3D7D7D7D1D1D170
+ 5454320000320000320000320000320000320000320000320000320000684949
+ D2D2D2E0E0E0ECECECF5F5F5FBFBFBFFFFFFFFFFFFFFFFFFFEFEFEF5F5F5E5E5
+ E51F1FC81414C71414C71414C71414C75E5E8A8F8F8FB5B5B5D3D3D3E9E9E9F8
+ F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1ABABD81414C71414C7
+ 1414C71414C72A2AB17979798C8C8C9D9D9D9F9F9F3200003200003200003200
+ 006A61618A8A8AA4A4A4B3B3B3AEABAB320000320000320000320000604747A0
+ A0A0BBBBBBD4D4D4E7E7E7F5F5F5FDFDFDBEAEAE320000320000320000320000
+ 3200003200008D7474EDEDEDF3F3F3F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2
+ F2F2947E7E320000320000320000482222909090A5A5A5C2C2C2DCDCDCEFEFEF
+ FBFBFBFFFFFFFFFFFFFFFFFFFFFFFF009E1EFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFEFEFEFDFDFDF4F4F4BCBCDD1414C71414C71414C71414C742429C7D7D7D96
+ 9696B7B7B7C8C8C89D9DCA1414C71414C71414C71414C741419B7D7D7D9A9A9A
+ BDBDBDDADADAEEEEEEFBFBFBFFFFFFFFFFFFFFFFFFD7CECE3E0F0F320000EEEB
+ EBFBFBFBFCFCFCFBFBFB623D3D3200003200003200004E25253A0B0B32000032
+ 0000320000320000532D2DC8C8C8DADADAEAEAEAF3F3F39E8888320000320000
+ 320000897C7C9696968F8F8F8C8C8C7467673200003200003200003200005F5F
+ 5F6969697D7D7D9090909F9F9F877B7B3200003200003200003200005E5E5E61
+ 61616B6B6B7D7D7D8E8E8E9A9A9A6950503200003200003200004822225F4646
+ 664D4D5A37373A0B0B3200003200003200003200003200007D7D7D8585857B6E
+ 6E3200003200003200003200003200003200003200003200003200003B0C0CBF
+ B9B9D9D9D9DADADAD1D1D1431717320000320000320000320000320000320000
+ 3200003200003B0C0CBDB7B7D7D7D7E2E2E2ECECECF3F3F3FAFAFAFEFEFEFFFF
+ FFFFFFFFFEFEFEF5F5F5E4E4E41414C71414C71414C71414C71414C76B6B8292
+ 9292B6B6B6D4D4D4EAEAEAF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB
+ F0F0F0ABABD81414C71414C71414C71414C72B2BB27979798C8C8C9B9B9B9592
+ 923200003200003200003200007D7D7D919191ABABABB3B0B068484832000032
+ 0000320000320000817272B3B3B3C8C8C8DCDCDCECECECF8F8F8FEFEFEFEFEFE
+ 8A6E6E3200003200003200003200007B5B5BF5F5F5F8F8F8FBFBFBFDFDFDFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFCFCFCF4F4F48B72723200003200003200004B25259B9B9B
+ ADADADC7C7C7DEDEDEF0F0F0FBFBFBFFFFFFFFFFFFFFFFFFFFFFFF09D710FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAEFEFEFDDDDDD1414C71414C714
+ 14C71414C7404099777777909090B0B0B0C0C0C09696C31414C71414C71414C7
+ 1414C74040997C7C7C999999BDBDBDD9D9D9EEEEEEFBFBFBFFFFFFFFFFFFFFFF
+ FFFFFFFFE5DFDFCCBFBFF2EFEFFFFFFFFFFFFFFEFEFED6CDCD32000032000032
+ 00003200003200003200003200003200003200008B7575DDDDDDE9E9E9F3F3F3
+ F8F8F8DFD9D93200003200003200007A64649E9E9E8F8F8F8585856B5E5E3200
+ 003200003200003200006262626D6D6D7D7D7D8C8C8C97979780737332000032
+ 00003200003200005047475959595F5F5F6B6B6B7A7A7A888888746464320000
+ 3200003200005F46468F8F8F9B9B9BB0B0B0C0C0C08D7A7A3200003200003200
+ 003200007F7F7F888888644B4B32000032000032000032000032000032000032
+ 00003200003B0C0CA49494D7D7D7D8D8D8D8D8D8BBB5B5320000320000320000
+ 320000320000320000320000320000451919B5ACACD4D4D4D5D5D5DDDDDDE7E7
+ E7F0F0F0F8F8F8FEFEFEFFFFFFFFFFFFFEFEFEF5F5F5E3E3E31414C71414C714
+ 14C71414C71414C77A7A7A939393B8B8B8D5D5D5EBEBEBF9F9F9FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFBFBFBEFEFEFA8A8D51414C71414C71414C71414C72B2B
+ B27A7A7A8F8F8F9E9E9E8679793200003200003200003200008989899C9C9CA5
+ 9F9F3200003200003200003200003200003200009E9191C9C9C9D7D7D7E6E6E6
+ F1F1F1F9F9F9FEFEFEFFFFFFFFFFFFBEAEAE653F3F653F3FB19E9EFDFDFDFDFD
+ FDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF7F7F78F7676320000
+ 320000320000502A2AAAAAAAB9B9B9CECECEE2E2E2F2F2F2FCFCFCFFFFFFFFFF
+ FFFFFFFFFFFFFF00876CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6F6E9
+ E9E9D4D4D41414C71414C71414C71414C73C3C96717171878787A4A4A4B3B3B3
+ 8D8DBA1414C71414C71414C71414C73F3F997B7B7B9A9A9ABDBDBDDADADAEEEE
+ EEFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEB19E9E3200003200003200003200003200003200003200003C0D0D
+ DAD7D7ECECECF4F4F4F9F9F9FCFCFCFBFBFB562D2D320000320000684848ABAB
+ AB989898898989614E4E3200003200003200003200007070707A7A7A86868691
+ 91919898987E7171320000320000320000320000442B2B5656565A5A5A626262
+ 6660607D7D7D7467673200003200003200004A2424929292999999A9A9A9B5B5
+ B5988B8B3200003200003200003200008181818C8C8C664D4D32000032000032
+ 00003200003200003200003A0B0B765A5ACDCACADADADAD4D4D4D2D2D2D3D3D3
+ A598983200003200003200003200003200003200003A0B0B7E6565CAC7C7D7D7
+ D7D1D1D1CFCFCFD7D7D7E2E2E2ECECECF7F7F7FEFEFEFFFFFFFFFFFFFEFEFEF5
+ F5F5E3E3E31414C71414C71414C71414C71414C77A7A7A959595B9B9B9D6D6D6
+ ECECECF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAEDEDED8F8FD21414
+ C71414C71414C71414C73131AC7E7E7E959595A7A7A7674B4B32000032000032
+ 00003200009C9C9CACACAC9E9292320000320000320000320000320000320000
+ B0A3A3DDDDDDE6E6E6EFEFEFF6F6F6FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FEFEFEFAFAFA856969320000320000320000654646BCBCBCC7C7C7D7D7D7E7E7
+ E7F4F4F4FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFBFBFBF2F2F2E1E1E1C9C9C91414C71414C71414C71414C72626AD
+ 6868687C7C7C949494A1A1A17F7FAC1414C71414C71414C71414C73434A47C7C
+ 7C9B9B9BBFBFBFDADADAEFEFEFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB19E9E320000320000320000
+ 3200003200003200009D8787F3F3F3F7F7F7FBFBFBFDFDFDFEFEFEFEFEFEAF9C
+ 9C3200003200003B0C0CB4B1B1A8A8A8969696573B3B32000032000032000032
+ 00003C1010563636897F7FA2A2A2A4A4A4857878320000320000320000320000
+ 3405055956565E5E5E5A50503506067878788888883200003200003200004B26
+ 26979797989898A0A0A0A8A8A88C7F7F32000032000032000032000084848493
+ 93936A51513200003200003200003200004B25257E6B6BBFBFBFCDCDCDD3D3D3
+ D2D2D2CBCBCBC9C9C9CCCCCCA296963200003200003200003200003809096C53
+ 53B3B0B0CBCBCBD1D1D1D0D0D0C8C8C8C5C5C5CFCFCFDDDDDDE9E9E9F5F5F5FE
+ FEFEFFFFFFFFFFFFFEFEFEF5F5F5B0B0DD1414C71414C71414C71414C71414C7
+ 7B7B7B959595B9B9B9D7D7D7ECECECF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFF9F9F9ECECEC7575CF1414C71414C71414C71414C743439D838383908A8A63
+ 4343320000320000320000320000320000B5B5B5C1C1C1AB9E9E320000320000
+ 320000320000320000320000BEB1B1EDEDEDF2F2F2F6F6F6FAFAFAFEFEFEFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD623D3D3200003200003200008168
+ 68CECECED6D6D6E2E2E2EDEDEDF6F6F6FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF00
+ 2933FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EEEEEEDBDBDBC1C1C11414C7
+ 1414C71414C71414C72424AB5F5F5F6E6E6E8080808C8C8C66669E1414C71414
+ C71414C71414C72929B07D7D7D9E9E9EC1C1C1DDDDDDEFEFEFFBFBFBFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFD7CECE724F4F3200003200003E0F0FA38D8DFBFBFBFCFCFCFDFDFDFEFE
+ FEFFFFFFFFFFFFFFFFFFF0EDED3E0F0F3200003200006C4D4DBDBDBDA3A0A03E
+ 1313320000320000320000320000320000320000755C5CBCBCBCBBBBBB928686
+ 3200003200003200003200003200003D14145543433D14143200007C7C7C8C8C
+ 8C3E13133200003200004F29299E9E9E9898989898989999997F727232000032
+ 00003200003200008A8A8A9D9D9D6F5656320000320000320000563636959595
+ A7A7A7B7B7B7C1C1C1C5C5C5C4C4C4BDBDBDBEBEBEC5C5C57B62623200003200
+ 003200003E12128E8B8BA3A3A3B4B4B4BFBFBFC4C4C49E9191BCBCBCBBBBBBC8
+ C8C8D7D7D7E6E6E6F5F5F5FEFEFEFFFFFFFFFFFFFEFEFEF5F5F5B1B1DE1414C7
+ 1414C71414C71414C72020BD7B7B7B959595B9B9B9D7D7D7ECECECF9F9F9FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8E9E9E97373CD1414C71414C71414C714
+ 14C744449E8989896D5454320000320000320000320000320000320000CFCFCF
+ D6D6D6D8D5D5BEB1B19F8989896D6D4B1F1F320000320000C6BABAF8F8F8FAFA
+ FAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE714E
+ 4E3200003200003200008A7171E0E0E0E5E5E5ECECECF3F3F3F9F9F9FEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8
+ ECECECDADADABFBFBF1414C71414C71414C71414C72424AB5858586161616D6D
+ 6D74747444449E1414C71414C71414C71414C72929B0808080A3A3A3C5C5C5DF
+ DFDFF1F1F1FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEA38D8D32000032
+ 0000320000593434573131320000320000320000320000320000320000320000
+ 836A6AB6ADAD9683835832323200003200003200003200003200003200003200
+ 003200003200007366669595955D3E3E320000320000320000A8A8A89C9C9C92
+ 92928C8C8C6C5C5C320000320000320000320000929292A9A9A9755C5C320000
+ 3200003200008882829292929D9D9DA7A7A7AEAEAE826F6F512C2CADADADB3B3
+ B3BFBFBF846E6E320000320000320000705D5D9191919A9A9AA6A6A6ADADAD91
+ 84843200008F8282B0B0B0C1C1C1D4D4D4E5E5E5F4F4F4FEFEFEFFFFFFFFFFFF
+ FEFEFEF6F6F6B1B1DE1414C71414C71414C71414C72B2BB27A7A7A949494B9B9
+ B9D6D6D6ECECECF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF6F6F6E6E6E671
+ 71CB1414C71414C71414C71414C746469F8F8F8F614242320000320000320000
+ 320000320000320000E3E3E3E7E7E7EFEFEFF5F5F5FAFAFAFEFEFEFFFFFFCCBF
+ BF724F4FE4DEDEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFF1EEEE714E4E320000320000917878EFEFEFF0F0F0F5
+ F5F5F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFF9F9F9EDEDEDDBDBDBADADC31414C71414C71414C71414
+ C71C1CBA5959595C5C5C6161616363633232A21414C71414C71414C71414C729
+ 29B0868686A8A8A8C9C9C9E2E2E2F3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFEFEFE643E3E320000320000320000320000320000320000320000
+ 320000320000320000320000603A3A8D74743200003200003200003200003200
+ 00320000380909320000320000320000320000807373A4A4A48B7B7B32000032
+ 0000320000A59F9FA5A5A5959595888888583F3F320000320000320000421919
+ 9F9F9FB7B7B77C63633200003200003200009A9A9A9090909292929595959898
+ 98664D4D3200009F9F9FAAAAAABBBBBBA19494320000320000320000857C7C8F
+ 8F8F8F8F8F949494989898817474320000847777A8A8A8BDBDBDD3D3D3E6E6E6
+ F5F5F5FEFEFEFFFFFFFFFFFFFFFFFFF7F7F7B3B3E01414C71414C71414C71414
+ C72B2BB27A7A7A929292B7B7B7D4D4D4EAEAEAF8F8F8FFFFFFFFFFFFFFFFFFFF
+ FFFFFEFEFEF5F5F5E3E3E34141C81414C71414C71414C71414C75B5B94969696
+ 755C5C5934343D0E0E320000320000320000320000F2F2F2F4F4F4F7F7F7FAFA
+ FAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE714E4E32
+ 0000957C7CF8F8F8F8F8F8FAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAD4D4EB6D6DD35959
+ C91414C71414C71414C71414C71414C76666666363636161615F5F5F1C1CBA14
+ 14C71414C71414C71414C73131AC8E8E8EB0B0B0CFCFCFE6E6E6F5F5F5FEFEFE
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1EEEE572E2E320000320000
+ 320000320000320000320000481C1C9A84847859593D0E0E623D3DBAAAAA3200
+ 00320000320000320000320000320000785F5F3200003200003200003200008F
+ 8282B6B6B6C2C2C23B0C0C3200003200008E7B7BB3B3B3A0A0A08F8F8F503030
+ 320000320000320000512F2FB0B0B0C7C7C7988585320000320000320000A3A3
+ A39393938C8C8C8989898787875D4444320000969696A5A5A5BBBBBBA4979732
+ 0000320000320000A1A1A19292928A8A8A8787878787875E45453200007E7171
+ A6A6A6BDBDBDD4D4D4E7E7E7F6F6F6FEFEFEFFFFFFFFFFFFFFFFFFF8F8F8B4B4
+ E11414C71414C71414C71414C72B2BB2797979909090B4B4B4D3D3D3E9E9E9F8
+ F8F8FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2E0E0E04040C71414C71414C7
+ 1414C71414C76565929D9D9DBFBFBFDBDBDBEFEFEFE1DBDB987F7F4B1F1F3E0F
+ 0FFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFF1EEEE4B1F1FB19E9EFDFDFDFDFDFDFEFEFEFEFEFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF005934FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFBFBFBBDBDEA1414C71414C71414C71414C71414C71414C71414C74848A274
+ 74746E6E6E47478B1414C71414C71414C71414C71414C74949A39B9B9BBBBBBB
+ D7D7D7EBEBEBF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFF1EEEE7E5F5F3200003200003200003200004A1E1ED1C8C8F8F8F8FBFB
+ FBFDFDFDF1EEEEE4DEDE653F3F320000320000320000320000320000AEA1A146
+ 1A1A320000320000320000A19494C9C9C9D2D2D2876E6E320000320000502828
+ C5C5C5B2B2B29F9F9F3809093200003200003200006E5555C2C2C2D7D7D7C1B8
+ B8320000320000320000A8A5A59D9D9D8F8F8F8787878282824B292932000095
+ 9595A8A8A8C0C0C0C7C4C43200003200003200009083839B9B9B8E8E8E868686
+ 8282825B42423200007F7272AAAAAAC2C2C2D9D9D9EBEBEBF8F8F8FEFEFEFFFF
+ FFFFFFFFFFFFFFF9F9F9B5B5E21414C71414C71414C71414C72B2BB27878788E
+ 8E8EB2B2B2D1D1D1E8E8E8F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEFEFEF
+ DBDBDB1E1EC71414C71414C71414C71414C77E7E89A4A4A4C5C5C5DFDFDFF2F2
+ F2FCFCFCFFFFFFFFFFFFD8CFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CFCFF2EFEFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF137801FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEDCDCF21414C71414C71414C71414C714
+ 14C71414C71414C71414C72B2BBE4646AA1919C31414C71414C71414C71414C7
+ 1414C75252ACABABABC8C8C8DFDFDFF0F0F0FAFAFAFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5DFDFA48E8E987F7FB19E
+ 9EF1EEEEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFCABEBE4B1F1F32
+ 0000320000320000BCAFAF978181320000320000320000B0A4A4DDDDDDE3E3E3
+ E9E9E9552C2C320000320000705050C7C7C76C50503200003200003200003200
+ 00A79D9DD5D5D5E5E5E5EEEEEE3D0E0E320000320000958585ADADAD9D9D9D92
+ 92928B8B8B3D1111320000A0A0A0B3B3B3C9C9C9DADADA471B1B320000320000
+ 8B7878ACACAC9C9C9C9090908B8B8B421A1A320000867979B5B5B5CCCCCCE0E0
+ E0EFEFEFF9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFAFAFADFDFEB1414C71414C714
+ 14C71414C72B2BB27777778C8C8CAEAEAECECECEE6E6E6F6F6F6FEFEFEFFFFFF
+ FFFFFFFEFEFEF8F8F8EBEBEBD5D5D51414C71414C71414C71414C71414C78B8B
+ 8BABABABCBCBCBE3E3E3F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC14
+ 14C71414C71414C71414C71414C71414C71414C71414C71414C71414C71414C7
+ 1414C71414C71414C71414C71414C77171B4BFBFBFD6D6D6E8E8E8F5F5F5FCFC
+ FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFF1EEEE8A6E6E320000320000C6B9B9E8E5E53D0E0E320000
+ 3200009A8484ECECECEFEFEFF3F3F3D0C7C73200003200003200003200003200
+ 00320000320000320000451919DADADAE6E6E6F0F0F0F6F6F67B5C5C32000032
+ 00005027279E9292B3B3B3A7A7A7705A5A3200003200009A9191C4C4C4D7D7D7
+ E5E5E5775858320000320000461A1A9E9191B2B2B2A6A6A6705A5A3200003200
+ 00958888C7C7C7DADADAE9E9E9F5F5F5FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFB
+ FBFBEFEFEF1414C71414C71414C71414C72626B7777777898989AAAAAACACACA
+ E3E3E3F4F4F4FEFEFEFFFFFFFFFFFFFEFEFEF6F6F6E6E6E6ACACCE1414C71414
+ C71414C71414C72D2DB4929292B4B4B4D2D2D2E9E9E9F7F7F7FEFEFEFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1AC30BFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFEFEFE1414C71414C71414C71414C71414C71414C71414C7
+ 1414C71414C71414C71414C71414C71414C71414C71414C71414C79696C3D3D3
+ D3E3E3E3F0F0F0F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBEAEAE3E0F0F
+ CABEBEFCFCFC967D7D320000320000947B7BF7F7F7F8F8F8FAFAFAFBFBFBB09D
+ 9D320000320000320000320000320000320000320000A18E8EEBEBEBF2F2F2F8
+ F8F8FBFBFBE2DCDC3200003200003200003200006C4C4C684949320000320000
+ 320000A59999D8D8D8E6E6E6EFEFEFDCD6D63200003200003200003200006C4C
+ 4C684949320000320000320000A79A9ADADADAE7E7E7F2F2F2F9F9F9FEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F21414C71414C71414C71414C71414C7
+ 777777868686A4A4A4C5C5C5E0E0E0F2F2F2FCFCFCFFFFFFFFFFFFFCFCFCF2F2
+ F2E0E0E08F8FC71414C71414C71414C71414C73C3CAD9B9B9BBDBDBDD9D9D9ED
+ EDEDF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3C3F08989E34E4ED5
+ 1414C71414C71414C71414C71414C71414C71414C71414C71414C71414C71414
+ C71414C71F1FC8DADADAE5E5E5EFEFEFF7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFD8CFCFF2EFEFFFFFFFFEFEFEB19E9E320000B19E9EFDFD
+ FDFEFEFEFEFEFEFEFEFEFEFEFEB19E9E32000032000032000032000032000061
+ 3C3CF3F3F3F6F6F6FAFAFAFDFDFDFEFEFEFEFEFE8A6E6E320000320000320000
+ 320000320000320000320000320000B5A9A9E9E9E9F1F1F1F7F7F7FAFAFA7E5E
+ 5E320000320000320000320000320000320000320000320000B7AAAAEBEBEBF2
+ F2F2F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4F4F42E2ECB
+ 1414C71414C71414C71414C77777778383839E9E9EC0C0C0DBDBDBEFEFEFFBFB
+ FBFFFFFFFEFEFEFAFAFAEDEDEDD9D9D96969C31414C71414C71414C71414C755
+ 55A4A6A6A6C6C6C6E0E0E0F2F2F2FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B4ED6C6CDC2222CA1414C71414C71414
+ C71414C71414C71414C71414C71414C76363D3EBEBEBF2F2F2F8F8F8FBFBFBFE
+ FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCABEBE58
+ 2F2F3200003E0F0F967D7DEEEBEBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF
+ FEFEFE582F2F3200003200003200003200003200003200003D0E0EDAD4D4F5F5
+ F5F9F9F9FCFCFCFEFEFEF1EEEE572E2E32000032000032000032000032000032
+ 0000552C2CE6E3E3F6F6F6FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFEFEFEF7F7F74848CF1414C71414C71414C71414C77777778080809898
+ 98B9B9B9D6D6D6EBEBEBF8F8F8FEFEFEFDFDFDF5F5F5E6E6E6D0D0D03B3BC214
+ 14C71414C71414C71414C772729FB0B0B0CFCFCFE6E6E6F5F5F5FDFDFDFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFB4B4ED6C6CDC2222CA1414C71414C71414C71414C72121C9E7E7F2F7
+ F7F7FAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF987F7F4B1F1F3200003200003E0F
+ 0F7C5D5DE2DCDCFBFBFBFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFF2EFEF987F7F3E
+ 0F0F3200003200004A1E1E967D7DFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F96464D41414C71414C71414
+ C71414C75F5F8C7D7D7D909090B0B0B0CECECEE5E5E5F5F5F5FBFBFBFAFAFAEF
+ EFEFDDDDDDC5C5C51414C71414C71414C71414C71414C79D9D9DBCBCBCD8D8D8
+ ECECECF8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B4ED6C6CDC4E
+ 4ED57979DEEEEEF9FDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFB
+ FB9090DF1414C71414C71414C71414C75A5A927A7A7A898989A4A4A4C2C2C2DA
+ DADAECECECF4F4F4F1F1F1E5E5E5D0D0D08D8DBA1414C71414C71414C71414C7
+ 3A3AB5AAAAAAC8C8C8E0E0E0F2F2F2FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFDFDFDBDBDEA1414C71414C71414C71414C74A4AA479
+ 7979808080979797B2B2B2CBCBCBDDDDDDE5E5E5E1E1E1D4D4D4BEBEBE5353B8
+ 1414C71414C71414C71414C76767ABB8B8B8D4D4D4E9E9E9F6F6F6FEFEFEFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F81414C714
+ 14C71414C71414C73838B47B7B7B7B7B7B8989899F9F9FB6B6B6C7C7C7CECECE
+ CBCBCBBDBDBDA8A8A82424C11414C71414C71414C71414C79F9FABC6C6C6DFDF
+ DFEFEFEFFAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFBFBFB4B4BD21414C71414C71414C71C1CC48181817979797D7D7D
+ 8C8C8C9E9E9EACACACB2B2B2AFAFAFA3A3A37B7B9C1414C71414C71414C71414
+ C73F3FBABABABAD4D4D4E9E9E9F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF137801FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE9494E21414C71414C71414C7
+ 1414C77676987E7E7E7979797D7D7D8787879090909595959292928A8A8A3C3C
+ AD1414C71414C71414C71414C77F7FB8CBCBCBE1E1E1F0F0F0FAFAFAFEFEFEFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 0080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+ DEDEF51414C71414C71414C71414C74747B88B8B8B7E7E7E7A7A7A7B7B7B7F7F
+ 7F80808080808069698A1414C71414C71414C71414C72626C3C5C5C5DBDBDBEC
+ ECECF7F7F7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF1AC30BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFDFDFD6969D91414C71414C71414C71414C78484
+ A58D8D8D8383837D7D7D7C7C7C7C7C7C7D7D7D2727BA1414C71414C71414C714
+ 14C78080C4D7D7D7E9E9E9F4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEC2C2EF1414
+ C71414C71414C71414C73232C49B9BA69696968D8D8D88888880808B4040B014
+ 14C71414C71414C71414C74040C7D7D7D7E7E7E7F2F2F2FAFAFAFEFEFEFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF800080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFEFEFE6B6BDA1414C71414C71414C71414C71E1EC76D6DBC82
+ 82AF6363B12525C21414C71414C71414C71414C71F1FC8B6B6D7E8E8E8F2F2F2
+ F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFA3131CE1414C714
+ 14C71414C71414C71414C71414C71414C71414C71414C71414C71414C71414C7
+ 9595D8ECECECF4F4F4FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFD2D2F32222CA1414C71414C71414C71414C71414C71414C71414C7
+ 1414C71414C71414C79B9BDEF2F2F2F7F7F7FBFBFBFEFEFEFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF000080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D2F33F3FD11414C71414C7
+ 1414C71414C71414C71414C71414C72F2FCCCBCBEDF8F8F8FBFBFBFDFDFDFEFE
+ FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800080FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFB4B4ED6C6CDC4E4ED54D4DD44D4DD46B6BDAB2B2EAFCFCFCFDFD
+ FDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 0080}
+ OnClick = LogoClick
+ end
+ object Label3: TLabel
+ Left = 10
+ Top = 210
+ Width = 231
+ Height = 19
+ Align = alTop
+ Alignment = taCenter
+ Caption = 'progressus imprimis'
+ Font.Charset = ANSI_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -16
+ Font.Name = 'Times New Roman'
+ Font.Style = [fsItalic]
+ ParentFont = False
+ end
+ end
+ end
+ object OpenDialog1: TOpenDialog
+ DefaultExt = 'pq3'
+ Filter = 'Progress Quest games|*.pq3'
+ Left = 476
+ Top = 240
+ end
+end
diff --git a/orig/pq/Front.pas b/orig/pq/Front.pas
new file mode 100644
index 0000000..fb04ac9
--- /dev/null
+++ b/orig/pq/Front.pas
@@ -0,0 +1,47 @@
+unit Front;
+{ copyright (c)2002 Eric Fredricksen all rights reserved }
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, StdCtrls, ExtCtrls;
+
+type
+ TFrontForm = class(TForm)
+ Panel1: TPanel;
+ Button1: TButton;
+ Button2: TButton;
+ OpenDialog1: TOpenDialog;
+ Button4: TButton;
+ Label2: TLabel;
+ Button3: TButton;
+ Panel2: TPanel;
+ Logo: TImage;
+ Label3: TLabel;
+ HomeLink: TLabel;
+ Label1: TLabel;
+ procedure HomeLinkClick(Sender: TObject);
+ procedure LogoClick(Sender: TObject);
+ end;
+
+var
+ FrontForm: TFrontForm;
+
+implementation
+
+uses ShellAPI, Main, Info;
+
+{$R *.dfm}
+
+procedure TFrontForm.HomeLinkClick(Sender: TObject);
+begin
+ ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
+end;
+
+procedure TFrontForm.LogoClick(Sender: TObject);
+begin
+ ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
+end;
+
+end.
diff --git a/orig/pq/HTTPGet.pas b/orig/pq/HTTPGet.pas
new file mode 100644
index 0000000..dab952b
--- /dev/null
+++ b/orig/pq/HTTPGet.pas
@@ -0,0 +1,448 @@
+{*************************************************************}
+{ HTTPGet component for Delphi 32 }
+{ Version: 1.94 }
+{ E-Mail: info@utilmind.com }
+{ WWW: http://www.utilmind.com }
+{ Created: October 19, 1999 }
+{ Modified: June 6, 2000 }
+{ Legal: Copyright (c) 1999-2000, UtilMind Solutions }
+{*************************************************************}
+{ PROPERTIES: }
+{ Agent: String - User Agent }
+{ }
+{* BinaryData: Boolean - This setting specifies which type }
+{* of data will taken from the web. }
+{* If you set this property TRUE then }
+{* component will determinee the size }
+{* of files *before* getting them from }
+{* the web. }
+{* If this property is FALSE then as we}
+{* do not knows the file size the }
+{* OnProgress event will doesn't work. }
+{* Also please remember that is you set}
+{* this property as TRUE you will not }
+{* capable to get from the web ASCII }
+{* data and ofter got OnError event. }
+{ }
+{ FileName: String - Path to local file to store the data }
+{ taken from the web }
+{ Password, UserName - set this properties if you trying to }
+{ get data from password protected }
+{ directories. }
+{ Referer: String - Additional data about referer document }
+{ URL: String - The url to file or document }
+{ UseCache: Boolean - Get file from the Internet Explorer's }
+{ cache if requested file is cached. }
+{*************************************************************}
+{ METHODS: }
+{ GetFile - Get the file from the web specified in the URL }
+{ property and store it to the file specified in }
+{ the FileName property }
+{ GetString - Get the data from web and return it as usual }
+{ String. You can receive this string hooking }
+{ the OnDoneString event. }
+{ Abort - Stop the current session }
+{*************************************************************}
+{ EVENTS: }
+{ OnDoneFile - Occurs when the file is downloaded }
+{ OnDoneString - Occurs when the string is received }
+{ OnError - Occurs when error happend }
+{ OnProgress - Occurs at the receiving of the BINARY DATA }
+{*************************************************************}
+{ Please see demo program for more information. }
+{*************************************************************}
+{ IMPORTANT NOTE: }
+{ This software is provided 'as-is', without any express or }
+{ implied warranty. In no event will the author be held }
+{ liable for any damages arising from the use of this }
+{ software. }
+{ Permission is granted to anyone to use this software for }
+{ any purpose, including commercial applications, and to }
+{ alter it and redistribute it freely, subject to the }
+{ following restrictions: }
+{ 1. The origin of this software must not be misrepresented, }
+{ you must not claim that you wrote the original software. }
+{ If you use this software in a product, an acknowledgment }
+{ in the product documentation would be appreciated but is }
+{ not required. }
+{ 2. Altered source versions must be plainly marked as such, }
+{ and must not be misrepresented as being the original }
+{ software. }
+{ 3. This notice may not be removed or altered from any }
+{ source distribution. }
+{*************************************************************}
+
+unit HTTPGet;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, WinInet;
+
+type
+ TOnProgressEvent = procedure(Sender: TObject; TotalSize, Readed: Integer) of object;
+ TOnDoneFileEvent = procedure(Sender: TObject; FileName: String; FileSize: Integer) of object;
+ TOnDoneStringEvent = procedure(Sender: TObject; Result: String) of object;
+
+ THTTPGetThread = class(TThread)
+ private
+ FTAcceptTypes,
+ FTAgent,
+ FTURL,
+ FTFileName,
+ FTStringResult,
+ FTUserName,
+ FTPassword,
+ FTPostQuery,
+ FTReferer: String;
+ FTBinaryData,
+ FTUseCache: Boolean;
+
+ FTResult: Boolean;
+ FTFileSize: Integer;
+ FTToFile: Boolean;
+
+ BytesToRead, BytesReaded: DWord;
+
+ FTProgress: TOnProgressEvent;
+
+ procedure UpdateProgress;
+ protected
+ procedure Execute; override;
+ public
+ constructor Create(aAcceptTypes, aAgent, aURL, aFileName, aUserName, aPassword, aPostQuery, aReferer: String;
+ aBinaryData, aUseCache: Boolean; aProgress: TOnProgressEvent; aToFile: Boolean);
+ end;
+
+ THTTPGet = class(TComponent)
+ private
+ FAcceptTypes: String;
+ FAgent: String;
+ FBinaryData: Boolean;
+ FURL: String;
+ FUseCache: Boolean;
+ FFileName: String;
+ FUserName: String;
+ FPassword: String;
+ FPostQuery: String;
+ FReferer: String;
+ FWaitThread: Boolean;
+
+ FThread: THTTPGetThread;
+ FError: TNotifyEvent;
+ FResult: Boolean;
+
+ FProgress: TOnProgressEvent;
+ FDoneFile: TOnDoneFileEvent;
+ FDoneString: TOnDoneStringEvent;
+
+ procedure ThreadDone(Sender: TObject);
+ public
+ constructor Create(aOwner: TComponent); override;
+ destructor Destroy; override;
+
+ procedure GetFile;
+ procedure GetString;
+ procedure Abort;
+ published
+ property AcceptTypes: String read FAcceptTypes write FAcceptTypes;
+ property Agent: String read FAgent write FAgent;
+ property BinaryData: Boolean read FBinaryData write FBinaryData;
+ property URL: String read FURL write FURL;
+ property UseCache: Boolean read FUseCache write FUseCache;
+ property FileName: String read FFileName write FFileName;
+ property UserName: String read FUserName write FUserName;
+ property Password: String read FPassword write FPassword;
+ property PostQuery: String read FPostQuery write FPostQuery;
+ property Referer: String read FReferer write FReferer;
+ property WaitThread: Boolean read FWaitThread write FWaitThread;
+
+ property OnProgress: TOnProgressEvent read FProgress write FProgress;
+ property OnDoneFile: TOnDoneFileEvent read FDoneFile write FDoneFile;
+ property OnDoneString: TOnDoneStringEvent read FDoneString write FDoneString;
+ property OnError: TNotifyEvent read FError write FError;
+ end;
+
+procedure Register;
+
+implementation
+
+// THTTPGetThread
+
+constructor THTTPGetThread.Create(aAcceptTypes, aAgent, aURL, aFileName, aUserName, aPassword, aPostQuery, aReferer: String;
+ aBinaryData, aUseCache: Boolean; aProgress: TOnProgressEvent; aToFile: Boolean);
+begin
+ FreeOnTerminate := True;
+ inherited Create(True);
+
+ FTAcceptTypes := aAcceptTypes;
+ FTAgent := aAgent;
+ FTURL := aURL;
+ FTFileName := aFileName;
+ FTUserName := aUserName;
+ FTPassword := aPassword;
+ FTPostQuery := aPostQuery;
+ FTReferer := aReferer;
+ FTProgress := aProgress;
+ FTBinaryData := aBinaryData;
+ FTUseCache := aUseCache;
+
+ FTToFile := aToFile;
+ Resume;
+end;
+
+procedure THTTPGetThread.UpdateProgress;
+begin
+ FTProgress(Self, FTFileSize, BytesReaded);
+end;
+
+procedure THTTPGetThread.Execute;
+var
+ hSession, hConnect, hRequest: hInternet;
+ HostName, FileName: String;
+ f: File;
+ Buf: Pointer;
+ dwBufLen, dwIndex: DWord;
+ Data: Array[0..$400] of Char;
+ TempStr: String;
+ RequestMethod: PChar;
+ InternetFlag: DWord;
+ AcceptType: LPStr;
+
+ procedure ParseURL(URL: String; var HostName, FileName: String);
+
+ procedure ReplaceChar(c1, c2: Char; var St: String);
+ var
+ p: Integer;
+ begin
+ while True do
+ begin
+ p := Pos(c1, St);
+ if p = 0 then Break
+ else St[p] := c2;
+ end;
+ end;
+
+ var
+ i: Integer;
+ begin
+ if Pos('http://', LowerCase(URL)) <> 0 then
+ System.Delete(URL, 1, 7);
+
+ i := Pos('/', URL);
+ HostName := Copy(URL, 1, i);
+ FileName := Copy(URL, i, Length(URL) - i + 1);
+
+ if (Length(HostName) > 0) and (HostName[Length(HostName)] = '/') then
+ SetLength(HostName, Length(HostName) - 1);
+ end;
+
+ procedure CloseHandles;
+ begin
+ InternetCloseHandle(hRequest);
+ InternetCloseHandle(hConnect);
+ InternetCloseHandle(hSession);
+ end;
+
+begin
+ try
+ ParseURL(FTURL, HostName, FileName);
+
+ if Terminated then
+ begin
+ FTResult := False;
+ Exit;
+ end;
+
+ if FTAgent <> '' then
+ hSession := InternetOpen(PChar(FTAgent),
+ INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
+ else
+ hSession := InternetOpen(nil,
+ INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
+
+ hConnect := InternetConnect(hSession, PChar(HostName),
+ INTERNET_DEFAULT_HTTP_PORT, PChar(FTUserName), PChar(FTPassword), INTERNET_SERVICE_HTTP, 0, 0);
+
+ if FTPostQuery = '' then RequestMethod := 'GET'
+ else RequestMethod := 'POST';
+
+ if FTUseCache then InternetFlag := 0
+ else InternetFlag := INTERNET_FLAG_RELOAD;
+
+ AcceptType := PChar('Accept: ' + FTAcceptTypes);
+ hRequest := HttpOpenRequest(hConnect, RequestMethod, PChar(FileName), 'HTTP/1.0',
+ PChar(FTReferer), @AcceptType, InternetFlag, 0);
+
+ if FTPostQuery = '' then
+ HttpSendRequest(hRequest, nil, 0, nil, 0)
+ else
+ HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,
+ PChar(FTPostQuery), Length(FTPostQuery));
+
+ if Terminated then
+ begin
+ CloseHandles;
+ FTResult := False;
+ Exit;
+ end;
+
+ dwIndex := 0;
+ dwBufLen := 1024;
+ GetMem(Buf, dwBufLen);
+
+ FTResult := HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
+ Buf, dwBufLen, dwIndex);
+
+ if Terminated then
+ begin
+ FreeMem(Buf);
+ CloseHandles;
+ FTResult := False;
+ Exit;
+ end;
+
+ if FTResult or not FTBinaryData then
+ begin
+ if FTResult then
+ FTFileSize := StrToInt(StrPas(Buf));
+
+ BytesReaded := 0;
+
+ if FTToFile then
+ begin
+ AssignFile(f, FTFileName);
+ Rewrite(f, 1);
+ end
+ else FTStringResult := '';
+
+ while True do
+ begin
+ if Terminated then
+ begin
+ if FTToFile then CloseFile(f);
+ FreeMem(Buf);
+ CloseHandles;
+
+ FTResult := False;
+ Exit;
+ end;
+
+ if not InternetReadFile(hRequest, @Data, SizeOf(Data), BytesToRead) then Break
+ else
+ if BytesToRead = 0 then Break
+ else
+ begin
+ if FTToFile then
+ BlockWrite(f, Data, BytesToRead)
+ else
+ begin
+ TempStr := Data;
+ SetLength(TempStr, BytesToRead);
+ FTStringResult := FTStringResult + TempStr;
+ end;
+
+ inc(BytesReaded, BytesToRead);
+ if Assigned(FTProgress) then
+ Synchronize(UpdateProgress);
+ end;
+ end;
+
+ if FTToFile then
+ FTResult := FTFileSize = Integer(BytesReaded)
+ else
+ begin
+ SetLength(FTStringResult, BytesReaded);
+ FTResult := BytesReaded <> 0;
+ end;
+
+ if FTToFile then CloseFile(f);
+ end;
+
+ FreeMem(Buf);
+
+ CloseHandles;
+ except
+ end;
+end;
+
+// HTTPGet
+
+constructor THTTPGet.Create(aOwner: TComponent);
+begin
+ inherited Create(aOwner);
+ FAcceptTypes := '*/*';
+ FAgent := 'UtilMind HTTPGet';
+end;
+
+destructor THTTPGet.Destroy;
+begin
+ Abort;
+ inherited Destroy;
+end;
+
+procedure THTTPGet.GetFile;
+var
+ Msg: TMsg;
+begin
+ if not Assigned(FThread) then
+ begin
+ FThread := THTTPGetThread.Create(FAcceptTypes, FAgent, FURL, FFileName, FUserName, FPassword, FPostQuery, FReferer,
+ FBinaryData, FUseCache, FProgress, True);
+ FThread.OnTerminate := ThreadDone;
+ if FWaitThread then
+ while Assigned(FThread) do
+ while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
+ begin
+ TranslateMessage(Msg);
+ DispatchMessage(Msg);
+ end;
+ end
+end;
+
+procedure THTTPGet.GetString;
+var
+ Msg: TMsg;
+begin
+ if not Assigned(FThread) then
+ begin
+ FThread := THTTPGetThread.Create(FAcceptTypes, FAgent, FURL, FFileName, FUserName, FPassword, FPostQuery, FReferer,
+ FBinaryData, FUseCache, FProgress, False);
+ FThread.OnTerminate := ThreadDone;
+ if FWaitThread then
+ while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
+ begin
+ TranslateMessage(Msg);
+ DispatchMessage(Msg);
+ end;
+ end
+end;
+
+procedure THTTPGet.Abort;
+begin
+ if Assigned(FThread) then
+ begin
+ FThread.Terminate;
+ FThread.FTResult := False;
+ end;
+end;
+
+procedure THTTPGet.ThreadDone(Sender: TObject);
+begin
+ FResult := FThread.FTResult;
+ if FResult then
+ if FThread.FTToFile then
+ if Assigned(FDoneFile) then FDoneFile(Self, FThread.FTFileName, FThread.FTFileSize) else
+ else
+ if Assigned(FDoneString) then FDoneString(Self, FThread.FTStringResult) else
+ else
+ if Assigned(FError) then FError(Self);
+ FThread := nil;
+end;
+
+procedure Register;
+begin
+ RegisterComponents('UtilMind', [THTTPGet]);
+end;
+
+end.
diff --git a/orig/pq/INFO b/orig/pq/INFO
new file mode 100644
index 0000000..28b2260
--- /dev/null
+++ b/orig/pq/INFO
@@ -0,0 +1,13 @@
+NAME: pq6
+
+DESCRIPTION: Progress Quest: The phenomenon
+
+CATEGORY: games
+
+STATUS: mature
+
+LANGUAGE: Delphi
+
+TAGS: Object Pascal PQ
+
+MAIN: Main.pas
diff --git a/orig/pq/Info.dcu b/orig/pq/Info.dcu
new file mode 100644
index 0000000..38b822e
--- /dev/null
+++ b/orig/pq/Info.dcu
Binary files differ
diff --git a/orig/pq/Info.dfm b/orig/pq/Info.dfm
new file mode 100644
index 0000000..ad3ed1a
--- /dev/null
+++ b/orig/pq/Info.dfm
@@ -0,0 +1,101 @@
+object Form4: TForm4
+ Left = 192
+ Top = 107
+ Width = 696
+ Height = 480
+ Caption = 'Progress Quest VI'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ Icon.Data = {
+ 0000010001002020000000000000A80800001600000028000000200000004000
+ 0000010008000000000080040000000000000000000000000000000000000000
+ 0000000080000080000000808000800000008000800080800000C0C0C000C0DC
+ C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
+ 220029292900555555004D4D4D004242420039393900807CFF005050FF009300
+ D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
+ CC00003300000033330000336600003399000033CC000033FF00006600000066
+ 330000666600006699000066CC000066FF000099000000993300009966000099
+ 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
+ FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
+ CC003300FF00333300003333330033336600333399003333CC003333FF003366
+ 00003366330033666600336699003366CC003366FF0033990000339933003399
+ 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
+ CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
+ 330066006600660099006600CC006600FF006633000066333300663366006633
+ 99006633CC006633FF00666600006666330066666600666699006666CC006699
+ 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
+ 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
+ CC009999000099339900990099009900CC009900000099333300990066009933
+ CC009900FF00996600009966330099336600996699009966CC009933FF009999
+ 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
+ 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
+ FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
+ 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
+ CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
+ 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
+ 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
+ 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
+ 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
+ FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
+ 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
+ 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
+ D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
+ 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852
+ 5151515151515258585858585858585858585858585858585852515151515852
+ 51514A4A4A515152585858585858585858585858585858585251514B4A4B5852
+ 514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852
+ 150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B
+ 0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311
+ 15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313
+ 22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822
+ 23296710294B4A4A44442244154422441544224444444A221012292322585858
+ 58514443151D4B4A442215221522152215221522154B0E151544515252585858
+ 5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858
+ 585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858
+ 585858514B1514220E2243150D444444444322222214154B4B4B515258585858
+ 585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858
+ 585858585222444B457422224B44224B222274454B4422524A4B515258585858
+ 58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858
+ 585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858
+ 58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858
+ 58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858
+ 585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858
+ 5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858
+ 58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858
+ 5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858
+ 58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858
+ 585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858
+ 585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858
+ 5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858
+ 585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858
+ 5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858
+ 58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858
+ 5892B51909B592585858585858585858585858585892B509DDB5925858585858
+ 58720909ECEB58585858585858585858585858585858F8EC0909725858585858
+ 58F78DAEED5858585858585858585858585858585858581CAE8D925858580000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000000000000000000000000000}
+ OldCreateOrder = False
+ PixelsPerInch = 96
+ TextHeight = 13
+ object WebBrowser1: TWebBrowser
+ Left = 0
+ Top = 0
+ Width = 688
+ Height = 453
+ Align = alClient
+ TabOrder = 0
+ ControlData = {
+ 4C0000001B470000D22E00000000000000000000000000000000000000000000
+ 000000004C000000000000000000000001000000E0D057007335CF11AE690800
+ 2B2E126208000000000000004C0000000114020000000000C000000000000046
+ 8000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000100000000000000000000000000000000000000}
+ end
+end
diff --git a/orig/pq/Info.pas b/orig/pq/Info.pas
new file mode 100644
index 0000000..d9d606d
--- /dev/null
+++ b/orig/pq/Info.pas
@@ -0,0 +1,31 @@
+unit Info;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, OleCtrls, SHDocVw;
+
+type
+ TForm4 = class(TForm)
+ WebBrowser1: TWebBrowser;
+ private
+ { Private declarations }
+ public
+ procedure Go(url: String);
+ end;
+
+var
+ Form4: TForm4;
+
+implementation
+
+{$R *.dfm}
+
+procedure TForm4.Go(url: String);
+begin
+ WebBrowser1.Navigate(url);
+ Show;
+end;
+
+end.
diff --git a/orig/pq/Login.dcu b/orig/pq/Login.dcu
new file mode 100644
index 0000000..ae6eda0
--- /dev/null
+++ b/orig/pq/Login.dcu
Binary files differ
diff --git a/orig/pq/Login.dfm b/orig/pq/Login.dfm
new file mode 100644
index 0000000..8e9a09b
--- /dev/null
+++ b/orig/pq/Login.dfm
@@ -0,0 +1,166 @@
+object LoginForm: TLoginForm
+ Left = 314
+ Top = 162
+ Width = 265
+ Height = 448
+ Caption = 'Progress Quest Login'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ OldCreateOrder = False
+ Position = poScreenCenter
+ PixelsPerInch = 96
+ TextHeight = 13
+ object GroupBox1: TGroupBox
+ Left = 12
+ Top = 176
+ Width = 237
+ Height = 69
+ Caption = 'New Users'
+ TabOrder = 0
+ object Label1: TLabel
+ Left = 2
+ Top = 15
+ Width = 233
+ Height = 18
+ Align = alTop
+ AutoSize = False
+ Caption = ' To sign up for a new account, visit'
+ Layout = tlBottom
+ end
+ object Label2: TLabel
+ Left = 2
+ Top = 33
+ Width = 233
+ Height = 25
+ Cursor = crHandPoint
+ Align = alTop
+ Alignment = taCenter
+ AutoSize = False
+ Caption = 'http://progressquest.com/user.php'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clActiveCaption
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = [fsBold, fsUnderline]
+ ParentColor = False
+ ParentFont = False
+ Layout = tlCenter
+ OnClick = Label2Click
+ end
+ end
+ object Login: TButton
+ Left = 88
+ Top = 388
+ Width = 75
+ Height = 25
+ Caption = 'Login'
+ Default = True
+ Enabled = False
+ TabOrder = 1
+ OnClick = LoginClick
+ end
+ object Button1: TButton
+ Left = 172
+ Top = 388
+ Width = 75
+ Height = 25
+ Caption = 'Cancel'
+ ModalResult = 2
+ TabOrder = 2
+ end
+ object GroupBox2: TGroupBox
+ Left = 12
+ Top = 256
+ Width = 237
+ Height = 121
+ Caption = 'Proxy Settings'
+ TabOrder = 3
+ object Label3: TLabel
+ Left = 12
+ Top = 20
+ Width = 213
+ Height = 45
+ AutoSize = False
+ Caption =
+ 'Most people can leave this blank, but if you use a proxy to conn' +
+ 'ect to the Web, or wish to use a proxy to cheat, enter it here.'
+ WordWrap = True
+ end
+ object LabeledEdit1: TLabeledEdit
+ Left = 12
+ Top = 84
+ Width = 149
+ Height = 21
+ EditLabel.Width = 31
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Server'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ TabOrder = 0
+ end
+ object LabeledEdit2: TLabeledEdit
+ Left = 164
+ Top = 84
+ Width = 57
+ Height = 21
+ EditLabel.Width = 19
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Port'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ TabOrder = 1
+ end
+ end
+ object GroupBox3: TGroupBox
+ Left = 12
+ Top = 12
+ Width = 237
+ Height = 157
+ Caption = 'Account Info'
+ TabOrder = 4
+ object Label4: TLabel
+ Left = 8
+ Top = 20
+ Width = 221
+ Height = 45
+ AutoSize = False
+ Caption =
+ 'Some realms are open to the public riffraff, but others may requ' +
+ 'ire a valid account. You can enter default account information h' +
+ 'ere.'
+ WordWrap = True
+ end
+ object Account: TLabeledEdit
+ Left = 8
+ Top = 84
+ Width = 221
+ Height = 21
+ EditLabel.Width = 40
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Account'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ TabOrder = 0
+ OnChange = AccountChange
+ end
+ object Password: TLabeledEdit
+ Left = 8
+ Top = 124
+ Width = 221
+ Height = 21
+ EditLabel.Width = 46
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Password'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ PasswordChar = '*'
+ TabOrder = 1
+ OnChange = AccountChange
+ end
+ end
+end
diff --git a/orig/pq/Login.pas b/orig/pq/Login.pas
new file mode 100644
index 0000000..70d9460
--- /dev/null
+++ b/orig/pq/Login.pas
@@ -0,0 +1,60 @@
+unit Login;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, StdCtrls, ExtCtrls, Psock, NMHttp;
+
+type
+ TLoginForm = class(TForm)
+ GroupBox1: TGroupBox;
+ Label1: TLabel;
+ Label2: TLabel;
+ Login: TButton;
+ Button1: TButton;
+ GroupBox2: TGroupBox;
+ LabeledEdit1: TLabeledEdit;
+ LabeledEdit2: TLabeledEdit;
+ Label3: TLabel;
+ GroupBox3: TGroupBox;
+ Account: TLabeledEdit;
+ Password: TLabeledEdit;
+ Label4: TLabel;
+ procedure Label2Click(Sender: TObject);
+ procedure AccountChange(Sender: TObject);
+ procedure LoginClick(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ LoginForm: TLoginForm;
+
+implementation
+
+uses ShellAPI, Main, NewGuy, SelServ;
+
+{$R *.dfm}
+
+procedure TLoginForm.Label2Click(Sender: TObject);
+begin
+ ShellExecute(GetDesktopWindow(), 'open', PChar(TLabel(Sender).Caption), nil, '', SW_SHOW);
+end;
+
+procedure TLoginForm.AccountChange(Sender: TObject);
+begin
+ Login.Enabled := (Account.Text <> '') and (Password.Text <> '');
+end;
+
+procedure TLoginForm.LoginClick(Sender: TObject);
+begin
+ MainForm.SetLogin(Account.Text);
+ MainForm.SetPassword(Password.Text);
+ if ServerSelectForm.Go then
+ ModalResult := mrOk;
+end;
+
+end.
diff --git a/orig/pq/Main.dcu b/orig/pq/Main.dcu
new file mode 100644
index 0000000..db7c7c5
--- /dev/null
+++ b/orig/pq/Main.dcu
Binary files differ
diff --git a/orig/pq/Main.ddp b/orig/pq/Main.ddp
new file mode 100755
index 0000000..cdc0ee8
--- /dev/null
+++ b/orig/pq/Main.ddp
Binary files differ
diff --git a/orig/pq/Main.dfm b/orig/pq/Main.dfm
new file mode 100755
index 0000000..1814f4f
--- /dev/null
+++ b/orig/pq/Main.dfm
@@ -0,0 +1,692 @@
+object MainForm: TMainForm
+ Left = 330
+ Top = 154
+ Width = 682
+ Height = 513
+ HorzScrollBar.Visible = False
+ VertScrollBar.Visible = False
+ Caption = 'Progress Quest'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ Icon.Data = {
+ 0000010001002020000000000000A80800001600000028000000200000004000
+ 0000010008000000000080040000000000000000000000000000000000000000
+ 0000000080000080000000808000800000008000800080800000C0C0C000C0DC
+ C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
+ 220029292900555555004D4D4D004242420039393900807CFF005050FF009300
+ D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
+ CC00003300000033330000336600003399000033CC000033FF00006600000066
+ 330000666600006699000066CC000066FF000099000000993300009966000099
+ 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
+ FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
+ CC003300FF00333300003333330033336600333399003333CC003333FF003366
+ 00003366330033666600336699003366CC003366FF0033990000339933003399
+ 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
+ CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
+ 330066006600660099006600CC006600FF006633000066333300663366006633
+ 99006633CC006633FF00666600006666330066666600666699006666CC006699
+ 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
+ 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
+ CC009999000099339900990099009900CC009900000099333300990066009933
+ CC009900FF00996600009966330099336600996699009966CC009933FF009999
+ 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
+ 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
+ FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
+ 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
+ CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
+ 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
+ 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
+ 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
+ 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
+ FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
+ 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
+ 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
+ D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
+ 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
+ 0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
+ 15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
+ 2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
+ 23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
+ 0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
+ 0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
+ 0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
+ 0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
+ 0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
+ 0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
+ 0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
+ 0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
+ 0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
+ 0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
+ 0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
+ 0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
+ 0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
+ 0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
+ 0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
+ 0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
+ FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
+ FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
+ 003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
+ C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
+ KeyPreview = True
+ OldCreateOrder = False
+ Position = poScreenCenter
+ OnClose = FormClose
+ OnCreate = FormCreate
+ OnKeyDown = FormKeyDown
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Panel1: TPanel
+ Left = 0
+ Top = 0
+ Width = 200
+ Height = 451
+ Align = alLeft
+ TabOrder = 0
+ object Label1: TLabel
+ Left = 1
+ Top = 1
+ Width = 198
+ Height = 13
+ Align = alTop
+ Caption = 'Character Sheet'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = [fsBold]
+ ParentFont = False
+ end
+ object Label6: TLabel
+ Left = 1
+ Top = 229
+ Width = 198
+ Height = 13
+ Align = alTop
+ Caption = 'Experience'
+ end
+ object Label4: TLabel
+ Left = 1
+ Top = 258
+ Width = 198
+ Height = 13
+ Align = alTop
+ Caption = 'Spell Book'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = [fsBold]
+ ParentFont = False
+ end
+ object Traits: TListView
+ Left = 1
+ Top = 14
+ Width = 198
+ Height = 79
+ Align = alTop
+ Columns = <
+ item
+ Caption = 'Trait'
+ Width = 60
+ end
+ item
+ AutoSize = True
+ Caption = 'Value'
+ end>
+ ColumnClick = False
+ FlatScrollBars = True
+ HideSelection = False
+ Items.Data = {
+ 6E0000000400000000000000FFFFFFFFFFFFFFFF0000000000000000044E616D
+ 6500000000FFFFFFFFFFFFFFFF0000000000000000045261636500000000FFFF
+ FFFFFFFFFFFF000000000000000005436C61737300000000FFFFFFFFFFFFFFFF
+ 0000000000000000054C6576656C}
+ MultiSelect = True
+ ReadOnly = True
+ RowSelect = True
+ TabOrder = 1
+ ViewStyle = vsReport
+ end
+ object Stats: TListView
+ Left = 1
+ Top = 93
+ Width = 198
+ Height = 136
+ Align = alTop
+ Columns = <
+ item
+ Caption = 'Stat'
+ Width = 60
+ end
+ item
+ AutoSize = True
+ Caption = 'Value'
+ end>
+ ColumnClick = False
+ FlatScrollBars = True
+ HideSelection = False
+ Items.Data = {
+ CE0000000800000000000000FFFFFFFFFFFFFFFF000000000000000003535452
+ 00000000FFFFFFFFFFFFFFFF000000000000000003434F4E00000000FFFFFFFF
+ FFFFFFFF00000000000000000344455800000000FFFFFFFFFFFFFFFF00000000
+ 0000000003494E5400000000FFFFFFFFFFFFFFFF000000000000000003574953
+ 00000000FFFFFFFFFFFFFFFF00000000000000000343484100000000FFFFFFFF
+ FFFFFFFF0000000000000000064850204D617800000000FFFFFFFFFFFFFFFF00
+ 00000000000000064D50204D6178}
+ MultiSelect = True
+ ReadOnly = True
+ RowSelect = True
+ TabOrder = 0
+ ViewStyle = vsReport
+ end
+ object ExpBar: TProgressBar
+ Left = 1
+ Top = 242
+ Width = 198
+ Height = 16
+ Align = alTop
+ Min = 0
+ Max = 100
+ ParentShowHint = False
+ Position = 50
+ Smooth = True
+ ShowHint = True
+ TabOrder = 2
+ end
+ object Spells: TListView
+ Left = 1
+ Top = 271
+ Width = 198
+ Height = 147
+ Align = alClient
+ Columns = <
+ item
+ AutoSize = True
+ Caption = 'Spell'
+ end
+ item
+ Caption = 'Level'
+ Width = 60
+ end>
+ ColumnClick = False
+ FlatScrollBars = True
+ HideSelection = False
+ MultiSelect = True
+ ReadOnly = True
+ RowSelect = True
+ TabOrder = 3
+ ViewStyle = vsReport
+ end
+ object Cheats: TPanel
+ Left = 1
+ Top = 418
+ Width = 198
+ Height = 32
+ Align = alBottom
+ TabOrder = 4
+ Visible = False
+ object CashIn: TButton
+ Left = 32
+ Top = 4
+ Width = 25
+ Height = 25
+ Caption = '$'
+ TabOrder = 0
+ OnClick = CashInClick
+ end
+ object Button1: TButton
+ Left = 4
+ Top = 4
+ Width = 25
+ Height = 25
+ Caption = 'L+1'
+ TabOrder = 1
+ OnClick = Button1Click
+ end
+ object FinishQuest: TButton
+ Left = 92
+ Top = 4
+ Width = 27
+ Height = 25
+ Caption = 'Q!'
+ TabOrder = 2
+ OnClick = FinishQuestClick
+ end
+ object Button3: TButton
+ Left = 124
+ Top = 4
+ Width = 27
+ Height = 25
+ Caption = 'X!'
+ TabOrder = 3
+ OnClick = SpeedButton1Click
+ end
+ object CheatPlot: TButton
+ Left = 60
+ Top = 3
+ Width = 27
+ Height = 25
+ Caption = 'P!'
+ TabOrder = 4
+ OnClick = CheatPlotClick
+ end
+ end
+ end
+ object Panel3: TPanel
+ Left = 474
+ Top = 0
+ Width = 200
+ Height = 451
+ Align = alRight
+ TabOrder = 1
+ object Label3: TLabel
+ Left = 1
+ Top = 177
+ Width = 198
+ Height = 13
+ Align = alTop
+ Caption = 'Quests'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = [fsBold]
+ ParentFont = False
+ end
+ object Label2: TLabel
+ Left = 1
+ Top = 1
+ Width = 198
+ Height = 13
+ Align = alTop
+ Caption = 'Plot Development'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = [fsBold]
+ ParentFont = False
+ end
+ object QuestBar: TProgressBar
+ Left = 1
+ Top = 434
+ Width = 198
+ Height = 16
+ Align = alBottom
+ Min = 0
+ Max = 0
+ ParentShowHint = False
+ Smooth = True
+ ShowHint = True
+ TabOrder = 0
+ end
+ object Plots: TListView
+ Left = 1
+ Top = 14
+ Width = 198
+ Height = 147
+ Align = alTop
+ Columns = <
+ item
+ AutoSize = True
+ Caption = 'Act'
+ end>
+ ColumnClick = False
+ FlatScrollBars = True
+ HideSelection = False
+ IconOptions.Arrangement = iaLeft
+ MultiSelect = True
+ ReadOnly = True
+ RowSelect = True
+ ShowColumnHeaders = False
+ StateImages = ImageList1
+ TabOrder = 1
+ ViewStyle = vsReport
+ end
+ object PlotBar: TProgressBar
+ Left = 1
+ Top = 161
+ Width = 198
+ Height = 16
+ Align = alTop
+ Min = 0
+ Max = 0
+ ParentShowHint = False
+ Smooth = True
+ ShowHint = True
+ TabOrder = 2
+ end
+ object Quests: TListView
+ Left = 1
+ Top = 190
+ Width = 198
+ Height = 244
+ Align = alClient
+ Columns = <
+ item
+ AutoSize = True
+ Caption = 'Quest'
+ end>
+ ColumnClick = False
+ FlatScrollBars = True
+ HideSelection = False
+ IconOptions.Arrangement = iaLeft
+ MultiSelect = True
+ ReadOnly = True
+ RowSelect = True
+ ShowColumnHeaders = False
+ StateImages = ImageList1
+ TabOrder = 3
+ ViewStyle = vsReport
+ end
+ end
+ object Panel2: TPanel
+ Left = 200
+ Top = 0
+ Width = 274
+ Height = 451
+ Align = alClient
+ TabOrder = 2
+ object InventoryLabelAlsoGameStyle: TLabel
+ Left = 1
+ Top = 176
+ Width = 272
+ Height = 13
+ Align = alTop
+ Caption = 'Inventory'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = [fsBold]
+ ParentFont = False
+ end
+ object Label7: TLabel
+ Left = 1
+ Top = 421
+ Width = 272
+ Height = 13
+ Align = alBottom
+ Caption = 'Encumbrance'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentFont = False
+ end
+ object Label8: TLabel
+ Left = 1
+ Top = 1
+ Width = 272
+ Height = 13
+ Align = alTop
+ Caption = 'Equipment'
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = [fsBold]
+ ParentFont = False
+ end
+ object Inventory: TListView
+ Left = 1
+ Top = 189
+ Width = 272
+ Height = 232
+ Align = alClient
+ Columns = <
+ item
+ AutoSize = True
+ Caption = 'Item'
+ end
+ item
+ Alignment = taRightJustify
+ Caption = 'Qty'
+ Width = 69
+ end>
+ ColumnClick = False
+ FlatScrollBars = True
+ HideSelection = False
+ MultiSelect = True
+ ReadOnly = True
+ RowSelect = True
+ TabOrder = 0
+ ViewStyle = vsReport
+ end
+ object EncumBar: TProgressBar
+ Left = 1
+ Top = 434
+ Width = 272
+ Height = 16
+ Align = alBottom
+ Min = 0
+ Max = 100
+ ParentShowHint = False
+ Position = 50
+ Smooth = True
+ ShowHint = True
+ TabOrder = 1
+ end
+ object Equips: TListView
+ Left = 1
+ Top = 14
+ Width = 272
+ Height = 162
+ Align = alTop
+ Columns = <
+ item
+ Caption = 'Position'
+ Width = 60
+ end
+ item
+ AutoSize = True
+ Caption = 'Equipped'
+ end>
+ ColumnClick = False
+ FlatScrollBars = True
+ HideSelection = False
+ Items.Data = {
+ 410100000B00000000000000FFFFFFFFFFFFFFFF000000000000000006576561
+ 706F6E00000000FFFFFFFFFFFFFFFF000000000000000006536869656C640000
+ 0000FFFFFFFFFFFFFFFF00000000000000000448656C6D00000000FFFFFFFFFF
+ FFFFFF0000000000000000074861756265726B00000000FFFFFFFFFFFFFFFF00
+ 000000000000000A4272617373616972747300000000FFFFFFFFFFFFFFFF0000
+ 0000000000000956616D62726163657300000000FFFFFFFFFFFFFFFF00000000
+ 00000000094761756E746C65747300000000FFFFFFFFFFFFFFFF000000000000
+ 00000847616D6265736F6E00000000FFFFFFFFFFFFFFFF000000000000000007
+ 4375697373657300000000FFFFFFFFFFFFFFFF00000000000000000747726561
+ 76657300000000FFFFFFFFFFFFFFFF000000000000000009536F6C6C65726574
+ 73}
+ MultiSelect = True
+ ReadOnly = True
+ RowSelect = True
+ ShowColumnHeaders = False
+ TabOrder = 2
+ ViewStyle = vsReport
+ end
+ object vars: TPanel
+ Left = 188
+ Top = 24
+ Width = 77
+ Height = 129
+ Caption = 'vars'
+ TabOrder = 3
+ Visible = False
+ object fTask: TLabel
+ Left = 12
+ Top = 16
+ Width = 27
+ Height = 13
+ AutoSize = False
+ Caption = 'fTask'
+ Color = clMoneyGreen
+ ParentColor = False
+ end
+ object fQuest: TLabel
+ Left = 12
+ Top = 36
+ Width = 31
+ Height = 13
+ AutoSize = False
+ Caption = 'fQuest'
+ Color = clSkyBlue
+ ParentColor = False
+ end
+ object fQueue: TListBox
+ Left = 12
+ Top = 76
+ Width = 49
+ Height = 45
+ ItemHeight = 13
+ TabOrder = 0
+ end
+ end
+ end
+ object Panel4: TPanel
+ Left = 0
+ Top = 451
+ Width = 674
+ Height = 35
+ Align = alBottom
+ Caption = 'Panel4'
+ TabOrder = 3
+ object Kill: TStatusBar
+ Left = 1
+ Top = -1
+ Width = 672
+ Height = 19
+ Panels = <
+ item
+ Width = 50
+ end>
+ SimplePanel = True
+ SimpleText = 'Welcome to Progress Quest!'
+ end
+ object TaskBar: TProgressBar
+ Left = 1
+ Top = 18
+ Width = 672
+ Height = 16
+ Align = alBottom
+ Min = 0
+ Max = 100
+ Position = 50
+ Smooth = True
+ Step = 1
+ TabOrder = 1
+ end
+ end
+ object Timer1: TTimer
+ Enabled = False
+ Interval = 100
+ OnTimer = Timer1Timer
+ Left = 40
+ Top = 120
+ end
+ object ImageList1: TImageList
+ Height = 12
+ Width = 12
+ Left = 92
+ Top = 52
+ Bitmap = {
+ 494C01010200040004000C000C00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 0000000000003600000028000000300000000C00000001002000000000000009
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000424D3E000000000000003E000000
+ 28000000300000000C0000000100010000000000600000000000000000000000
+ 000000000000000000000000FFFFFF0000100100000000007FD7FD0000000000
+ 7FD77D00000000007FD63D00000000007FD41D00000000007FD48D0000000000
+ 7FD5C500000000007FD7E500000000007FD7F500000000007FD7FD0000000000
+ 0010010000000000FFFFFF000000000000000000000000000000000000000000
+ 000000000000}
+ end
+end
diff --git a/orig/pq/Main.pas b/orig/pq/Main.pas
new file mode 100755
index 0000000..1623e15
--- /dev/null
+++ b/orig/pq/Main.pas
@@ -0,0 +1,1711 @@
+unit Main;
+{ copyright (c)2002 Eric Fredricksen all rights reserved }
+
+{$DEFINE CHEATS}
+{$UNDEF LOGGING}
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, ShellAPI;
+
+const
+ // revs:
+ // 5: pq 6.3
+ // 4: pq 6.2
+ // 3: pq 6.1
+ // 2: pq 6.0
+ // 1: pq 6.0, some early release I guess; don't remember
+ RevString = '&rev=5';
+ wmIconTray = WM_USER + Ord('t');
+ kFileExt = '.pq3';
+
+type
+ TMainForm = class(TForm)
+ Panel1: TPanel;
+ Label1: TLabel;
+ Traits: TListView;
+ Equips: TListView;
+ Panel3: TPanel;
+ Label3: TLabel;
+ QuestBar: TProgressBar;
+ Stats: TListView;
+ Label2: TLabel;
+ PlotBar: TProgressBar;
+ Plots: TListView;
+ Quests: TListView;
+ Panel2: TPanel;
+ Label4: TLabel;
+ Spells: TListView;
+ InventoryLabelAlsoGameStyle: TLabel;
+ Inventory: TListView;
+ Panel4: TPanel;
+ Kill: TStatusBar;
+ Label6: TLabel;
+ ExpBar: TProgressBar;
+ TaskBar: TProgressBar;
+ Timer1: TTimer;
+ EncumBar: TProgressBar;
+ Label7: TLabel;
+ ImageList1: TImageList;
+ Label8: TLabel;
+ Cheats: TPanel;
+ CashIn: TButton;
+ Button1: TButton;
+ FinishQuest: TButton;
+ Button3: TButton;
+ CheatPlot: TButton;
+ vars: TPanel;
+ fTask: TLabel;
+ fQuest: TLabel;
+ fQueue: TListBox;
+ procedure GoButtonClick(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure SpeedButton1Click(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure Button1Click(Sender: TObject);
+ procedure CashInClick(Sender: TObject);
+ procedure FinishQuestClick(Sender: TObject);
+ procedure CheatPlotClick(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormKeyDown(Sender: TObject; var Key: Word;
+ Shift: TShiftState);
+ private
+ procedure Task(caption: String; msec: Integer);
+ procedure Dequeue;
+ procedure Q(s: string);
+ function TaskDone: Boolean;
+ procedure CompleteQuest;
+ procedure CompleteAct;
+ procedure WinEquip;
+ procedure WinSpell;
+ procedure WinStat;
+ procedure WinItem;
+ function SpecialItem: String;
+ procedure LevelUp;
+ function BoringItem: String;
+ function InterestingItem: String;
+ function MonsterTask(var level: Integer): String;
+ function EquipPrice: Integer;
+ procedure Brag(trigger: String);
+ procedure TriggerAutosizes;
+ function GameSaveName: String;
+ procedure OnTrayMessage(var Msg: TMessage); message wmIconTray;
+ procedure OnSysCommand(var Msg : TWMSysCommand); message WM_SYSCOMMAND;
+ procedure Guildify;
+ procedure ClearAllSelections;
+ procedure OnQueryEndSession(var Msg : TMessage); message WM_QUERYENDSESSION;
+ procedure OnEndSession(var Msg : TMessage); message WM_ENDSESSION;
+ procedure RestoreIt;
+ function AuthenticateUrl(url: String): String;
+ {$IFDEF LOGGING}
+ procedure Log(line: String);
+ {$ENDIF}
+ procedure ExportCharSheet;
+ function CharSheet: String;
+ procedure InterplotCinematic;
+ function NamedMonster(level: Integer): String;
+ function ImpressiveGuy: String;
+ public
+ FTrayIcon: TNotifyIconData;
+ FReportSave: Boolean;
+ FLogEvents: Boolean;
+ FMakeBackups: Boolean;
+ FMinToTray: Boolean;
+ FExportSheets: Boolean;
+ FSaveFileName: String;
+ procedure MinimizeIt;
+ procedure LoadGame(name: String);
+ function SaveGame: Boolean;
+ procedure Put(list: TListView; key: String; value: String); overload;
+ procedure Put(list: TListView; pos: Integer; value: String); overload;
+ procedure Put(list: TListView; key: String; value: Integer); overload;
+ procedure Add(list: TListView; key: String; value: Integer); overload;
+ procedure AddR(list: TListView; key: String; value: Integer); overload;
+ function Get(list: TListView; key: String): String; overload;
+ function Get(list: TListView; index: Integer): String; overload;
+ function GetI(list: TListView; key: String): Integer; overload;
+ function GetI(list: TListView; index: Integer): Integer; overload;
+ function Sum(list: TListView): Integer;
+ function RollCharacter: Boolean;
+ function GetMotto: String;
+ function GetPasskey: Integer;
+ procedure SetMotto(v: String);
+ procedure SetPasskey(v: String);
+ function GetHostAddr: String;
+ function GetHostName: String;
+ procedure SetHostAddr(v: String);
+ procedure SetHostName(v: String);
+ function GetLogin: String;
+ function GetPassword: String;
+ procedure SetLogin(v: String);
+ procedure SetPassword(v: String);
+ function GetGuild: String;
+ procedure SetGuild(v: String);
+ end;
+
+var
+ MainForm: TMainForm;
+
+function Split(s: String; field: Integer): String; overload;
+function Split(s: String; field: Integer; separator: String): String; overload;
+
+procedure Navigate(url: String);
+
+implementation
+
+uses Web, StrUtils, NewGuy, Math, Config, Front, zlibex, SelServ, Login,
+ mmsystem, Registry, ShlObj;
+
+{$R *.dfm}
+
+// Returns '' if not there, which is lame, but okay for my purposes
+function RegRead(root: HKEY; path, name: String): String;
+var
+ Reg: TRegistry;
+begin
+ Reg := TRegistry.Create;
+ try
+ Reg.RootKey := root;
+ if Reg.OpenKey(path, false) then
+ Result := Reg.ReadString(name);
+ Reg.CloseKey;
+ finally
+ Reg.Free;
+ end;
+end;
+
+procedure RegWrite(root: HKEY; path, name, value: String);
+var
+ Reg: TRegistry;
+begin
+ Reg := TRegistry.Create;
+ try
+ Reg.RootKey := root;
+ Reg.OpenKey(path, true);
+ Reg.WriteString(name, value);
+ Reg.CloseKey;
+ finally
+ Reg.Free;
+ end;
+end;
+
+procedure MakeFileAssociations;
+const
+ kPQFileType = 'ProgressQuest.GameSave';
+var
+ kOpenCommand: String;
+begin
+ kOpenCommand := '"' + Application.ExeName + '" "%1"';
+ try
+ RegWrite(HKEY_CLASSES_ROOT, kFileExt,'', kPQFileType);
+ RegWrite(HKEY_CLASSES_ROOT, kPQFileType, '', 'Progresss Quest saved game');
+ RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\DefaultIcon', '', Application.ExeName + ',0');
+ RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open', '', '&Open');
+ if RegRead(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open\Command', '') <> kOpenCommand then begin
+ RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open\Command', '', kOpenCommand);
+ // Notify Windows Explorer to realize we added this. In case this is slow
+ // I don't do this unless I'm sure this one has changed.
+ SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
+ end;
+ except
+ on Exception do begin
+ // Don't care
+ end;
+ end;
+end;
+
+procedure TMainForm.MinimizeIt;
+begin
+ if not FMinToTray then Exit;
+ with FTrayIcon do
+ begin
+ cbSize := SizeOf(FTrayIcon);
+ Wnd := Handle;
+ uID := 0;
+ uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
+ uCallbackMessage := wmIconTray;
+ hIcon := Application.Icon.Handle;
+ StrPLCopy(szTip, Caption, 63);
+ end;
+ Application.Minimize;
+ ShowWindow(Application.Handle, SW_HIDE);
+ Shell_NotifyIcon(NIM_ADD,@FTrayIcon);
+end;
+
+procedure TMainForm.OnSysCommand(var Msg: TWMSysCommand);
+begin
+ if (Msg.CmdType = SC_MINIMIZE) and FMinToTray then
+ MinimizeIt();
+ inherited;
+end;
+
+procedure TMainForm.RestoreIt;
+begin
+ ShowWindow(Application.Handle, SW_SHOW);
+ Application.Restore;
+ Shell_NotifyIcon(NIM_DELETE, @MainForm.FTrayIcon);
+end;
+
+procedure TMainForm.OnTrayMessage(var Msg: TMessage);
+begin
+ case Msg.lParam of
+ WM_LBUTTONDOWN, WM_RBUTTONDOWN:
+ RestoreIt;
+
+ WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK:
+ RestoreIt;
+ end;
+end;
+
+procedure StartTimer;
+begin
+ if not MainForm.Timer1.Enabled then begin
+ MainForm.Timer1.Tag := timeGetTime;
+ //Shell_NotifyIcon(NIM_ADD, @MainForm.FTrayIcon);
+ end;
+ MainForm.Timer1.Enabled := True;
+ // BS location for this, but...
+ MainForm.Caption := 'ProgressQuest - ' + ChangeFileExt(ExtractFileName(MainForm.GameSaveName), '');
+end;
+
+function TMainForm.GetPasskey: Integer; begin Result := Traits.Tag; end;
+procedure TMainForm.SetPasskey(v: String);
+begin
+ Traits.Hint := v;
+ Traits.Tag := StrToIntDef(Traits.Hint,0);
+end;
+
+function TMainForm.GetMotto: String; begin Result := Stats.Hint; end;
+procedure TMainForm.SetMotto(v: String); begin Stats.Hint := v; end;
+
+function TMainForm.GetHostName: String; begin Result := Spells.Hint; end;
+procedure TMainForm.SetHostName(v: String); begin Spells.Hint := v; end;
+
+function TMainForm.GetHostAddr: String;
+begin
+ Result := Equips.Hint;
+ if (Result = '') and (GetPasskey <> 0) then
+ Result := 'http://www.progressquest.com/knoram.php?';
+end;
+procedure TMainForm.SetHostAddr(v: String); begin Equips.Hint := v; end;
+
+function TMainForm.GetLogin: String; begin Result := Inventory.Hint; end;
+procedure TMainForm.SetLogin(v: String); begin Inventory.Hint := v; end;
+
+function TMainForm.GetPassword: String; begin Result := Plots.Hint; end;
+procedure TMainForm.SetPassword(v: String); begin Plots.Hint := v; end;
+
+function TMainForm.GetGuild: String; begin Result := Label1.Hint; end;
+procedure TMainForm.SetGuild(v: String); begin Label1.Hint := v; end;
+
+procedure TMainForm.Q(s: string);
+begin
+ fQueue.Items.Add(s);
+ Dequeue;
+end;
+
+function TMainForm.TaskDone: Boolean;
+begin
+ with TaskBar do
+ Result := Position >= Max;
+end;
+
+function Odds(chance, outof: Integer): Boolean;
+begin
+ Result := Random(outof) < chance;
+end;
+
+function RandSign(): Integer;
+begin
+ Result := Random(2) * 2 - 1;
+end;
+
+function Pick(s: TStrings): String;
+begin
+ Result := s[Random(s.Count)];
+end;
+
+function RandomLow(below: Integer): Integer;
+begin
+ Result := Min(Random(below),Random(below));
+end;
+
+function PickLow(s: TStrings): String;
+begin
+ Result := s[RandomLow(s.Count)];
+end;
+
+function Ends(s,e: String): Boolean;
+begin
+ Result := Copy(s,1+Length(s)-Length(e),Length(e)) = e;
+end;
+
+function Plural(s: String): String;
+begin
+ if Ends(s,'y')
+ then Result := Copy(s,1,Length(s)-1) + 'ies'
+ else if Ends(s,'us')
+ then Result := Copy(s,1,Length(s)-2) + 'i'
+ else if Ends(s,'ch') or Ends(s,'x') or Ends(s,'s')
+ then Result := s + 'es'
+ else if Ends(s,'f')
+ then Result := Copy(s,1,Length(s)-1) + 'ves'
+ else if Ends(s,'man') or Ends(s,'Man')
+ then Result := Copy(s,1,Length(s)-2) + 'en'
+ else Result := s + 's';
+end;
+
+function Split(s: String; field: Integer; separator: String): String;
+var
+ p: Integer;
+begin
+ while field > 0 do begin
+ p := Pos(separator,s);
+ s := Copy(s,p+1,10000);
+ Dec(field);
+ end;
+ if Pos(separator,s) > 0
+ then Result := Copy(s,1,Pos(separator,s)-1)
+ else Result := s;
+end;
+
+function Split(s: String; field: Integer): String;
+begin
+ result := Split(s, field, '|');
+end;
+
+function Indefinite(s: String; qty: Integer): String;
+begin
+ if qty = 1 then begin
+ if Pos(s[1], 'AEIOUÜaeiouü') > 0
+ then Result := 'an ' + s
+ else Result := 'a ' + s;
+ end else begin
+ Result := IntToStr(qty) + ' ' + Plural(s);
+ end;
+end;
+
+function Definite(s: String; qty: Integer): String;
+begin
+ if qty > 1 then
+ s := {IntToStr(qty) + ' ' +} Plural(s);
+ Result := 'the ' + s;
+end;
+
+function Sick(m: Integer; s: String): String;
+begin
+ Result := IntToStr(m) + s; // in case I screw up
+ case m of
+ -5,5: Result := 'dead ' + s;
+ -4,4: Result := 'comatose ' + s;
+ -3,3: Result := 'crippled ' + s;
+ -2,2: Result := 'sick ' + s;
+ -1,1: Result := 'undernourished ' + s;
+ end;
+end;
+
+function Young(m: Integer; s: String): String;
+begin
+ Result := IntToStr(m) + s; // in case I screw up
+ case -m of
+ -5,5: Result := 'foetal ' + s;
+ -4,4: Result := 'baby ' + s;
+ -3,3: Result := 'preadolescent ' + s;
+ -2,2: Result := 'teenage ' + s;
+ -1,1: Result := 'underage ' + s;
+ end;
+end;
+
+function Big(m: Integer; s: String): String;
+begin
+ Result := s; // in case I screw up
+ case m of
+ 1,-1: Result := 'greater ' + s;
+ 2,-2: Result := 'massive ' + s;
+ 3,-3: Result := 'enormous ' + s;
+ 4,-4: Result := 'giant ' + s;
+ 5,-5: Result := 'titanic ' + s;
+ end;
+end;
+
+function Special(m: Integer; s: String): String;
+begin
+ Result := s; // in case I screw up
+ case -m of
+ 1,-1:
+ if Pos(' ',Result) > 0
+ then Result := 'veteran ' + s
+ else Result := 'Battle-' + s;
+ 2,-2: Result := 'cursed ' + s;
+ 3,-3:
+ if Pos(' ',Result) > 0
+ then Result := 'warrior ' + s
+ else Result := 'Were-' + s;
+ 4,-4: Result := 'undead ' + s;
+ 5,-5: Result := 'demon ' + s;
+ end;
+end;
+
+procedure TMainForm.InterplotCinematic;
+var
+ nemesis: String;
+ i, s: Integer;
+begin
+ case Random(3) of
+ 0: begin
+ Q('task|1|Exhausted, you arrive at a friendly oasis in a hostile land');
+ Q('task|2|You greet old friends and meet new allies');
+ Q('task|2|You are privy to a council of powerful do-gooders');
+ Q('task|1|There is much to be done. You are chosen!');
+ end;
+ 1: begin
+ Q('task|1|Your quarry is in sight, but a mighty enemy bars your path!');
+ nemesis := NamedMonster(GetI(Traits,'Level')+3);
+ Q('task|4|A desperate struggle commences with ' + nemesis);
+ s := Random(3);
+ for i := 1 to Random(1 + Plots.Items.Count) do begin
+ Inc(s, 1 + Random(2));
+ case s mod 3 of
+ 0: Q('task|2|Locked in grim combat with ' + nemesis);
+ 1: Q('task|2|' + nemesis + ' seems to have the upper hand');
+ 2: Q('task|2|You seem to gain the advantage over ' + nemesis);
+ end;
+ end;
+ Q('task|3|Victory! ' + nemesis + ' is slain! Exhausted, you lose conciousness');
+ Q('task|2|You awake in a friendly place, but the road awaits');
+ end;
+ 2: begin
+ nemesis := ImpressiveGuy;
+ Q('task|2|Oh sweet relief! You''ve reached the protection of the good ' + nemesis);
+ Q('task|3|There is rejoicing, and an unnerving encouter with ' + nemesis + ' in private');
+ Q('task|2|You forget your ' + BoringItem + ' and go back to get it');
+ Q('task|2|What''s this!? You overhear something shocking!');
+ Q('task|2|Could ' + nemesis + ' be a dirty double-dealer?');
+ Q('task|3|Who can possibly be trusted with this news!? ... Oh yes, of course');
+ end;
+ end;
+ Q('plot|1|Loading');
+end;
+
+
+function TMainForm.NamedMonster(level: Integer): String;
+var
+ lev, i: Integer;
+ m: String;
+begin
+ lev := 0; // shut up, compiler hint
+ for i := 1 to 5 do begin
+ m := Pick(K.Monsters.Lines);
+ if (Result = '') or (abs(level-StrToInt(Split(m,1))) < abs(level-lev)) then begin
+ Result := Split(m,0);
+ lev := StrToInt(Split(m,1));
+ end;
+ end;
+ Result := GenerateName + ' the ' + Result;
+end;
+
+function TMainForm.ImpressiveGuy: String;
+begin
+ Result := Pick(K.ImpressiveTitles.Lines);
+ case Random(2) of
+ 0: Result := Result + ' of the ' + Pick(K.Races.Lines);
+ 1: Result := Result + ' of ' + GenerateName;
+ end;
+end;
+
+function TMainForm.MonsterTask(var level: Integer): String;
+var
+ qty, lev, i: Integer;
+ monster, m1: string;
+ definite: Boolean;
+begin
+ definite := false;
+ for i := level downto 1 do begin
+ if Odds(2,5) then
+ Inc(level, RandSign());
+ end;
+ if level < 1 then level := 1;
+ // level = level of puissance of opponent(s) we'll return
+
+ if Odds(1,25) then begin
+ // use an NPC every once in a while
+ monster := ' ' + Pick(NewGuyForm.Race.Items);
+ if Odds(1,2)
+ then monster := 'passing' + monster + ' ' + Pick(NewGuyForm.Klass.Items)
+ else begin
+ monster := PickLow(K.Titles.Lines) + ' ' + GenerateName + ' the' + monster;
+ definite := true;
+ end;
+ lev := level;
+ monster := monster + '|' + IntToStr(level) + '|*';
+ end else if (fQuest.Caption <> '') and Odds(1,4) then begin
+ // use the quest monster
+ monster := k.Monsters.Lines[fQuest.Tag];
+ lev := StrToInt(Split(monster,1));
+ end else begin
+ // pick the monster out of so many random ones closest to the level we want
+ monster := Pick(K.Monsters.Lines);
+ lev := StrToInt(Split(monster,1));
+ i := 5;
+ while (i > 0) do begin // or (lev - level > 4) do begin
+ m1 := Pick(K.Monsters.Lines);
+ if abs(level-StrToInt(Split(m1,1))) < abs(level-lev) then begin
+ monster := m1;
+ lev := StrToInt(Split(monster,1));
+ end;
+ if i > 0 then Dec(i);
+ end;
+ end;
+
+ fTask.Caption := monster;
+ Result := Split(monster,0);
+ fTask.Caption := 'kill|' + fTask.Caption;
+
+ qty := 1;
+ if (level-lev) > 10 then begin
+ // lev is too low. multiply...
+ qty := (level + Random(lev)) div max(lev,1);
+ if qty < 1 then qty := 1;
+ level := level div qty;
+ end;
+
+ if (level - lev) <= -10 then begin
+ Result := 'imaginary ' + Result;
+ end else if (level-lev) < -5 then begin
+ i := 10+(level-lev);
+ i := 5-Random(i+1);
+ Result := Sick(i,Young((lev-level)-i,Result));
+ end else if ((level-lev) < 0) and (Random(2) = 1) then begin
+ Result := Sick(level-lev,Result);
+ end else if ((level-lev) < 0) then begin
+ Result := Young(level-lev,Result);
+ end else if (level-lev) >= 10 then begin
+ Result := 'messianic ' + Result;
+ end else if (level-lev) > 5 then begin
+ i := 10-(level-lev);
+ i := 5-Random(i+1);
+ Result := Big(i,Special((level-lev)-i,Result));
+ end else if ((level-lev) > 0) and (Random(2) = 1) then begin
+ Result := Big(level-lev,Result);
+ end else if ((level-lev) > 0) then begin
+ Result := Special(level-lev,Result);
+ end;
+
+ lev := level;
+ level := lev * qty;
+
+ if not definite then Result := Indefinite(Result, qty);
+end;
+
+function ProperCase(s:String):String;
+begin
+ Result := UpperCase(Copy(s,1,1)) + Copy(s,2,10000);
+end;
+
+function TMainForm.EquipPrice: Integer;
+begin
+ Result := 5 * GetI(Traits,'Level') * GetI(Traits,'Level')
+ + 10 * GetI(Traits,'Level')
+ + 20;
+end;
+
+procedure TMainForm.Dequeue;
+var
+ s, a, old: String;
+ n, l: Integer;
+begin
+ while TaskDone do begin
+ if Split(fTask.Caption,0) = 'kill' then begin
+ if Split(fTask.Caption,3) = '*' then begin
+ WinItem;
+ end else if Split(fTask.Caption,3) <> '' then begin
+ Add(Inventory,LowerCase(Split(fTask.Caption,1) + ' ' + ProperCase(Split(fTask.Caption,3))),1);
+ end;
+ end else if fTask.Caption = 'buying' then begin
+ // buy some equipment
+ Add(Inventory,'Gold',-EquipPrice);
+ WinEquip;
+ end else if (fTask.Caption = 'market') or (fTask.Caption = 'sell') then with Inventory do begin
+ if fTask.Caption = 'sell' then begin
+ Tag := GetI(Inventory,1);
+ Tag := Tag * GetI(Traits,'Level');
+ if Pos(' of ',Items[1].Caption) > 0 then
+ Tag := Tag * (1+RandomLow(10)) * (1+RandomLow(GetI(Traits,'Level')));
+ Items[0].MakeVisible(false);
+ Items.Delete(1);
+ Add(Inventory,'Gold',Tag);
+ end;
+ if Items.Count > 1 then begin
+ Task('Selling ' + Indefinite(Inventory.Items[1].Caption, GetI(Inventory,1)), 1 * 1000);
+ fTask.Caption := 'sell';
+ break;
+ end;
+ end;
+ old := fTask.Caption;
+ fTask.Caption := '';
+ if (fQueue.Items.Count > 0) then begin
+ a := Split(fQueue.Items[0],0);
+ n := StrToInt(Split(fQueue.Items[0],1));
+ s := Split(fQueue.Items[0],2);
+ if (a = 'task') or (a = 'plot') then begin
+ if a = 'plot' then begin
+ CompleteAct;
+ s := 'Loading ' + Plots.Items[Plots.Items.Count-1].Caption;
+ end;
+ Task(s, n * 1000);
+ fQueue.Items.Delete(0);
+ end else begin
+ raise Exception.Create('bah!');
+ end;
+ end else with Encumbar do if Position >= Max then begin
+ Task('Heading to market to sell loot',4 * 1000);
+ fTask.Caption := 'market';
+ end else if (Pos('kill|',old) <= 0) and (old <> 'heading') then begin
+ if GetI(Inventory, 'Gold') > EquipPrice then begin
+ Task('Negotiating purchase of better equipment', 5 * 1000);
+ fTask.Caption := 'buying';
+ end else begin
+ Task('Heading to the killing fields', 4 * 1000);
+ fTask.Caption := 'heading';
+ end;
+ end else begin
+ n := GetI(Traits,'Level');
+ l := n;
+ s := MonsterTask(n);
+ n := (2 * InventoryLabelAlsoGameStyle.Tag * n * 1000) div l;
+ Task('Executing ' + s, n);
+ end;
+ end;
+end;
+
+function IndexOf(list: TListView; key: String): Integer;
+var
+ i: Integer;
+begin
+ for i := 0 to list.Items.Count-1 do if list.Items.Item[i].Caption = key then begin
+ Result := i;
+ Exit;
+ end;
+ with list.Items.Add do begin
+ Result := Index;
+ Caption := key;
+ MakeVisible(false);
+ list.Width := list.Width - 1; // trigger an autosize
+ end;
+end;
+
+procedure TMainForm.Put(list: TListView; key, value: String);
+begin
+ Put(list, IndexOf(list,key), value);
+end;
+
+procedure TMainForm.Put(list: TListView; key: String; value: Integer);
+begin
+ Put(list,key,IntToStr(value));
+ if key = 'STR' then
+ Encumbar.Max := 10 + value;
+ if list = Inventory then with Encumbar do begin
+ Position := Sum(Inventory) - GetI(Inventory,'Gold');
+ Hint := IntToStr(Position) + '/' + IntToStr(Max) + ' cubits';
+ end;
+end;
+
+procedure TMainForm.Put(list: TListView; pos: Integer; value: String);
+begin
+ with list.Items.Item[pos] do begin
+ if SubItems.Count < 1
+ then SubItems.Add(value)
+ else SubItems[0] := value;
+ end;
+ //list.MultiSelect := true;
+ //list.RowSelect := true;
+ //list.HideSelection := false;
+ list.Items[pos].Selected := true;
+end;
+
+function LevelUpTime(level: Integer): Integer; // seconds
+begin
+ // 20 minutes per level
+ Result := 20 * level * 60;
+end;
+
+procedure TMainForm.GoButtonClick(Sender: TObject);
+begin
+ with ExpBar do begin
+ Position := 0;
+ Max := LevelUpTime(1);
+ end;
+
+ fTask.Caption := '';
+ fQuest.Caption := '';
+ fQueue.Items.Clear;
+
+ Task('Loading.',2000); // that dot is spotted for later...
+ Q('task|10|Experiencing an enigmatic and foreboding night vision');
+ Q('task|6|Much is revealed about that wise old bastard you''d underestimated');
+ Q('task|6|A shocking series of events leaves you alone and bewildered, but resolute');
+ Q('task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey');
+ Q('task|2|Loading');
+
+ PlotBar.Max := 26;
+ with Plots.Items.Add do begin
+ Caption := 'Prologue';
+ StateIndex := 0;
+ end;
+
+ StartTimer;
+ SaveGame;
+ Brag('s');
+end;
+
+procedure TMainForm.WinSpell;
+begin
+ AddR(Spells, K.Spells.Lines[RandomLow(Min(GetI(Stats,'WIS')+GetI(Traits,'Level'),
+ K.Spells.Lines.Count))], 1);
+end;
+
+function LPick(list: TStrings; goal: Integer): String;
+var
+ i, best, b1: Integer;
+ s: String;
+begin
+ Result := Pick(list);
+ for i := 1 to 5 do begin
+ best := StrToInt(Split(Result,1));
+ s := Pick(list);
+ b1 := StrToInt(Split(s,1));
+ if abs(goal-best) > abs(goal-b1) then
+ Result := s;
+ end;
+end;
+
+procedure TMainForm.WinEquip;
+var
+ posn, qual, plus, count: Integer;
+ name, modifier: String;
+ stuff, better, worse: TStrings;
+begin
+ posn := Random(Equips.Items.Count);
+ Equips.Tag := posn; // remember as the "best item"
+ if posn = 0 then begin
+ stuff := K.Weapons.Lines;
+ better := K.OffenseAttrib.Lines;
+ worse := K.OffenseBad.Lines;
+ end else begin
+ better := K.DefenseAttrib.Lines;
+ worse := K.DefenseBad.Lines;
+ if posn = 1
+ then stuff := K.Shields.Lines
+ else stuff := K.Armors.Lines;
+ end;
+ name := LPick(stuff,GetI(Traits,'Level'));
+ qual := StrToInt(Split(name,1));
+ name := Split(name,0);
+ plus := GetI(Traits,'Level') - qual;
+ if plus < 0 then better := worse;
+ count := 0;
+ while (count < 2) and (plus <> 0) do begin
+ modifier := Pick(better);
+ qual := StrToInt(Split(modifier, 1));
+ modifier := Split(modifier, 0);
+ if Pos(modifier, name) > 0 then Break; // no repeats
+ if Abs(plus) < Abs(qual) then Break; // too much
+ name := modifier + ' ' + name;
+ Dec(plus, qual);
+ Inc(count);
+ end;
+ if plus <> 0 then name := IntToStr(plus) + ' ' + name;
+ if plus > 0 then name := '+' + name;
+
+ Put(Equips, posn, name);
+end;
+
+procedure TMainForm.WinStat;
+var
+ i,t: Integer;
+ function Square(x: Integer): Integer; begin Result := x * x; end;
+begin
+ if Odds(1,2)
+ then i := Random(Stats.Items.Count)
+ else begin
+ // favor the best stat so it will tend to clump
+ t := 0;
+ for i := 0 to 5 do Inc(t,Square(GetI(Stats,i)));
+ t := Random(t);
+ i := -1;
+ while t >= 0 do begin
+ Inc(i);
+ Dec(t,Square(GetI(Stats,i)));
+ end;
+ end;
+ Add(Stats, Stats.Items[i].Caption, 1);
+end;
+
+function TMainForm.SpecialItem: String;
+begin
+ Result := InterestingItem + ' of ' +
+ Pick(K.ItemOfs.Lines);
+end;
+
+function TMainForm.InterestingItem: String;
+begin
+ Result := Pick(K.ItemAttrib.Lines) + ' ' +
+ Pick(K.Specials.Lines);
+end;
+
+function TMainForm.BoringItem: String;
+begin
+ Result := Pick(K.BoringItems.Lines);
+end;
+
+procedure TMainForm.WinItem;
+begin
+ Add(Inventory, SpecialItem, 1);
+end;
+
+procedure TMainForm.CompleteQuest;
+var
+ lev, level, l, i, montag: Integer;
+ m: string;
+begin
+ lev := 0; // Quell stupid compiler warning
+ with QuestBar do begin
+ Position := 0;
+ Max := 50 + Random(100);
+ end;
+ with Quests do begin
+ if Items.Count > 0 then begin
+ {$IFDEF LOGGING}
+ Log('Quest completed: ' + Items[Items.Count-1].Caption);
+ {$ENDIF}
+ Items[Items.Count-1].StateIndex := 1;
+ case Random(4) of
+ 0: WinSpell;
+ 1: WinEquip;
+ 2: WinStat;
+ 3: WinItem;
+ end;
+ end;
+ while Items.Count > 99 do Items.Delete(0);
+
+ with Items.Add do begin
+ case Random(5) of
+ 0: begin
+ level := GetI(Traits,'Level');
+ for i := 1 to 4 do begin
+ montag := Random(K.Monsters.Lines.Count);
+ m := K.Monsters.Lines[montag];
+ l := StrToInt(Split(m,1));
+ if (i = 1) or (abs(l - level) < abs(lev - level)) then begin
+ lev := l;
+ fQuest.Caption := m;
+ fQuest.Tag := montag;
+ end;
+ end;
+ Caption := 'Exterminate ' + Definite(Split(fQuest.Caption,0),2);
+ end;
+ 1: begin
+ fQuest.Caption := InterestingItem;
+ Caption := 'Seek ' + Definite(fQuest.Caption,1);
+ fQuest.Caption := '';
+ end;
+ 2: begin
+ fQuest.Caption := BoringItem;
+ Caption := 'Deliver this ' + fQuest.Caption;
+ fQuest.Caption := '';
+ end;
+ 3: begin
+ fQuest.Caption := BoringItem;
+ Caption := 'Fetch me ' + Indefinite(fQuest.Caption,1);
+ fQuest.Caption := '';
+ end;
+ 4: begin
+ level := GetI(Traits,'Level');
+ for i := 1 to 2 do begin
+ montag := Random(K.Monsters.Lines.Count);
+ m := K.Monsters.Lines[montag];
+ l := StrToInt(Split(m,1));
+ if (i = 1) or (abs(l - level) < abs(lev - level)) then begin
+ lev := l;
+ fQuest.Caption := m;
+ end;
+ end;
+ Caption := 'Placate ' + Definite(Split(fQuest.Caption,0),2);
+ fQuest.Caption := '';
+ end;
+ end;
+ {$IFDEF LOGGING}
+ Log('Commencing quest: ' + Caption);
+ {$ENDIF}
+ StateIndex := 0;
+ MakeVisible(false);
+ end;
+ Width := Width - 1; // trigger a column resize
+ end;
+ SaveGame;
+end;
+
+function Rome(var n: Integer; dn: Integer; var s: String; ds: String): Boolean;
+begin
+ Result := (n >= dn);
+ if Result then begin
+ n := n - dn;
+ s := s + ds;
+ end;
+end;
+
+function UnRome(var s: String; dn: Integer; var n: Integer; ds: String): Boolean;
+begin
+ Result := (Copy(s,1,Length(ds)) = ds);
+ if Result then begin
+ s := Copy(s,Length(ds)+1,10000);
+ n := n + dn;
+ end;
+end;
+
+function IntToRoman(n: Integer): String;
+begin
+ while Rome(n, 1000, Result, 'M') do ;
+ Rome(n, 900, Result, 'CM');
+ Rome(n, 500, Result, 'D');
+ Rome(n, 400, Result, 'CD');
+ while Rome(n, 100, Result, 'C') do ;
+ Rome(n, 90, Result, 'XC');
+ Rome(n, 50, Result, 'L');
+ Rome(n, 40, Result, 'XL');
+ while Rome(n, 10, Result, 'X') do ;
+ Rome(n, 9, Result, 'IX');
+ Rome(n, 5, Result, 'V');
+ Rome(n, 4, Result, 'IV');
+ while Rome(n, 1, Result, 'I') do ;
+end;
+
+function RomanToInt(n: String): Integer;
+begin
+ Result := 0;
+ while UnRome(n, 1000, Result, 'M') do ;
+ UnRome(n, 900, Result, 'CM');
+ UnRome(n, 500, Result, 'D');
+ UnRome(n, 400, Result, 'CD');
+ while UnRome(n, 100, Result, 'C') do ;
+ UnRome(n, 90, Result, 'XC');
+ UnRome(n, 50, Result, 'L');
+ UnRome(n, 40, Result, 'XL');
+ while UnRome(n, 10, Result, 'X') do ;
+ UnRome(n, 9, Result, 'IX');
+ UnRome(n, 5, Result, 'V');
+ UnRome(n, 4, Result, 'IV');
+ while UnRome(n, 1, Result, 'I') do ;
+end;
+
+procedure TMainForm.CompleteAct;
+begin
+ PlotBar.Position := 0;
+ with Plots do begin
+ Items[Items.Count-1].StateIndex := 1;
+ PlotBar.Max := 60 * 60 * (1 + 5 * Items.Count); // 1 hr + 5/act
+ PlotBar.Hint := 'Cutscene omitted';
+ with Items.Add do begin
+ Caption := 'Act ' + IntToRoman(Items.Count-1);
+ MakeVisible(false);
+ StateIndex := 0;
+ Width := Width-1;
+ end;
+ end;
+ WinItem;
+ WinEquip;
+ SaveGame;
+ Brag('a');
+end;
+
+
+{$IFDEF LOGGING}
+procedure TMainForm.Log(line: String);
+var
+ stamp: String;
+ logname: String;
+ log: Text;
+begin
+ if FLogEvents then begin
+ logname := ChangeFileExt(GameSaveName, '.log');
+ DateTimeToString(stamp, '[yyyy-mm-dd hh:nn:ss]', Now);
+ AssignFile(log, logname);
+ if FileExists(logname) then Append(log) else Rewrite(log);
+ WriteLn(log, stamp + ' ' + line);
+ Flush(log);
+ CloseFile(log);
+ end;
+end;
+{$ENDIF}
+
+procedure TMainForm.ExportCharSheet;
+var
+ f: TextFile;
+begin
+ AssignFile(f, ChangeFileExt(GameSaveName, '.sheet'));
+ Rewrite(f);
+ Write(f, CharSheet);
+ Flush(f);
+ CloseFile(f);
+end;
+
+function TMainForm.CharSheet: String;
+var
+ i: Integer;
+ f: String;
+ procedure Wr(a: String); begin f := f + a; end;
+ procedure WrLn(a: String); overload; begin Wr(a + #13#10); end;
+ procedure WrLn; overload; begin Wr(#13#10); end;
+begin
+ Wr(Get(Traits,'Name'));
+ if GetHostName <> '' then
+ Wr(' [' + GetHostName + ']');
+ WrLn;
+ WrLn(Get(Traits,'Race') + ' ' + Get(Traits,'Class'));
+ WrLn(Format('Level %d (exp. %d/%d)', [GetI(Traits,'Level'), ExpBar.Position, ExpBar.Max]));
+ //WrLn('Level ' + Get(Traits,'Level') + ' (' + ExpBar.Hint + ')');
+ WrLn;
+ with Plots do if Items.Count > 0 then
+ WrLn('Plot stage: ' + Items[Items.Count-1].Caption + ' (' + PlotBar.Hint + ')');
+ with Quests do if Items.Count > 0 then
+ WrLn('Quest: ' + Items[Items.Count-1].Caption + ' (' + QuestBar.Hint + ')');
+ WrLn;
+ WrLn( 'Stats:');
+ WrLn( Format(' STR%7d', [GetI(Stats,'STR')]));
+ WrLn( Format(' CON%7d', [GetI(Stats,'CON')]));
+ WrLn( Format(' DEX%7d', [GetI(Stats,'DEX')]));
+ WrLn( Format(' INT%7d', [GetI(Stats,'INT')]));
+ WrLn( Format(' WIS%7d HP Max%7d', [GetI(Stats,'WIS'), GetI(Stats,'HP Max')]));
+ WrLn( Format(' CHA%7d MP Max%7d', [GetI(Stats,'CHA'), GetI(Stats,'MP Max')]));
+ WrLn;
+ WrLn( 'Equipment:');
+ for i := 1 to Equips.Items.Count-1 do
+ if Get(Equips,i) <> '' then
+ WrLn( ' ' + LeftStr(Equips.Items[i].Caption + ' ', 12) + Get(Equips,i));
+ WrLn;
+ WrLn( 'Spell Book:');
+ with Spells do
+ for i := 1 to Items.Count-1 do
+ WrLn( ' ' + Items[i].Caption + ' ' + Get(Spells,i));
+ WrLn;
+ WrLn( 'Inventory (' + EncumBar.Hint + '):');
+ WrLn( ' ' + Indefinite('gold piece', GetI(Inventory, 'Gold')));
+ with Inventory do
+ for i := 2 to Items.Count-1 do
+ if Pos(' of ', Items[i].Caption) > 0
+ then WrLn( ' ' + Definite(Items[i].Caption, GetI(Inventory,i)))
+ else WrLn( ' ' + Indefinite(Items[i].Caption, GetI(Inventory,i)));
+ WrLn;
+ WrLn( '-- ' + DateTimeToStr(Now));
+ WrLn( '-- Progress Quest 6.2 - http://progressquest.com/');
+ Result := f;
+end;
+
+procedure TMainForm.Task(caption: String; msec: Integer);
+begin
+ Kill.SimpleText := caption + '...';
+ {$IFDEF LOGGING}
+ Log(Kill.SimpleText);
+ {$ENDIF}
+ with TaskBar do begin
+ Position := 0;
+ Max := msec;
+ end;
+end;
+
+procedure TMainForm.Add(list: TListView; key: String; value: Integer);
+var line: String;
+begin
+ Put(list, key, value + GetI(list,key));
+ if value = 0 then Exit;
+
+ if value > 0 then line := 'Gained' else line := 'Lost';
+ if key = 'Gold' then begin
+ key := 'gold piece';
+ if value > 0 then line := 'Got paid' else line := 'Spent';
+ end;
+ if value < 0 then value := -value;
+ line := line + ' ' + Indefinite(key, value);
+ {$IFDEF LOGGING}
+ Log(line);
+ {$ENDIF}
+end;
+
+procedure TMainForm.AddR(list: TListView; key: String; value: Integer);
+begin
+ Put(list, key, IntToRoman(value + RomanToInt(Get(list,key))));
+end;
+
+function TMainForm.Get(list: TListView; key: String): String;
+begin
+ Result := Get(list, IndexOf(list,key));
+end;
+
+function TMainForm.Get(list: TListView; index: Integer): String;
+begin
+ with list.Items.Item[index] do begin
+ if SubItems.Count < 1
+ then Result := ''
+ else Result := SubItems[0];
+ end;
+end;
+
+function TMainForm.GetI(list: TListView; key: String): Integer;
+begin
+ Result := StrToIntDef(Get(list,key),0);
+end;
+
+function TMainForm.GetI(list: TListView; index: Integer): Integer;
+begin
+ Result := StrToIntDef(Get(list,index),0);
+end;
+
+function TMainForm.Sum(list: TListView): Integer;
+var
+ i: Integer;
+begin
+ Result := 0;
+ for i := 0 to list.Items.Count - 1 do
+ Inc(Result, GetI(list,i));
+end;
+
+procedure PutLast(list: TListView; value: String);
+begin
+ if list.Items.Count > 0 then
+ with list.Items.Item[list.Items.Count-1] do begin
+ if SubItems.Count < 1
+ then SubItems.Add(value)
+ else SubItems[0] := value;
+ end;
+ list.Width := list.Width - 1; // trigger an autosize
+end;
+
+procedure TMainForm.LevelUp;
+var
+ i: Integer;
+begin
+ Add(Traits,'Level',1);
+ Add(Stats,'HP Max', GetI(Stats,'CON') div 3 + 1 + Random(4));
+ Add(Stats,'MP Max', GetI(Stats,'INT') div 3 + 1 + Random(4));
+ for i := 1 to 2 do WinStat;
+ WinSpell;
+ with ExpBar do begin
+ Position := 0;
+ Max := LevelUpTime(GetI(Traits,'Level'));
+ end;
+ SaveGame;
+ Brag('l');
+end;
+
+procedure TMainForm.ClearAllSelections;
+begin
+ Equips.ClearSelection;
+ Spells.ClearSelection;
+ Stats.ClearSelection;
+ Traits.ClearSelection;
+ Inventory.ClearSelection;
+ Plots.ClearSelection;
+ Quests.ClearSelection;
+end;
+
+function RoughTime(s: Integer): String;
+begin
+ if s < 120 then Result := IntToStr(s) + ' seconds'
+ else if s < 60 * 120 then Result := IntToStr(s div 60) + ' minutes'
+ else if s < 60 * 60 * 48 then Result := IntToStr(s div 3600) + ' hours'
+ else Result := IntToStr(s div (3600 * 24)) + ' days';
+end;
+
+procedure TMainForm.Timer1Timer(Sender: TObject);
+var
+ gain: Boolean;
+ elapsed: Integer;
+begin
+ gain := Pos('kill|',fTask.Caption) = 1;
+ with TaskBar do begin
+ if Position >= Max then begin
+ ClearAllSelections;
+
+ if Kill.SimpleText = 'Loading....' then Max := 0;
+
+ // gain XP / level up
+ if gain then with ExpBar do if Position >= Max
+ then LevelUp
+ else Position := Position + TaskBar.Max div 1000;
+ with ExpBar do Hint := IntToStr(Max-Position) + ' XP needed for next level';
+
+ // advance quest
+ if gain then if Plots.Items.Count > 1 then with QuestBar do if Position >= Max then begin
+ CompleteQuest;
+ end else if Quests.Items.Count > 0 then begin
+ Position := Position + TaskBar.Max div 1000;
+ Hint := IntToStr(100 * Position div Max) + '% complete';
+ end;
+
+ // advance plot
+ if gain then with PlotBar do if Position >= Max
+ then InterplotCinematic
+ else Position := Position + TaskBar.Max div 1000;
+
+ //Time.Caption := FormatDateTime('h:mm:ss',PlotBar.Position / (24.0 * 60 * 60));
+ PlotBar.Hint := RoughTime(PlotBar.Max-PlotBar.Position) + ' remaining';
+ //PlotBar.Hint := FormatDateTime('h:mm:ss" remaining"',(PlotBar.Max-PlotBar.Position) / (24.0 * 60 * 60));
+
+ Dequeue();
+ end else with TaskBar do begin
+ elapsed := LongInt(timeGetTime) - LongInt(Timer1.Tag);
+ if elapsed > 100 then elapsed := 100;
+ if elapsed < 0 then elapsed := 0;
+ Position := Position + elapsed;
+ end;
+ end;
+ Timer1.Tag := timeGetTime;
+end;
+
+procedure TMainForm.FormCreate(Sender: TObject);
+begin
+ QuestBar.Position := 0;
+ PlotBar.Position := 0;
+ TaskBar.Position := 0;
+ ExpBar.Position := 0;
+ Encumbar.Position := 0;
+
+ FReportSave := true;
+ FLogEvents := false;
+ FMakeBackups := true;
+ FMinToTray := true;
+ FExportSheets := false;
+
+ MakeFileAssociations;
+end;
+
+procedure TMainForm.SpeedButton1Click(Sender: TObject);
+begin
+ {$IFDEF CHEATS}
+ TaskBar.Position := TaskBar.Max;
+ {$ENDIF}
+end;
+
+function TMainForm.RollCharacter: Boolean;
+var
+ f: Integer;
+begin
+ Result := true;
+ repeat
+ if not NewGuyForm.Go then begin
+ Result := false;
+ Exit;
+ end;
+ Put(Traits, 'Name', NewGuyForm.Name.Text);
+ if FileExists(GameSaveName) and
+ (mrNo = MessageDlg('The saved game "' + GameSaveName + '" already exists. Do you want to overwrite it?', mtWarning, [mbYes,mbNo], 0)) then begin
+ // go around again
+ end else begin
+ f := FileCreate(GameSaveName);
+ if f = -1 then begin
+ ShowMessage('The thought police don''t like the name "' + GameSaveName + '". Choose a name without \\ / : * ? " < > or | in it.');
+ end else begin
+ FileClose(f);
+ Break;
+ end;
+ end;
+ until false;
+
+ with NewGuyForm do begin
+ Put(Traits,'Name',Name.Text);
+ Put(Traits,'Race',Race.Items[Race.ItemIndex]);
+ Put(Traits,'Class',Klass.Items[Klass.ItemIndex]);
+ Put(Traits,'Level',1);
+ Put(Stats,'STR',STR.Tag);
+ Put(Stats,'CON',CON.Tag);
+ Put(Stats,'DEX',DEX.Tag);
+ Put(Stats,'INT',INT.Tag);
+ Put(Stats,'WIS',WIS.Tag);
+ Put(Stats,'CHA',CHA.Tag);
+ Put(Stats,'HP Max',Random(8) + CON.Tag div 6);
+ Put(Stats,'MP Max',Random(8) + INT.Tag div 6);
+ Put(Equips,'Weapon','Sharp Stick');
+ Put(Inventory,'Gold',0);
+ InventoryLabelAlsoGameStyle.Tag := 3;//GameStyle.Position;
+ ClearAllSelections;
+ GoButtonClick(NewGuyForm);
+ end;
+end;
+
+const
+ KUsage =
+ 'Usage: pq [flags] [game.pq3]'#10 +
+ #10 +
+ 'Flags:'#10 +
+ ' -no-backup Do not make a backup file when saving the game'#10 +
+ {$IFDEF LOGGING}
+ ' -log Create a text log of events as they occur in the game'#10 +
+ {$ENDIF}
+ ' -no-report-save Do not display the "Game saved" message when saving'#10 +
+ ' -no-tray Do not minimize to the system tray'#10 +
+ ' -export Export a text character sheet periodically'#10 +
+ ' -export-only Export a text character sheet now, then exit'#10 +
+ ' -no-proxy Do not use Internet Explorer proxy settings'#10 +
+ ' -help Display this chatter (and exit)'#10 ;
+
+procedure TMainForm.FormShow(Sender: TObject);
+var
+ done, exportandexit: Boolean;
+ i: Integer;
+begin
+ if Timer1.Enabled then Exit;
+ done := false;
+ exportandexit := false;
+ for i := 1 to ParamCount do begin
+ if ParamStr(i) = '-backup'
+ then FMakeBackups := true
+ {$IFDEF LOGGING}
+ else if ParamStr(i) = '-log'
+ then FLogEvents := true
+ {$ENDIF}
+ else if ParamStr(i) = '-no-report-save'
+ then FReportSave := false
+ else if ParamStr(i) = '-no-tray'
+ then FMinToTray := false
+ else if ParamStr(i) = '-export'
+ then FExportSheets := true
+ else if ParamStr(i) = '-export-only'
+ then exportandexit := true
+ else if ParamStr(i) = '-no-proxy'
+ then ProxyOK := false
+ else if ParamStr(i) = '-help'
+ then begin
+ ShowMessage(KUsage);
+ Close;
+ Exit;
+ end else begin
+ LoadGame(ParamStr(i));
+ if exportandexit then begin
+ ExportCharSheet;
+ Timer1.Enabled := false;
+ Close;
+ end;
+ Exit;
+ end;
+ end;
+ while not Done do begin
+ SetHostName('');
+ SetHostAddr('');
+ SetLogin('');
+ SetPassword('');
+ case FrontForm.ShowModal of
+ mrOk: begin
+ done := RollCharacter;
+ end;
+ mrRetry: begin
+ // load
+ if FrontForm.OpenDialog1.Execute then begin
+ LoadGame(FrontForm.OpenDialog1.Filename);
+ Done := true;
+ end;
+ end;
+ mrYesToAll: begin
+ Done := ServerSelectForm.Go;
+ end;
+ mrCancel: begin
+ Close;
+ Done := true;
+ end;
+ end;
+ end;
+end;
+
+procedure TMainForm.Button1Click(Sender: TObject);
+begin
+ {$IFDEF CHEATS}
+ LevelUp;
+ {$ENDIF}
+end;
+
+procedure TMainForm.CashInClick(Sender: TObject);
+begin
+ {$IFDEF CHEATS}
+ WinEquip;
+ WinItem;
+ WinSpell;
+ WinStat;
+ Add(Inventory,'Gold',Random(100));
+ {$ENDIF}
+end;
+
+procedure TMainForm.FinishQuestClick(Sender: TObject);
+begin
+ {$IFDEF CHEATS}
+ QuestBar.Position := QuestBar.Max;
+ TaskBar.Position := TaskBar.Max;
+ {$ENDIF}
+end;
+
+procedure TMainForm.CheatPlotClick(Sender: TObject);
+begin
+ {$IFDEF CHEATS}
+ PlotBar.Position := PlotBar.Max;
+ TaskBar.Position := TaskBar.Max;
+ {$ENDIF}
+end;
+
+function TMainForm.SaveGame: Boolean;
+var
+ f: TFileStream;
+ m: TMemoryStream;
+ i: Integer;
+begin
+ {$IFDEF LOGGING}
+ Log('Saving game: ' + GameSaveName);
+ {$ENDIF}
+ Result := true;
+ try
+ if FMakeBackups then begin
+ DeleteFile(ChangeFileExt(GameSaveName, '.bak'));
+ MoveFile(PChar(GameSaveName), PChar(ChangeFileExt(GameSaveName, '.bak')));
+ end;
+ f := TFileStream.Create(GameSaveName, fmCreate);
+ except
+ on EfCreateError do begin
+ Result := false;
+ Exit;
+ end;
+ end;
+
+ //ClearAllSelections;
+ m := TMemoryStream.Create;
+ for i := 0 to ComponentCount-1 do
+ m.WriteComponent(Components[i]);
+
+ m.Seek(0, soFromBeginning);
+ ZCompressStream(m, f);
+
+ m.Free;
+ f.Free;
+end;
+
+procedure TMainForm.LoadGame(name: String);
+var
+ f: TStream;
+ m: TStream;
+ i: Integer;
+begin
+ FSaveFileName := name;
+ m := TMemoryStream.Create;
+ f := TFileStream.Create(name, fmOpenRead);
+ try
+ ZDecompressStream(f, m);
+ f.Free;
+ except
+ on EZCompressionError do begin
+ ShowMessage('Error loading game.');
+ Close;
+ Exit;
+ end;
+ end;
+ Traits.Items.Clear;
+ Stats.Items.Clear;
+ Equips.Items.Clear;
+ m.Seek(0, soFromBeginning);
+ for i := 0 to ComponentCount-1 do
+ m.ReadComponent(Components[i]);
+ m.Free;
+ {$IFDEF LOGGING}
+ Log('Loaded game: ' + name);
+ {$ENDIF}
+ StartTimer;
+ TriggerAutosizes;
+end;
+
+procedure TMainForm.TriggerAutosizes;
+begin
+ Plots.Width := 100;
+ Quests.Width := 100;
+ Inventory.Width := 100;
+ Equips.Width := 100;
+ Spells.Width := 100;
+ Traits.Width := 100;
+ Stats.Width := 100;
+end;
+
+procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ if Timer1.Enabled then begin
+ Timer1.Enabled := false;
+ Shell_NotifyIcon(NIM_DELETE, @FTrayIcon);
+ if SaveGame then
+ if FReportSave then
+ ShowMessage('Game saved as ' + GameSaveName);
+ end;
+ FReportSave := true;
+ Action := caFree;
+end;
+
+function TMainForm.GameSaveName: String;
+begin
+ if FSaveFileName = '' then begin
+ FSaveFileName := Get(Traits,'Name');
+ if GetHostName <> '' then
+ FSaveFileName := FSaveFileName + ' [' + GetHostName + ']';
+ FSaveFileName := FSaveFileName + kFileExt;
+ FSaveFileName := ExpandFileName(PChar(FSaveFileName));
+ end;
+ Result := FSaveFileName;
+end;
+
+procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
+ Shift: TShiftState);
+begin
+ if (FindWindow('TAppBuilder', nil) > 0) and (ssCtrl in Shift) and (ssShift in Shift) and (Key = ord('C')) then begin
+ {$IFDEF CHEATS}
+ Cheats.Visible := not Cheats.Visible;
+ {$ENDIF}
+ end;
+ if (ssCtrl in Shift) and (Key = ord('A')) then begin
+ ShowMessage(CharSheet);
+ end;
+ if GetPasskey = 0 then Exit; // no need for these things
+ if (ssCtrl in Shift) and (Key = ord('B')) then begin
+ Brag('b');
+ Navigate(GetHostAddr + 'name=' + UrlEncode(Get(Traits,'Name')));
+ end;
+ if (ssCtrl in Shift) and (Key = ord('M')) then begin
+ SetMotto(InputBox('Progress Quest', 'Declare your motto!', GetMotto));
+ Brag('m');
+ Navigate(GetHostAddr + 'name=' + UrlEncode(Get(Traits,'Name')));
+ end;
+ if (ssCtrl in Shift) and (Key = ord('G')) then begin
+ SetGuild(InputBox('Progress Quest', 'Choose a guild.'#13#13'Make sure you undestand the guild rules before you join one. To learn more about guilds, visit http://progressquest.com/guilds.php', GetGuild));
+ Guildify;
+ end;
+end;
+
+procedure Navigate(url: String);
+begin
+ ShellExecute(GetDesktopWindow(), 'open', PChar(url), nil, '', SW_SHOW);
+end;
+
+function LFSR(pt: String; salt: Integer): Integer;
+var
+ k: Integer;
+begin
+ Result := salt;
+ for k := 1 to Length(pt) do
+ Result := Ord(pt[k])
+ xor (Result shl 1)
+ xor (1 and ((Result shr 31) xor (Result shr 5)));
+ for k := 1 to 10 do
+ Result := (Result shl 1)
+ xor (1 and ((Result shr 31) xor (Result shr 5)));
+end;
+
+
+procedure TMainForm.Brag(trigger: String);
+var
+ url, body: string;
+ best, i: Integer;
+const
+ flat = 1;
+begin
+ if FExportSheets then
+ ExportCharSheet;
+ if GetPasskey = 0 then Exit; // not a online game!
+ url := 'cmd=b&t=' + trigger;
+ with Traits do for i := 0 to Items.Count-1 do
+ url := url + '&' + LowerCase(Items[i].Caption[1]) + '=' + UrlEncode(Items[i].Subitems[0]);
+ url := url + '&x=' + IntToStr(ExpBar.Position);
+ url := url + '&i=' + UrlEncode(Get(Equips,Equips.Tag));
+ if Equips.Tag > 1 then url := url + '+' + Equips.Items[Equips.Tag].Caption;
+ best := 0;
+ if Spells.Items.Count > 0 then with Spells do begin
+ for i := 1 to Items.Count-1 do
+ if (i+flat) * RomanToInt(Get(Spells,i)) >
+ (best+flat) * RomanToInt(Get(Spells,best)) then
+ best := i;
+ url := url + '&z=' + UrlEncode(Items[best].Caption + ' ' + Get(Spells,best));
+ end;
+ best := 0;
+ for i := 1 to 5 do
+ if GetI(Stats,i) > GetI(Stats,best) then best := i;
+ url := url + '&k=' + Stats.Items[best].Caption + '+' + Get(Stats,best);
+ url := url + '&a=' + UrlEncode(Plots.Items[Plots.Items.Count-1].Caption);
+ url := url + '&h=' + UrlEncode(GetHostName);
+ url := url + RevString;
+ url := url + '&p=' + IntToStr(LFSR(url, GetPasskey));
+ url := url + '&m=' + UrlEncode(GetMotto);
+ url := AuthenticateUrl(GetHostAddr + url);
+ try
+ body := DownloadString(url);
+ if (LowerCase(Split(body,0)) = 'report') then
+ ShowMessage(Split(body,1));
+ except
+ on EWebError do begin
+ // 'ats okay.
+ end;
+ end;
+end;
+
+function TMainForm.AuthenticateUrl(url: String): String;
+begin
+ if (GetLogin <> '') or (GetPassword <> '') then
+ Result := StuffString(url, 8, 0, GetLogin+':'+GetPassword+'@')
+ else
+ Result := url;
+end;
+
+procedure TMainForm.Guildify;
+var
+ url, s,b: string;
+ i: Integer;
+begin
+ if GetPasskey = 0 then Exit; // not a online game!
+ url := 'cmd=guild';
+ with Traits do for i := 0 to Items.Count-1 do
+ url := url + '&' + LowerCase(Items[i].Caption[1]) + '=' + UrlEncode(Items[i].Subitems[0]);
+ url := url + '&h=' + UrlEncode(GetHostName);
+ url := url + RevString;
+ url := url + '&guild=' + UrlEncode(GetGuild);
+ url := url + '&p=' + IntToStr(LFSR(url, GetPasskey));
+ url := AuthenticateUrl(GetHostAddr + url);
+ try
+ b := DownloadString(url);
+ s := Take(b);
+ if s <> '' then ShowMessage(s);
+ s := Take(b);
+ if s <> '' then Navigate(s);
+ except
+ on EWebError do begin
+ // 'ats okay.
+ Abort;
+ end;
+ end;
+end;
+
+procedure TMainForm.OnQueryEndSession(var Msg: TMessage);
+var Action: TCloseAction;
+begin
+ FReportSave := false;
+ FormClose(Self, Action);
+ ReplyMessage(-1);
+end;
+
+procedure TMainForm.OnEndSession(var Msg: TMessage);
+var Action: TCloseAction;
+begin
+ Msg.Result := 0;
+ if Msg.wParam <> 0 then begin
+ FReportSave := false;
+ FormClose(Self, Action);
+ end;
+ ReplyMessage(0);
+end;
+
+initialization
+ RegisterClasses([TMainForm]);
+end.
+
+
+
diff --git a/orig/pq/NewGuy.dcu b/orig/pq/NewGuy.dcu
new file mode 100644
index 0000000..8e8ee60
--- /dev/null
+++ b/orig/pq/NewGuy.dcu
Binary files differ
diff --git a/orig/pq/NewGuy.ddp b/orig/pq/NewGuy.ddp
new file mode 100755
index 0000000..cdc0ee8
--- /dev/null
+++ b/orig/pq/NewGuy.ddp
Binary files differ
diff --git a/orig/pq/NewGuy.dfm b/orig/pq/NewGuy.dfm
new file mode 100755
index 0000000..9e28a59
--- /dev/null
+++ b/orig/pq/NewGuy.dfm
@@ -0,0 +1,376 @@
+object NewGuyForm: TNewGuyForm
+ Left = 474
+ Top = 177
+ BorderIcons = []
+ BorderStyle = bsDialog
+ Caption = 'Progress Quest - New Character'
+ ClientHeight = 458
+ ClientWidth = 509
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ Icon.Data = {
+ 0000010001002020000000000000A80800001600000028000000200000004000
+ 0000010008000000000080040000000000000000000000000000000000000000
+ 0000000080000080000000808000800000008000800080800000C0C0C000C0DC
+ C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
+ 220029292900555555004D4D4D004242420039393900807CFF005050FF009300
+ D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
+ CC00003300000033330000336600003399000033CC000033FF00006600000066
+ 330000666600006699000066CC000066FF000099000000993300009966000099
+ 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
+ FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
+ CC003300FF00333300003333330033336600333399003333CC003333FF003366
+ 00003366330033666600336699003366CC003366FF0033990000339933003399
+ 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
+ CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
+ 330066006600660099006600CC006600FF006633000066333300663366006633
+ 99006633CC006633FF00666600006666330066666600666699006666CC006699
+ 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
+ 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
+ CC009999000099339900990099009900CC009900000099333300990066009933
+ CC009900FF00996600009966330099336600996699009966CC009933FF009999
+ 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
+ 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
+ FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
+ 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
+ CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
+ 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
+ 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
+ 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
+ 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
+ FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
+ 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
+ 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
+ D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
+ 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
+ 0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
+ 15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
+ 2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
+ 23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
+ 0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
+ 0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
+ 0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
+ 0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
+ 0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
+ 0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
+ 0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
+ 0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
+ 0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
+ 0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
+ 0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
+ 0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
+ 0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
+ 0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
+ 0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
+ 0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
+ FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
+ FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
+ 003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
+ C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
+ OldCreateOrder = False
+ Position = poScreenCenter
+ OnActivate = FormActivate
+ OnCreate = FormCreate
+ OnShow = FormShow
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Race: TRadioGroup
+ Left = 8
+ Top = 48
+ Width = 185
+ Height = 401
+ Caption = 'Race'
+ Items.Strings = (
+ 'Half Orc'
+ 'Half Man'
+ 'Half Halfling'
+ 'Double Hobbit'
+ 'Gobhobbit'
+ 'Low Elf'
+ 'Dung Elf'
+ 'Talking Pony'
+ 'Gyrognome'
+ 'Lesser Dwarf'
+ 'Crested Dwarf'
+ 'Eel Man'
+ 'Panda Man'
+ 'Trans-Kobold'
+ 'Enchanted Motorcycle'
+ 'Will o'#39' the Wisp'
+ 'Battle-Finch'
+ 'Double Wookiee'
+ 'Skraeling'
+ 'Demicanadian'
+ 'Land Squid')
+ TabOrder = 0
+ end
+ object Klass: TRadioGroup
+ Left = 200
+ Top = 48
+ Width = 185
+ Height = 365
+ Caption = 'Class'
+ Items.Strings = (
+ 'Ur-Paladin'
+ 'Voodoo Princess'
+ 'Robot Monk'
+ 'Mu-Fu Monk'
+ 'Mage Illusioner'
+ 'Shiv-Knight'
+ 'Inner Mason'
+ 'Fighter/Organist'
+ 'Puma Burgular'
+ 'Runeloremaster'
+ 'Hunter Strangler'
+ 'Battle-Felon'
+ 'Tickle-Mimic'
+ 'Slow Poisoner'
+ 'Bastard Lunatic'
+ 'Jungle Clown'
+ 'Birdrider'
+ 'Vermineer')
+ TabOrder = 1
+ end
+ object GroupBox1: TGroupBox
+ Left = 392
+ Top = 48
+ Width = 109
+ Height = 365
+ Caption = 'Stats'
+ TabOrder = 2
+ object Label3: TLabel
+ Left = 22
+ Top = 60
+ Width = 23
+ Height = 13
+ Caption = 'CON'
+ end
+ object Label7: TLabel
+ Left = 22
+ Top = 156
+ Width = 22
+ Height = 13
+ Caption = 'CHA'
+ end
+ object Label6: TLabel
+ Left = 22
+ Top = 132
+ Width = 21
+ Height = 13
+ Caption = 'WIS'
+ end
+ object Label5: TLabel
+ Left = 22
+ Top = 108
+ Width = 18
+ Height = 13
+ Caption = 'INT'
+ end
+ object Label4: TLabel
+ Left = 22
+ Top = 84
+ Width = 22
+ Height = 13
+ Caption = 'DEX'
+ end
+ object Label2: TLabel
+ Left = 22
+ Top = 36
+ Width = 22
+ Height = 13
+ Caption = 'STR'
+ end
+ object Label8: TLabel
+ Left = 22
+ Top = 204
+ Width = 24
+ Height = 13
+ Caption = 'Total'
+ end
+ object CHA: TPanel
+ Left = 52
+ Top = 152
+ Width = 37
+ Height = 21
+ BevelOuter = bvLowered
+ Caption = '18'
+ TabOrder = 0
+ end
+ object WIS: TPanel
+ Left = 52
+ Top = 128
+ Width = 37
+ Height = 21
+ BevelOuter = bvLowered
+ Caption = '18'
+ TabOrder = 1
+ end
+ object INT: TPanel
+ Left = 52
+ Top = 104
+ Width = 37
+ Height = 21
+ BevelOuter = bvLowered
+ Caption = '18'
+ TabOrder = 2
+ end
+ object DEX: TPanel
+ Left = 52
+ Top = 80
+ Width = 37
+ Height = 21
+ BevelOuter = bvLowered
+ Caption = '18'
+ TabOrder = 3
+ end
+ object CON: TPanel
+ Left = 52
+ Top = 56
+ Width = 37
+ Height = 21
+ BevelOuter = bvLowered
+ Caption = '18'
+ TabOrder = 4
+ end
+ object STR: TPanel
+ Left = 52
+ Top = 32
+ Width = 37
+ Height = 21
+ BevelOuter = bvLowered
+ Caption = '18'
+ TabOrder = 5
+ end
+ object Reroll: TButton
+ Left = 18
+ Top = 284
+ Width = 75
+ Height = 25
+ Caption = 'Roll'
+ TabOrder = 6
+ OnClick = RerollClick
+ end
+ object Total: TPanel
+ Left = 52
+ Top = 200
+ Width = 37
+ Height = 21
+ BevelOuter = bvLowered
+ Caption = '18'
+ Color = clWhite
+ TabOrder = 7
+ end
+ object Unroll: TButton
+ Left = 18
+ Top = 316
+ Width = 75
+ Height = 25
+ Caption = 'Unroll'
+ Enabled = False
+ TabOrder = 8
+ OnClick = UnrollClick
+ end
+ end
+ object Sold: TButton
+ Left = 342
+ Top = 424
+ Width = 75
+ Height = 25
+ Caption = 'Sold!'
+ Default = True
+ TabOrder = 3
+ OnClick = SoldClick
+ end
+ object Name: TLabeledEdit
+ Left = 8
+ Top = 20
+ Width = 165
+ Height = 21
+ EditLabel.Width = 28
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Name'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ MaxLength = 30
+ TabOrder = 4
+ end
+ object OldRolls: TListBox
+ Left = 396
+ Top = 228
+ Width = 21
+ Height = 13
+ ItemHeight = 13
+ TabOrder = 5
+ Visible = False
+ end
+ object Button2: TButton
+ Left = 426
+ Top = 424
+ Width = 75
+ Height = 25
+ Caption = 'Cancel'
+ ModalResult = 2
+ TabOrder = 6
+ end
+ object Account: TLabeledEdit
+ Left = 200
+ Top = 20
+ Width = 185
+ Height = 21
+ EditLabel.Width = 40
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Account'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ TabOrder = 7
+ Visible = False
+ end
+ object Password: TLabeledEdit
+ Left = 392
+ Top = 20
+ Width = 109
+ Height = 21
+ EditLabel.Width = 46
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Password'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ PasswordChar = '*'
+ TabOrder = 8
+ Visible = False
+ end
+ object Gen: TButton
+ Left = 176
+ Top = 20
+ Width = 17
+ Height = 22
+ Caption = '?'
+ TabOrder = 9
+ OnClick = GenClick
+ end
+ object PoorCodeDesign: TNMURL
+ Left = 336
+ Top = 268
+ end
+ object ApplicationEvents1: TApplicationEvents
+ OnMinimize = ApplicationEvents1Minimize
+ Left = 332
+ Top = 208
+ end
+end
diff --git a/orig/pq/NewGuy.pas b/orig/pq/NewGuy.pas
new file mode 100755
index 0000000..72ae5c9
--- /dev/null
+++ b/orig/pq/NewGuy.pas
@@ -0,0 +1,267 @@
+unit NewGuy;
+{ copyright (c)2002 Eric Fredricksen all rights reserved }
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, StdCtrls, ExtCtrls, ComCtrls, AppEvnts, NMURL;
+
+type
+ TNewGuyForm = class(TForm)
+ Race: TRadioGroup;
+ Klass: TRadioGroup;
+ Label2: TLabel;
+ STR: TPanel;
+ Label3: TLabel;
+ CON: TPanel;
+ Label4: TLabel;
+ DEX: TPanel;
+ Label5: TLabel;
+ INT: TPanel;
+ Label6: TLabel;
+ WIS: TPanel;
+ Label7: TLabel;
+ CHA: TPanel;
+ Reroll: TButton;
+ GroupBox1: TGroupBox;
+ Label8: TLabel;
+ Total: TPanel;
+ Sold: TButton;
+ Unroll: TButton;
+ Name: TLabeledEdit;
+ OldRolls: TListBox;
+ Button2: TButton;
+ PoorCodeDesign: TNMURL;
+ Account: TLabeledEdit;
+ Password: TLabeledEdit;
+ ApplicationEvents1: TApplicationEvents;
+ Gen: TButton;
+ procedure RerollClick(Sender: TObject);
+ procedure UnrollClick(Sender: TObject);
+ procedure SoldClick(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure ApplicationEvents1Minimize(Sender: TObject);
+ procedure GenClick(Sender: TObject);
+ procedure FormActivate(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ private
+ procedure RollEm;
+ function GetAccount: String;
+ function GetPassword: String;
+ procedure ParseSoldResponse(body: String);
+ public
+ function Go: Boolean;
+ end;
+
+var
+ NewGuyForm: TNewGuyForm;
+
+function UrlEncode(s: string): string;
+function GenerateName: string;
+
+implementation
+
+uses Main, SelServ, StrUtils, Web, Config;
+
+{$R *.dfm}
+
+function UrlEncode(s: string): string;
+begin
+ NewGuyForm.PoorCodeDesign.InputString := s;
+ Result := NewGuyForm.PoorCodeDesign.Encode;
+end;
+
+procedure Roll(stat: TPanel);
+begin
+ stat.Tag := 3 + Random(6) + Random(6) + Random(6);
+ stat.Caption := IntToStr(stat.Tag);
+end;
+
+function Choose(n, k: Integer): Real;
+var
+ d, i: Longint;
+begin
+ Result := n;
+ d := 1;
+ for i := 2 to k do begin
+ Result := Result * (1+n-i);
+ d := d * i;
+ end;
+ Result := Result / d;
+end;
+
+procedure TNewGuyForm.RollEm;
+begin
+ ReRoll.Tag := RandSeed;
+ Roll(STR);
+ Roll(CON);
+ Roll(DEX);
+ Roll(INT);
+ Roll(WIS);
+ Roll(CHA);
+ Total.tag := STR.Tag + Con.Tag + DEX.Tag + Int.Tag + Wis.Tag + CHA.Tag;
+ Total.Caption := IntToStr(Total.Tag);
+ if Total.Tag >= (63+18) then Total.Color := clRed
+ else if Total.Tag > (4 * 18) then Total.Color := clYellow
+ else if Total.Tag <= (63-18) then Total.Color := clGray
+ else if Total.Tag < (3 * 18) then Total.Color := clSilver
+ else Total.Color := clWhite;
+end;
+
+procedure TNewGuyForm.RerollClick(Sender: TObject);
+begin
+ OldRolls.Items.Insert(0, IntToStr(ReRoll.Tag));
+ Unroll.Enabled := true;
+ RollEm;
+end;
+
+function TNewGuyForm.Go: Boolean;
+begin
+ Tag := 1;
+ Result := mrOk = ShowModal;
+end;
+
+procedure TNewGuyForm.FormShow(Sender: TObject);
+begin
+ if Tag > 0 then begin
+ Tag := 0;
+ Caption := 'Progress Quest - New Character';
+ if MainForm.GetHostName <> '' then
+ Caption := Caption + ' [' + MainForm.GetHostName + ']';
+ Randomize;
+ RollEm;
+ with Race do
+ ItemIndex := Random(Items.Count);
+ with Klass do
+ ItemIndex := Random(Items.Count);
+ end;
+end;
+
+procedure TNewGuyForm.UnrollClick(Sender: TObject);
+begin
+ RandSeed := StrToInt(OldRolls.Items[0]);
+ OldRolls.Items.Delete(0);
+ Unroll.Enabled := OldRolls.Items.Count > 0;
+ RollEm;
+end;
+
+procedure TNewGuyForm.ParseSoldResponse(body: String);
+begin
+ if (LowerCase(Split(body,0)) = 'ok') then begin
+ MainForm.SetPasskey(Split(body,1));
+ MainForm.SetLogin(GetAccount);
+ MainForm.SetPassword(GetPassword);
+ ModalResult := mrOk;
+ end else begin
+ ShowMessage(body);
+ end;
+end;
+
+function TNewGuyForm.GetAccount: String;
+begin
+ Result := '';
+ if Account.Visible then Result := Account.Text;
+end;
+
+function TNewGuyForm.GetPassword: String;
+begin
+ Result := '';
+ if Password.Visible then Result := Password.Text;
+end;
+
+procedure TNewGuyForm.SoldClick(Sender: TObject);
+var url, args: String;
+begin
+ if MainForm.GetHostAddr = ''
+ then ModalResult := mrOk
+ else begin
+ try
+ Screen.Cursor := crHourglass;
+ try
+ if (MainForm.Label8.Tag and 16) = 0
+ then url := MainForm.GetHostAddr
+ else url := 'http://www.progressquest.com/create.php?';
+ // url := StringReplace(url, '.com/', '.com/dev/', []);
+ if (GetAccount <> '') or (GetPassword <> '') then
+ url := StuffString(url, 8, 0, GetAccount+':'+GetPassword+'@');
+ args := 'cmd=create' +
+ '&name=' + UrlEncode(Name.Text) +
+ '&realm=' + UrlEncode(MainForm.GetHostName) +
+ RevString;
+ ParseSoldResponse(DownloadString(url + args));
+ except
+ on EWebError do begin
+ ShowMessage('Error connecting to server');
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ end;
+ end;
+end;
+
+{
+procedure TNewGuyForm.ServerAboutToSend(Sender: TObject);
+begin
+ Server.SendHeader.Values['Content-Type'] := 'text/plain';
+ Server.SendHeader.Values['Motto'] := MainForm.GetMotto;
+ Server.SendHeader.Values['Guild'] := MainForm.GetGuild;
+end;
+ }
+
+procedure TNewGuyForm.ApplicationEvents1Minimize(Sender: TObject);
+begin
+ MainForm.MinimizeIt;
+end;
+
+function GenerateName: string;
+const
+ KParts: array [0..2] of string = (
+ 'br|cr|dr|fr|gr|j|kr|l|m|n|pr||||r|sh|tr|v|wh|x|y|z',
+ 'a|a|e|e|i|i|o|o|u|u|ae|ie|oo|ou',
+ 'b|ck|d|g|k|m|n|p|t|v|x|z');
+var
+ i: Integer;
+
+ function Pick(s: string): string;
+ var
+ count, i: Integer;
+ begin
+ count := 1;
+ for i := 0 to Length(s)-1 do
+ if s[i] = '|' then Inc(count);
+ Result := Split(s, Random(count));
+ end;
+begin
+ for i := 0 to 5 do
+ Result := Result + Pick(KParts[i mod 3]);
+ Result := UpperCase(Copy(Result,1,1)) + Copy(Result,2,Length(Result));
+end;
+
+procedure TNewGuyForm.GenClick(Sender: TObject);
+begin
+ Name.Text := GenerateName;
+end;
+
+procedure TNewGuyForm.FormActivate(Sender: TObject);
+begin
+ if Name.Text = '' then begin
+ GenClick(Sender);
+ Name.SetFocus;
+ end;
+end;
+
+procedure TNewGuyForm.FormCreate(Sender: TObject);
+var
+ i: Integer;
+begin
+ Race.Items.Clear;
+ for i := 0 to K.Races.Lines.Count-1 do
+ Race.Items.Add(Split(K.Races.Lines[i],0));
+ Klass.Items.Clear;
+ for i := 0 to K.Klasses.Lines.Count-1 do
+ Klass.Items.Add(Split(K.Klasses.Lines[i],0));
+end;
+
+end.
diff --git a/orig/pq/README b/orig/pq/README
new file mode 100644
index 0000000..7032548
--- /dev/null
+++ b/orig/pq/README
@@ -0,0 +1,39 @@
+ProgressQuest v6.3
+==================
+
+BUILDING
+--------
+
+Requires Delphi 6.
+
+Requires the package in DelphiZLib.zip to be installed in Delphi, or
+decompress the .obj files from there into this, the project, directory.
+
+
+VCS NOTES
+---------
+
+Converted to Mercurial on 1/12/2010 & sent to
+http://bitbucket.org/grumdrig/pq/ ; development will continue from
+there. If at all. Source opened 5/20/11. The world ends tomorrow anyway.
+
+This project represents an ex post facto rendering of pq6 in its
+various versions in version control, so that changes will be trackable
+thataway.
+
+(I didn't add this README file in PQ 6.0, but after that you can use
+this README to trace the checkin history using version control.)
+
+Subversion revsion numbers vs. versions:
+
+* r321 v6.3 as I found it after a couple years of inactivity
+* r320 v6.2 probably as released, though I'm not totally sure
+* r318 v6.2 but probably a slightly older version
+* r317 v6.1
+* r313 v6.0
+
+SEE ALSO
+--------
+
+The in-browser edition: this project, ported to JavaScript/HTML
+https://bitbucket.org/grumdrig/pq-web
diff --git a/orig/pq/SelServ.dcu b/orig/pq/SelServ.dcu
new file mode 100644
index 0000000..8190e1b
--- /dev/null
+++ b/orig/pq/SelServ.dcu
Binary files differ
diff --git a/orig/pq/SelServ.ddp b/orig/pq/SelServ.ddp
new file mode 100644
index 0000000..cdc0ee8
--- /dev/null
+++ b/orig/pq/SelServ.ddp
Binary files differ
diff --git a/orig/pq/SelServ.dfm b/orig/pq/SelServ.dfm
new file mode 100644
index 0000000..46a7bb4
--- /dev/null
+++ b/orig/pq/SelServ.dfm
@@ -0,0 +1,217 @@
+object ServerSelectForm: TServerSelectForm
+ Left = 292
+ Top = 57
+ Width = 490
+ Height = 381
+ Caption = 'Progress Quest - Select Realm'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ Icon.Data = {
+ 0000010001002020000000000000A80800001600000028000000200000004000
+ 0000010008000000000080040000000000000000000000000000000000000000
+ 0000000080000080000000808000800000008000800080800000C0C0C000C0DC
+ C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
+ 220029292900555555004D4D4D004242420039393900807CFF005050FF009300
+ D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
+ CC00003300000033330000336600003399000033CC000033FF00006600000066
+ 330000666600006699000066CC000066FF000099000000993300009966000099
+ 99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
+ FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
+ CC003300FF00333300003333330033336600333399003333CC003333FF003366
+ 00003366330033666600336699003366CC003366FF0033990000339933003399
+ 6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
+ CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
+ 330066006600660099006600CC006600FF006633000066333300663366006633
+ 99006633CC006633FF00666600006666330066666600666699006666CC006699
+ 00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
+ 990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
+ CC009999000099339900990099009900CC009900000099333300990066009933
+ CC009900FF00996600009966330099336600996699009966CC009933FF009999
+ 330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
+ 990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
+ FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
+ 6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
+ CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
+ 0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
+ 6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
+ 3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
+ 9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
+ FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
+ 6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
+ 66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
+ D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
+ 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
+ 150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
+ 0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
+ 15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
+ 2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
+ 23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
+ 0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
+ 0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
+ 0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
+ 0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
+ 0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
+ 0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
+ 0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
+ 0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
+ 0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
+ 0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
+ 0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
+ 0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
+ 0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
+ 0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
+ 0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
+ 0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
+ 0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
+ 0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
+ FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
+ FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
+ 003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
+ C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
+ OldCreateOrder = False
+ Position = poScreenCenter
+ DesignSize = (
+ 482
+ 354)
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Label1: TLabel
+ Left = 8
+ Top = 8
+ Width = 31
+ Height = 13
+ Caption = 'Server'
+ end
+ object Label2: TLabel
+ Left = 172
+ Top = 8
+ Width = 53
+ Height = 13
+ Caption = 'Description'
+ end
+ object Servers: TListBox
+ Left = 8
+ Top = 24
+ Width = 157
+ Height = 277
+ Anchors = [akLeft, akTop, akBottom]
+ ItemHeight = 13
+ TabOrder = 0
+ OnClick = ServersClick
+ OnDblClick = ServersDblClick
+ end
+ object Panel1: TPanel
+ Left = 172
+ Top = 24
+ Width = 302
+ Height = 277
+ Anchors = [akLeft, akTop, akRight, akBottom]
+ BevelOuter = bvLowered
+ BorderWidth = 4
+ Caption = 'Panel1'
+ TabOrder = 1
+ object Desc: TRichEdit
+ Left = 5
+ Top = 5
+ Width = 292
+ Height = 267
+ Align = alClient
+ BevelEdges = []
+ BevelInner = bvNone
+ BevelOuter = bvNone
+ BevelKind = bkTile
+ BorderStyle = bsNone
+ Color = clBtnFace
+ Ctl3D = True
+ ParentCtl3D = False
+ ReadOnly = True
+ TabOrder = 0
+ WantTabs = True
+ WantReturns = False
+ end
+ end
+ object Select: TButton
+ Left = 313
+ Top = 320
+ Width = 75
+ Height = 25
+ Anchors = [akRight, akBottom]
+ Caption = '&Select'
+ Default = True
+ Enabled = False
+ TabOrder = 2
+ OnClick = SelectClick
+ end
+ object Button2: TButton
+ Left = 397
+ Top = 320
+ Width = 75
+ Height = 25
+ Anchors = [akRight, akBottom]
+ Caption = '&Cancel'
+ ModalResult = 2
+ TabOrder = 3
+ end
+ object Descs: TListBox
+ Left = 24
+ Top = 100
+ Width = 121
+ Height = 33
+ ItemHeight = 13
+ TabOrder = 4
+ Visible = False
+ end
+ object Hosts: TListBox
+ Left = 24
+ Top = 144
+ Width = 121
+ Height = 33
+ ItemHeight = 13
+ TabOrder = 5
+ Visible = False
+ end
+ object Options: TListBox
+ Left = 24
+ Top = 56
+ Width = 121
+ Height = 33
+ ItemHeight = 13
+ TabOrder = 6
+ Visible = False
+ end
+ object AccessCode: TLabeledEdit
+ Left = 8
+ Top = 320
+ Width = 157
+ Height = 21
+ Anchors = [akLeft, akBottom]
+ EditLabel.Width = 63
+ EditLabel.Height = 13
+ EditLabel.Caption = 'Access Code'
+ LabelPosition = lpAbove
+ LabelSpacing = 3
+ TabOrder = 7
+ Visible = False
+ OnChange = AccessCodeChange
+ end
+ object Timer1: TTimer
+ Enabled = False
+ Interval = 10
+ OnTimer = Timer1Timer
+ Left = 224
+ Top = 76
+ end
+end
diff --git a/orig/pq/SelServ.pas b/orig/pq/SelServ.pas
new file mode 100644
index 0000000..5871383
--- /dev/null
+++ b/orig/pq/SelServ.pas
@@ -0,0 +1,184 @@
+unit SelServ;
+{ copyright (c)2002 Eric Fredricksen all rights reserved }
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Forms, Dialogs, StdCtrls, ExtCtrls,
+ ComCtrls, Controls, Classes;
+
+type
+ TServerSelectForm = class(TForm)
+ Servers: TListBox;
+ Label1: TLabel;
+ Label2: TLabel;
+ Panel1: TPanel;
+ Desc: TRichEdit;
+ Select: TButton;
+ Button2: TButton;
+ Descs: TListBox;
+ Timer1: TTimer;
+ Hosts: TListBox;
+ Options: TListBox;
+ AccessCode: TLabeledEdit;
+ procedure ServersClick(Sender: TObject);
+ procedure SelectClick(Sender: TObject);
+ procedure AccessCodeChange(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ procedure ServersDblClick(Sender: TObject);
+ private
+ procedure Fetch(path: String);
+ function CurrentOpts: Integer;
+ procedure ParseServerList(body: String);
+ public
+ function Go: Boolean;
+ end;
+
+var
+ ServerSelectForm: TServerSelectForm;
+
+function Take(var s: String): String;
+
+implementation
+
+uses NewGuy, Login, Main, Web;
+
+{$R *.dfm}
+
+function Take(var s: String): String;
+begin
+ if Pos('|',s) > 0 then begin
+ Result := Trim(Copy(s,1,Pos('|',s)-1));
+ s := Copy(s,Pos('|',s)+1,100000);
+ end else begin
+ Result := Trim(s);
+ s := '';
+ end;
+end;
+
+procedure TServerSelectForm.ParseServerList(body: String);
+var
+ s, def: String;
+ ndef: Integer;
+begin
+ s := body;
+ if (LowerCase(Take(s)) = 'ok') then begin
+ def := Take(s);
+ ndef := 0;
+ repeat
+ Servers.Items.Add(Take(s));
+ if Servers.Items[Servers.Count-1] = def then
+ ndef := Servers.Count-1;
+ Options.Items.Add(Take(s));
+ Hosts.Items.Add(Take(s));
+ Descs.Items.Add(Take(s));
+ until s = '';
+ Servers.ItemIndex := ndef;
+ ServersClick(Self);
+ // Select.Enabled := true;
+ end else begin
+ ShowMessage(body);
+ ModalResult := mrCancel;
+ end;
+end;
+
+procedure TServerSelectForm.ServersClick(Sender: TObject);
+begin
+ Desc.Lines.Text := Descs.Items[Servers.ItemIndex];
+ AccessCode.Visible := (CurrentOpts and 8) > 0;
+ AccessCodeChange(Sender);
+end;
+
+function TServerSelectForm.CurrentOpts: Integer;
+begin
+ Result := StrToIntDef(Options.Items[Servers.ItemIndex],0);
+end;
+
+procedure TServerSelectForm.Fetch(path: String);
+var
+ url, reply: String;
+begin
+ Select.Enabled := false;
+ Servers.Items.Clear;
+ Descs.Items.Clear;
+ Options.Items.Clear;
+ Hosts.Items.Clear;
+ Caption := 'Progress Quest - Select Realm';
+ if path <> '' then
+ Caption := Caption + ' [' + path + ']';
+ Desc.Text := 'Fetching realm list from server...';
+ url := 'http://www.progressquest.com/list.php?' + RevString + '&p=' + path;
+ if AccessCode.Visible then
+ url := url + '&ac=' + UrlEncode(AccessCode.Text);
+ try
+ Screen.Cursor := crHourglass;
+ try
+ reply := DownloadString(url);
+ ParseServerList(reply);
+ except
+ on EWebError do begin
+ ShowMessage('Error connecting to Progress Quest server');
+ ModalResult := mrCancel;
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ end;
+end;
+
+function TServerSelectForm.Go: Boolean;
+begin
+ Timer1.Enabled := true;
+ Result := //(Servers.Count > 0) and
+ (mrOk = ShowModal);
+end;
+
+function ServerURL(user, pass, host, uri: String): String;
+begin
+ if Pos(uri, '?') > 0 then uri := uri + '&' else uri := uri + '?';
+ uri := uri + 'rev=3';
+ Result := 'http://' + user + ':' + pass + '@' + host + uri;
+end;
+
+procedure TServerSelectForm.AccessCodeChange(Sender: TObject);
+begin
+ Select.Enabled :=
+ (CurrentOpts and 32 = 0) and
+ (Servers.Count > 0) and (
+ (not AccessCode.Visible) or
+ (AccessCode.Text <> ''));
+end;
+
+procedure TServerSelectForm.SelectClick(Sender: TObject);
+begin
+ // 1: account required to create char
+ // 2: password required to create char
+ // 4: is a dir
+ // 8: password required to select
+ // 16: use progressquest.com for creates!
+ // 32: disable it!
+ if (CurrentOpts and 4) > 0 then begin
+ Fetch(Hosts.Items[Servers.ItemIndex]);
+ end else begin
+ MainForm.SetHostAddr(Hosts.Items[Servers.ItemIndex]);
+ MainForm.SetHostName(Servers.Items[Servers.ItemIndex]);
+ MainForm.Label8.Tag := CurrentOpts;
+ NewGuyForm.Account.Visible := (CurrentOpts and 1) > 0;
+ NewGuyForm.Password.Visible := (CurrentOpts and 2) > 0;
+ if MainForm.RollCharacter then
+ ModalResult := mrOk;
+ end;
+end;
+
+procedure TServerSelectForm.Timer1Timer(Sender: TObject);
+begin
+ Timer1.Enabled := false;
+ Fetch('');
+end;
+
+procedure TServerSelectForm.ServersDblClick(Sender: TObject);
+begin
+ if Select.Enabled then SelectClick(Self);
+end;
+
+end.
diff --git a/orig/pq/Web.dcu b/orig/pq/Web.dcu
new file mode 100644
index 0000000..8bdc515
--- /dev/null
+++ b/orig/pq/Web.dcu
Binary files differ
diff --git a/orig/pq/Web.pas b/orig/pq/Web.pas
new file mode 100644
index 0000000..cf33b39
--- /dev/null
+++ b/orig/pq/Web.pas
@@ -0,0 +1,87 @@
+unit Web;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, WinInet;
+
+type
+ EWebError = class(Exception);
+
+function DownloadString(url: String): String;
+
+var
+ // Change to false to insist on no proxy
+ ProxyOK: Boolean;
+
+implementation
+
+{
+function OpenAuthUrl(net: HInternet; url, username, password: String): HInternet;
+var
+ connection: HInternet;
+begin
+ connection := InternetConnect(net, host, port, nil, nil,
+ INTERNET_SERVICE_HTTP, 0, 0);
+ Result := HttpOpenRequest(Connection, "GET", path,
+ nil, nil, nil,
+ // INTERNET_FLAG_KEEP_CONNECTION or
+ INTERNET_FLAG_RELOAD or
+ INTERNET_FLAG_PRAGMA_NOCACHE or
+ INTERNET_FLAG_NO_UI, 0);
+ InternetSetOption(result, INTERNET_OPTION_USERNAME,
+ PChar(username), len(username));
+ InternetSetOption(result, INTERNET_OPTION_PASSWORD,
+ PChar(password), len(password));
+
+ HttpSendRequest(result, nil, 0, nil, 0);
+ //HttpQueryInfo(Resource, HTTP_QUERY_FLAG_NUMBER |
+ // HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL);
+end;
+ }
+
+function DownloadString(url: string): string;
+var
+ NetHandle: HINTERNET;
+ UrlHandle: HINTERNET;
+ Buffer: array[0..1024] of Char;
+ BytesRead: dWord;
+ conntype: DWORD;
+begin
+ Result := '';
+ conntype := INTERNET_OPEN_TYPE_DIRECT;
+ if proxyok then conntype := INTERNET_OPEN_TYPE_PRECONFIG;
+ NetHandle := InternetOpen('PQ6.2', conntype, nil, nil, 0);
+ if Assigned(NetHandle) then
+ begin {
+ if Len(username + password) > 0 then
+ UrlHandle := OpenAuthUrl(NetHandle, username, password)
+ else }
+ UrlHandle := InternetOpenUrl(NetHandle, PChar(Url),
+ nil, 0, // headers[size]
+ INTERNET_FLAG_KEEP_CONNECTION or
+ INTERNET_FLAG_RELOAD or
+ INTERNET_FLAG_PRAGMA_NOCACHE or
+ INTERNET_FLAG_NO_UI,
+ 0);
+ if Assigned(UrlHandle) then begin
+ repeat
+ InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer)-1, BytesRead);
+ Buffer[BytesRead] := #0;
+ Result := Result + Buffer;
+ until BytesRead = 0;
+ InternetCloseHandle(UrlHandle);
+ end else begin
+ raise EWebError.CreateFmt('Cannot open URL %s', [Url]);
+ end;
+ InternetCloseHandle(NetHandle);
+ end else begin
+ // NetHandle is not valid. Raise an exception
+ raise EWebError.Create('Unable to initialize internet API');
+ end;
+end;
+
+
+initialization
+ ProxyOK := True;
+end.
diff --git a/orig/pq/ZLIBEX.PAS b/orig/pq/ZLIBEX.PAS
new file mode 100644
index 0000000..4e47ea7
--- /dev/null
+++ b/orig/pq/ZLIBEX.PAS
@@ -0,0 +1,777 @@
+{*****************************************************************************
+* ZLibEx.pas *
+* *
+* copyright (c) 2000-2002 base2 technologies *
+* copyright (c) 1997 Borland International *
+* *
+* revision history *
+* 2002.03.15 updated to zlib version 1.1.4 *
+* 2001.11.27 enhanced TZDecompressionStream.Read to adjust source *
+* stream position upon end of compression data *
+* fixed endless loop in TZDecompressionStream.Read when *
+* destination count was greater than uncompressed data *
+* 2001.10.26 renamed unit to integrate "nicely" with delphi 6 *
+* 2000.11.24 added soFromEnd condition to TZDecompressionStream.Seek *
+* added ZCompressStream and ZDecompressStream *
+* 2000.06.13 optimized, fixed, rewrote, and enhanced the zlib.pas unit *
+* included on the delphi cd (zlib version 1.1.3) *
+* *
+* acknowledgements *
+* erik turner Z*Stream routines *
+* david bennion finding the nastly little endless loop quirk with the *
+* TZDecompressionStream.Read method *
+* burak kalayci informing me about the zlib 1.1.4 update *
+*****************************************************************************}
+
+unit ZLibEx;
+
+interface
+
+uses
+ Sysutils, Classes;
+
+const
+ ZLIB_VERSION = '1.1.4';
+
+type
+ TZAlloc = function (opaque: Pointer; items, size: Integer): Pointer;
+ TZFree = procedure (opaque, block: Pointer);
+
+ TZCompressionLevel = (zcNone, zcFastest, zcDefault, zcMax);
+
+ {** TZStreamRec ***********************************************************}
+
+ TZStreamRec = packed record
+ next_in : PChar; // next input byte
+ avail_in : Longint; // number of bytes available at next_in
+ total_in : Longint; // total nb of input bytes read so far
+
+ next_out : PChar; // next output byte should be put here
+ avail_out: Longint; // remaining free space at next_out
+ total_out: Longint; // total nb of bytes output so far
+
+ msg : PChar; // last error message, NULL if no error
+ state : Pointer; // not visible by applications
+
+ zalloc : TZAlloc; // used to allocate the internal state
+ zfree : TZFree; // used to free the internal state
+ opaque : Pointer; // private data object passed to zalloc and zfree
+
+ data_type: Integer; // best guess about the data type: ascii or binary
+ adler : Longint; // adler32 value of the uncompressed data
+ reserved : Longint; // reserved for future use
+ end;
+
+ {** TCustomZStream ********************************************************}
+
+ TCustomZStream = class(TStream)
+ private
+ FStream : TStream;
+ FStreamPos : Integer;
+ FOnProgress: TNotifyEvent;
+
+ FZStream : TZStreamRec;
+ FBuffer : Array [Word] of Char;
+ protected
+ constructor Create(stream: TStream);
+
+ procedure DoProgress; dynamic;
+
+ property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
+ end;
+
+ {** TZCompressionStream ***************************************************}
+
+ TZCompressionStream = class(TCustomZStream)
+ private
+ function GetCompressionRate: Single;
+ public
+ constructor Create(dest: TStream; compressionLevel: TZCompressionLevel = zcDefault);
+ destructor Destroy; override;
+
+ function Read(var buffer; count: Longint): Longint; override;
+ function Write(const buffer; count: Longint): Longint; override;
+ function Seek(offset: Longint; origin: Word): Longint; override;
+
+ property CompressionRate: Single read GetCompressionRate;
+ property OnProgress;
+ end;
+
+ {** TZDecompressionStream *************************************************}
+
+ TZDecompressionStream = class(TCustomZStream)
+ public
+ constructor Create(source: TStream);
+ destructor Destroy; override;
+
+ function Read(var buffer; count: Longint): Longint; override;
+ function Write(const buffer; count: Longint): Longint; override;
+ function Seek(offset: Longint; origin: Word): Longint; override;
+
+ property OnProgress;
+ end;
+
+{** zlib public routines ****************************************************}
+
+{*****************************************************************************
+* ZCompress *
+* *
+* pre-conditions *
+* inBuffer = pointer to uncompressed data *
+* inSize = size of inBuffer (bytes) *
+* outBuffer = pointer (unallocated) *
+* level = compression level *
+* *
+* post-conditions *
+* outBuffer = pointer to compressed data (allocated) *
+* outSize = size of outBuffer (bytes) *
+*****************************************************************************}
+
+procedure ZCompress(const inBuffer: Pointer; inSize: Integer;
+ out outBuffer: Pointer; out outSize: Integer;
+ level: TZCompressionLevel = zcDefault);
+
+{*****************************************************************************
+* ZDecompress *
+* *
+* pre-conditions *
+* inBuffer = pointer to compressed data *
+* inSize = size of inBuffer (bytes) *
+* outBuffer = pointer (unallocated) *
+* outEstimate = estimated size of uncompressed data (bytes) *
+* *
+* post-conditions *
+* outBuffer = pointer to decompressed data (allocated) *
+* outSize = size of outBuffer (bytes) *
+*****************************************************************************}
+
+procedure ZDecompress(const inBuffer: Pointer; inSize: Integer;
+ out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer = 0);
+
+{** string routines *********************************************************}
+
+function ZCompressStr(const s: String; level: TZCompressionLevel = zcDefault): String;
+
+function ZDecompressStr(const s: String): String;
+
+{** stream routines *********************************************************}
+
+procedure ZCompressStream(inStream, outStream: TStream;
+ level: TZCompressionLevel = zcDefault);
+
+procedure ZDecompressStream(inStream, outStream: TStream);
+
+{****************************************************************************}
+
+type
+ EZLibError = class(Exception);
+
+ EZCompressionError = class(EZLibError);
+ EZDecompressionError = class(EZLibError);
+
+implementation
+
+{** link zlib code **********************************************************}
+
+{$L deflate.obj}
+{$L inflate.obj}
+{$L infblock.obj}
+{$L inftrees.obj}
+{$L infcodes.obj}
+{$L infutil.obj}
+{$L inffast.obj}
+{$L trees.obj}
+{$L adler32.obj}
+
+{*****************************************************************************
+* note: do not reorder the above -- doing so will result in external *
+* functions being undefined *
+*****************************************************************************}
+
+const
+ {** flush constants *******************************************************}
+
+ Z_NO_FLUSH = 0;
+ Z_PARTIAL_FLUSH = 1;
+ Z_SYNC_FLUSH = 2;
+ Z_FULL_FLUSH = 3;
+ Z_FINISH = 4;
+
+ {** return codes **********************************************************}
+
+ Z_OK = 0;
+ Z_STREAM_END = 1;
+ Z_NEED_DICT = 2;
+ Z_ERRNO = (-1);
+ Z_STREAM_ERROR = (-2);
+ Z_DATA_ERROR = (-3);
+ Z_MEM_ERROR = (-4);
+ Z_BUF_ERROR = (-5);
+ Z_VERSION_ERROR = (-6);
+
+ {** compression levels ****************************************************}
+
+ Z_NO_COMPRESSION = 0;
+ Z_BEST_SPEED = 1;
+ Z_BEST_COMPRESSION = 9;
+ Z_DEFAULT_COMPRESSION = (-1);
+
+ {** compression strategies ************************************************}
+
+ Z_FILTERED = 1;
+ Z_HUFFMAN_ONLY = 2;
+ Z_DEFAULT_STRATEGY = 0;
+
+ {** data types ************************************************************}
+
+ Z_BINARY = 0;
+ Z_ASCII = 1;
+ Z_UNKNOWN = 2;
+
+ {** compression methods ***************************************************}
+
+ Z_DEFLATED = 8;
+
+ {** return code messages **************************************************}
+
+ _z_errmsg: array[0..9] of PChar = (
+ 'need dictionary', // Z_NEED_DICT (2)
+ 'stream end', // Z_STREAM_END (1)
+ '', // Z_OK (0)
+ 'file error', // Z_ERRNO (-1)
+ 'stream error', // Z_STREAM_ERROR (-2)
+ 'data error', // Z_DATA_ERROR (-3)
+ 'insufficient memory', // Z_MEM_ERROR (-4)
+ 'buffer error', // Z_BUF_ERROR (-5)
+ 'incompatible version', // Z_VERSION_ERROR (-6)
+ ''
+ );
+
+ ZLevels: array [TZCompressionLevel] of Shortint = (
+ Z_NO_COMPRESSION,
+ Z_BEST_SPEED,
+ Z_DEFAULT_COMPRESSION,
+ Z_BEST_COMPRESSION
+ );
+
+ SZInvalid = 'Invalid ZStream operation!';
+
+{** deflate routines ********************************************************}
+
+function deflateInit_(var strm: TZStreamRec; level: Integer; version: PChar;
+ recsize: Integer): Integer; external;
+
+function deflate(var strm: TZStreamRec; flush: Integer): Integer;
+ external;
+
+function deflateEnd(var strm: TZStreamRec): Integer; external;
+
+{** inflate routines ********************************************************}
+
+function inflateInit_(var strm: TZStreamRec; version: PChar;
+ recsize: Integer): Integer; external;
+
+function inflate(var strm: TZStreamRec; flush: Integer): Integer;
+ external;
+
+function inflateEnd(var strm: TZStreamRec): Integer; external;
+
+function inflateReset(var strm: TZStreamRec): Integer; external;
+
+{** zlib function implementations *******************************************}
+
+function zcalloc(opaque: Pointer; items, size: Integer): Pointer;
+begin
+ GetMem(result,items * size);
+end;
+
+procedure zcfree(opaque, block: Pointer);
+begin
+ FreeMem(block);
+end;
+
+{** c function implementations **********************************************}
+
+procedure _memset(p: Pointer; b: Byte; count: Integer); cdecl;
+begin
+ FillChar(p^,count,b);
+end;
+
+procedure _memcpy(dest, source: Pointer; count: Integer); cdecl;
+begin
+ Move(source^,dest^,count);
+end;
+
+{** custom zlib routines ****************************************************}
+
+function DeflateInit(var stream: TZStreamRec; level: Integer): Integer;
+begin
+ result := DeflateInit_(stream,level,ZLIB_VERSION,SizeOf(TZStreamRec));
+end;
+
+// function DeflateInit2(var stream: TZStreamRec; level, method, windowBits,
+// memLevel, strategy: Integer): Integer;
+// begin
+// result := DeflateInit2_(stream,level,method,windowBits,memLevel,
+// strategy,ZLIB_VERSION,SizeOf(TZStreamRec));
+// end;
+
+function InflateInit(var stream: TZStreamRec): Integer;
+begin
+ result := InflateInit_(stream,ZLIB_VERSION,SizeOf(TZStreamRec));
+end;
+
+// function InflateInit2(var stream: TZStreamRec; windowBits: Integer): Integer;
+// begin
+// result := InflateInit2_(stream,windowBits,ZLIB_VERSION,SizeOf(TZStreamRec));
+// end;
+
+{****************************************************************************}
+
+function ZCompressCheck(code: Integer): Integer;
+begin
+ result := code;
+
+ if code < 0 then
+ begin
+ raise EZCompressionError.Create(_z_errmsg[2 - code]);
+ end;
+end;
+
+function ZDecompressCheck(code: Integer): Integer;
+begin
+ Result := code;
+
+ if code < 0 then
+ begin
+ raise EZDecompressionError.Create(_z_errmsg[2 - code]);
+ end;
+end;
+
+procedure ZCompress(const inBuffer: Pointer; inSize: Integer;
+ out outBuffer: Pointer; out outSize: Integer;
+ level: TZCompressionLevel);
+const
+ delta = 256;
+var
+ zstream: TZStreamRec;
+begin
+ FillChar(zstream,SizeOf(TZStreamRec),0);
+
+ outSize := ((inSize + (inSize div 10) + 12) + 255) and not 255;
+ GetMem(outBuffer,outSize);
+
+ try
+ zstream.next_in := inBuffer;
+ zstream.avail_in := inSize;
+ zstream.next_out := outBuffer;
+ zstream.avail_out := outSize;
+
+ ZCompressCheck(DeflateInit(zstream,ZLevels[level]));
+
+ try
+ while ZCompressCheck(deflate(zstream,Z_FINISH)) <> Z_STREAM_END do
+ begin
+ Inc(outSize,delta);
+ ReallocMem(outBuffer,outSize);
+
+ zstream.next_out := PChar(Integer(outBuffer) + zstream.total_out);
+ zstream.avail_out := delta;
+ end;
+ finally
+ ZCompressCheck(deflateEnd(zstream));
+ end;
+
+ ReallocMem(outBuffer,zstream.total_out);
+ outSize := zstream.total_out;
+ except
+ FreeMem(outBuffer);
+ raise;
+ end;
+end;
+
+procedure ZDecompress(const inBuffer: Pointer; inSize: Integer;
+ out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer);
+var
+ zstream: TZStreamRec;
+ delta : Integer;
+begin
+ FillChar(zstream,SizeOf(TZStreamRec),0);
+
+ delta := (inSize + 255) and not 255;
+
+ if outEstimate = 0 then outSize := delta
+ else outSize := outEstimate;
+
+ GetMem(outBuffer,outSize);
+
+ try
+ zstream.next_in := inBuffer;
+ zstream.avail_in := inSize;
+ zstream.next_out := outBuffer;
+ zstream.avail_out := outSize;
+
+ ZDecompressCheck(InflateInit(zstream));
+
+ try
+ while ZDecompressCheck(inflate(zstream,Z_NO_FLUSH)) <> Z_STREAM_END do
+ begin
+ Inc(outSize,delta);
+ ReallocMem(outBuffer,outSize);
+
+ zstream.next_out := PChar(Integer(outBuffer) + zstream.total_out);
+ zstream.avail_out := delta;
+ end;
+ finally
+ ZDecompressCheck(inflateEnd(zstream));
+ end;
+
+ ReallocMem(outBuffer,zstream.total_out);
+ outSize := zstream.total_out;
+ except
+ FreeMem(outBuffer);
+ raise;
+ end;
+end;
+
+{** string routines *********************************************************}
+
+function ZCompressStr(const s: String; level: TZCompressionLevel): String;
+var
+ buffer: Pointer;
+ size : Integer;
+begin
+ ZCompress(PChar(s),Length(s),buffer,size,level);
+
+ SetLength(result,size);
+ Move(buffer^,result[1],size);
+
+ FreeMem(buffer);
+end;
+
+function ZDecompressStr(const s: String): String;
+var
+ buffer: Pointer;
+ size : Integer;
+begin
+ ZDecompress(PChar(s),Length(s),buffer,size);
+
+ SetLength(result,size);
+ Move(buffer^,result[1],size);
+
+ FreeMem(buffer);
+end;
+
+{** stream routines *********************************************************}
+
+procedure ZCompressStream(inStream, outStream: TStream;
+ level: TZCompressionLevel);
+const
+ bufferSize = 32768;
+var
+ zstream : TZStreamRec;
+ zresult : Integer;
+ inBuffer : Array [0..bufferSize-1] of Char;
+ outBuffer: Array [0..bufferSize-1] of Char;
+ inSize : Integer;
+ outSize : Integer;
+begin
+ FillChar(zstream,SizeOf(TZStreamRec),0);
+
+ ZCompressCheck(DeflateInit(zstream,ZLevels[level]));
+
+ inSize := inStream.Read(inBuffer,bufferSize);
+
+ while inSize > 0 do
+ begin
+ zstream.next_in := inBuffer;
+ zstream.avail_in := inSize;
+
+ repeat
+ zstream.next_out := outBuffer;
+ zstream.avail_out := bufferSize;
+
+ ZCompressCheck(deflate(zstream,Z_NO_FLUSH));
+
+ // outSize := zstream.next_out - outBuffer;
+ outSize := bufferSize - zstream.avail_out;
+
+ outStream.Write(outBuffer,outSize);
+ until (zstream.avail_in = 0) and (zstream.avail_out > 0);
+
+ inSize := inStream.Read(inBuffer,bufferSize);
+ end;
+
+ repeat
+ zstream.next_out := outBuffer;
+ zstream.avail_out := bufferSize;
+
+ zresult := ZCompressCheck(deflate(zstream,Z_FINISH));
+
+ // outSize := zstream.next_out - outBuffer;
+ outSize := bufferSize - zstream.avail_out;
+
+ outStream.Write(outBuffer,outSize);
+ until (zresult = Z_STREAM_END) and (zstream.avail_out > 0);
+
+ ZCompressCheck(deflateEnd(zstream));
+end;
+
+procedure ZDecompressStream(inStream, outStream: TStream);
+const
+ bufferSize = 32768;
+var
+ zstream : TZStreamRec;
+ zresult : Integer;
+ inBuffer : Array [0..bufferSize-1] of Char;
+ outBuffer: Array [0..bufferSize-1] of Char;
+ inSize : Integer;
+ outSize : Integer;
+begin
+ FillChar(zstream,SizeOf(TZStreamRec),0);
+
+ ZCompressCheck(InflateInit(zstream));
+
+ inSize := inStream.Read(inBuffer,bufferSize);
+
+ while inSize > 0 do
+ begin
+ zstream.next_in := inBuffer;
+ zstream.avail_in := inSize;
+
+ repeat
+ zstream.next_out := outBuffer;
+ zstream.avail_out := bufferSize;
+
+ ZCompressCheck(inflate(zstream,Z_NO_FLUSH));
+
+ // outSize := zstream.next_out - outBuffer;
+ outSize := bufferSize - zstream.avail_out;
+
+ outStream.Write(outBuffer,outSize);
+ until (zstream.avail_in = 0) and (zstream.avail_out > 0);
+
+ inSize := inStream.Read(inBuffer,bufferSize);
+ end;
+
+ repeat
+ zstream.next_out := outBuffer;
+ zstream.avail_out := bufferSize;
+
+ zresult := ZCompressCheck(inflate(zstream,Z_FINISH));
+
+ // outSize := zstream.next_out - outBuffer;
+ outSize := bufferSize - zstream.avail_out;
+
+ outStream.Write(outBuffer,outSize);
+ until (zresult = Z_STREAM_END) and (zstream.avail_out > 0);
+
+ ZCompressCheck(inflateEnd(zstream));
+end;
+
+{** TCustomZStream **********************************************************}
+
+constructor TCustomZStream.Create(stream: TStream);
+begin
+ inherited Create;
+
+ FStream := stream;
+ FStreamPos := stream.Position;
+end;
+
+procedure TCustomZStream.DoProgress;
+begin
+ if Assigned(FOnProgress) then FOnProgress(Self);
+end;
+
+{** TZCompressionStream *****************************************************}
+
+constructor TZCompressionStream.Create(dest: TStream;
+ compressionLevel: TZCompressionLevel);
+begin
+ inherited Create(dest);
+
+ FZStream.next_out := FBuffer;
+ FZStream.avail_out := SizeOf(FBuffer);
+
+ ZCompressCheck(DeflateInit(FZStream,ZLevels[compressionLevel]));
+end;
+
+destructor TZCompressionStream.Destroy;
+begin
+ FZStream.next_in := Nil;
+ FZStream.avail_in := 0;
+
+ try
+ if FStream.Position <> FStreamPos then FStream.Position := FStreamPos;
+
+ while ZCompressCheck(deflate(FZStream,Z_FINISH)) <> Z_STREAM_END do
+ begin
+ FStream.WriteBuffer(FBuffer,SizeOf(FBuffer) - FZStream.avail_out);
+
+ FZStream.next_out := FBuffer;
+ FZStream.avail_out := SizeOf(FBuffer);
+ end;
+
+ if FZStream.avail_out < SizeOf(FBuffer) then
+ begin
+ FStream.WriteBuffer(FBuffer,SizeOf(FBuffer) - FZStream.avail_out);
+ end;
+ finally
+ deflateEnd(FZStream);
+ end;
+
+ inherited Destroy;
+end;
+
+function TZCompressionStream.Read(var buffer; count: Longint): Longint;
+begin
+ raise EZCompressionError.Create(SZInvalid);
+end;
+
+function TZCompressionStream.Write(const buffer; count: Longint): Longint;
+begin
+ FZStream.next_in := @buffer;
+ FZStream.avail_in := count;
+
+ if FStream.Position <> FStreamPos then FStream.Position := FStreamPos;
+
+ while FZStream.avail_in > 0 do
+ begin
+ ZCompressCheck(deflate(FZStream,Z_NO_FLUSH));
+
+ if FZStream.avail_out = 0 then
+ begin
+ FStream.WriteBuffer(FBuffer,SizeOf(FBuffer));
+
+ FZStream.next_out := FBuffer;
+ FZStream.avail_out := SizeOf(FBuffer);
+
+ FStreamPos := FStream.Position;
+
+ DoProgress;
+ end;
+ end;
+
+ result := Count;
+end;
+
+function TZCompressionStream.Seek(offset: Longint; origin: Word): Longint;
+begin
+ if (offset = 0) and (origin = soFromCurrent) then
+ begin
+ result := FZStream.total_in;
+ end
+ else raise EZCompressionError.Create(SZInvalid);
+end;
+
+function TZCompressionStream.GetCompressionRate: Single;
+begin
+ if FZStream.total_in = 0 then result := 0
+ else result := (1.0 - (FZStream.total_out / FZStream.total_in)) * 100.0;
+end;
+
+{** TZDecompressionStream ***************************************************}
+
+constructor TZDecompressionStream.Create(source: TStream);
+begin
+ inherited Create(source);
+
+ FZStream.next_in := FBuffer;
+ FZStream.avail_in := 0;
+
+ ZDecompressCheck(InflateInit(FZStream));
+end;
+
+destructor TZDecompressionStream.Destroy;
+begin
+ inflateEnd(FZStream);
+
+ inherited Destroy;
+end;
+
+function TZDecompressionStream.Read(var buffer; count: Longint): Longint;
+var
+ zresult: Integer;
+begin
+ FZStream.next_out := @buffer;
+ FZStream.avail_out := count;
+
+ if FStream.Position <> FStreamPos then FStream.Position := FStreamPos;
+
+ zresult := Z_OK;
+
+ while (FZStream.avail_out > 0) and (zresult <> Z_STREAM_END) do
+ begin
+ if FZStream.avail_in = 0 then
+ begin
+ FZStream.avail_in := FStream.Read(FBuffer,SizeOf(FBuffer));
+
+ if FZStream.avail_in = 0 then
+ begin
+ result := count - FZStream.avail_out;
+
+ Exit;
+ end;
+
+ FZStream.next_in := FBuffer;
+ FStreamPos := FStream.Position;
+
+ DoProgress;
+ end;
+
+ zresult := ZDecompressCheck(inflate(FZStream,Z_NO_FLUSH));
+ end;
+
+ if (zresult = Z_STREAM_END) and (FZStream.avail_in > 0) then
+ begin
+ FStream.Position := FStream.Position - FZStream.avail_in;
+ FStreamPos := FStream.Position;
+
+ FZStream.avail_in := 0;
+ end;
+
+ result := count - FZStream.avail_out;
+end;
+
+function TZDecompressionStream.Write(const Buffer; Count: Longint): Longint;
+begin
+ raise EZDecompressionError.Create(SZInvalid);
+end;
+
+function TZDecompressionStream.Seek(Offset: Longint; Origin: Word): Longint;
+var
+ buf: Array [0..8191] of Char;
+ i : Integer;
+begin
+ if (offset = 0) and (origin = soFromBeginning) then
+ begin
+ ZDecompressCheck(inflateReset(FZStream));
+
+ FZStream.next_in := FBuffer;
+ FZStream.avail_in := 0;
+
+ FStream.Position := 0;
+ FStreamPos := 0;
+ end
+ else if ((offset >= 0) and (origin = soFromCurrent)) or
+ (((offset - FZStream.total_out) > 0) and (origin = soFromBeginning)) then
+ begin
+ if origin = soFromBeginning then Dec(offset,FZStream.total_out);
+
+ if offset > 0 then
+ begin
+ for i := 1 to offset div SizeOf(buf) do ReadBuffer(buf,SizeOf(buf));
+ ReadBuffer(buf,offset mod SizeOf(buf));
+ end;
+ end
+ else if (offset = 0) and (origin = soFromEnd) then
+ begin
+ while Read(buf,SizeOf(buf)) > 0 do ;
+ end
+ else raise EZDecompressionError.Create(SZInvalid);
+
+ result := FZStream.total_out;
+end;
+
+end.
diff --git a/orig/pq/ZLIBEX.dcu b/orig/pq/ZLIBEX.dcu
new file mode 100644
index 0000000..89cca29
--- /dev/null
+++ b/orig/pq/ZLIBEX.dcu
Binary files differ
diff --git a/orig/pq/charsheet.txt b/orig/pq/charsheet.txt
new file mode 100644
index 0000000..cf90ad6
--- /dev/null
+++ b/orig/pq/charsheet.txt
@@ -0,0 +1,39 @@
+Chillmitts [Oobag]
+Gyrognome Puma Burgular
+Level 1 (exp. 220/1200)
+
+Plot stage: Act I (5 hours remaining)
+Quest: Deliver this counterpane (83% complete)
+
+Stats:
+ STR 10
+ CON 9
+ DEX 6
+ INT 7
+ WIS 5 HP Max 2
+ CHA 15 MP Max 8
+
+Equipment:
+ Weapon Sharp Stick
+ Shield Pie Plate
+ Helm
+ Hauberk
+ Brassairts -1 Holey Threadbare Chamois
+ Vambraces
+ Gauntlets
+ Cuisses
+ Greaves
+ Sollerets
+
+Spell Book:
+ Hastiness I
+ Big Sister III
+
+Inventory (20/20 cubits):
+ 34 Gold
+ 2 orc snouts
+ a merman trident
+ a Gleaming Bandolier of Grob
+
+-- June 12 2002 10:12:12
+-- Progress Quest 6.2 - http://progressquest.com
diff --git a/orig/pq/crossed_swords_sm.gif b/orig/pq/crossed_swords_sm.gif
new file mode 100644
index 0000000..a5b9d3b
--- /dev/null
+++ b/orig/pq/crossed_swords_sm.gif
Binary files differ
diff --git a/orig/pq/dist/changes.txt b/orig/pq/dist/changes.txt
new file mode 100644
index 0000000..8fbbd7a
--- /dev/null
+++ b/orig/pq/dist/changes.txt
@@ -0,0 +1,22 @@
+New RPG rulebook: N.U.S.S.B.A.H. II (Nerfed yoU Soon Shall Be, And How (2ed))
+ -
+New race: Gobhobbit (replaces Greater Gnome)
+New class: Vermineer (replaces Toungeblade)
+New weapon: Kreen (on par w/ a Broadsword)
+New spells: History Lesson, Shoelaces
+New ordinary quest item: writ
+New fancy item: Vulpeculum
+New monster: the Hogbird (Lvl 3, drops a hogbird curl)
+
+Save extensions: pq3
+Named & titled NPC victims sometimes
+
+
+TODO
+Cinematics between plots
+Cinematics to end / begin quests
+Logging
+Class- and race-based effects?
+More accurate item dropping?
+Skills?
+Options screen? \ No newline at end of file
diff --git a/orig/pq/dist/license.txt b/orig/pq/dist/license.txt
new file mode 100644
index 0000000..b4004ce
--- /dev/null
+++ b/orig/pq/dist/license.txt
@@ -0,0 +1,20 @@
+Progress Quest version 6.2
+Copyright (c) 2003 Eric Fredricksen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/orig/pq/dist/pq.html b/orig/pq/dist/pq.html
new file mode 100644
index 0000000..307cb56
--- /dev/null
+++ b/orig/pq/dist/pq.html
@@ -0,0 +1,129 @@
+<html>
+<body bgcolor=#ffffd0>
+<font color=#404000>
+<h1><font color=#e02000>P</font>rogress <font color=#e02000>Q</font>uest</h1>
+<font color=#404000>
+<a href=http://progressquest.com/>http://progressquest.com/</a>
+
+<h3> Back story </h3>
+
+Since time before time the Vorlak had held the Crosshutch at Thraeskamp.
+The ancient reckoning held that the Five Skrelkampi (and their Truebine) would
+return when the great Trond-feast could be held anew and the Belnap reunited.
+But this legend became lost to all but the Papperboxen at Horbug.
+One of their own was Yallow the Speldrig, who found an unlikely pupil in
+Torbole Understeady, the discarded illigitimate waif of Wainthane Topknox,
+whom Yallow renamed Grumdrig and began to school as a boar-pulmet's apprentice. ...And, as it
+was said by some, in aberdoxy.
+<p>
+As our story opens young Grumdrig has returned to Horbug following a trying stint in
+Spilwaer Spond where his laconic disposition and fertile mind bred a series
+of misadventures which had landed him outside the good graces of the Jordref there,
+Welham, who had secretly begun a long term course of slow but
+disaccomodating illpeel in the lad's morning fanwael.
+Meanwhile, though scarce a tuft of <i>mansefur</i> had yet made its appearance
+on the boy's <i>manssach</i>, a number of visiting Roilwachhs have begun to
+exhibit a discreet
+and seemingly inexplicable interest in the boy. Strange indeed, as he would not reach
+his krouchensterm for another harvest or more.
+And when Grumdrig's resiliant compatriot Paedri
+appears at Grumdrig's lochnotat with a Scrolstamp from the old Speldrig,
+a woozy foreboding feeling rises from his young gut...
+
+<h3> Introduction </h3>
+
+<b>Progress Quest</b> is a next generation computer role-playing game.
+Gamers who have played modern online role-playing games,
+or almost any computer role-playing game,
+or who have at any time installed or upgraded their operating system, will find themselves
+incredibly comfortable with <b>Progress Quest</b>'s very familiar gameplay.
+<b>Progress Quest</b> follows reverently in the footsteps of recent smash hit
+online worlds, but is careful to streamline the more tedious aspects of those
+offerings. Players will still have the satisfaction of building their character
+from a ninety-pound level 1 teenager, to an incredibly puissant, magically imbued warrior,
+well able to snuff out the lives of a barnload of bugbears
+without need of so much as a lunch break. Yet, gone are the tedious micromanagement
+and other frustrations common to that older generation of RPG's.
+
+<h3> User manual </h3>
+
+Even inexperienced gamers will find <b>Progress Quest</b>
+remarkably intutive and simple to play. Start the program
+and click the <code>New Game (Single Player)</code> button,
+or click <code>New Game (Multiplayer)</code> and select a Realm to
+compete against players from all over the world.
+You will then be presented with the character creation screen.
+
+Select a name, race and class for the new character. Then, use the <code>Roll</code> button
+until you are statisfied with the stats
+for your character. <i>Tip: You can use the <code>Unroll</code> button (a feature exclusive to <b>Progress Quest</b>)
+to go back to any previous roll if you find that you've
+clicked too hastily.</i>
+<p>
+If you choose to play an online game, your character will share adventures with other <b>Progress
+Quest</b> characters in an online virtual world. Online play requires
+internet connectivity, though sophisiticated algorithms
+keep the bandwidth usage to a minimum. You can compare your character against
+the top <b>Progress Quest</b> players by visiting
+<a href=http://progressquest.com/realms.php>http://progressquest.com/realms.php</a>
+(or hit &lt;Ctrl&gt;-&lt;B&gt; from within the game).
+<p>
+Finally, hit the <code>Sold!</code> button to begin the game. The game will start immediately and
+you can safely familiarize yourself with the game's single interface screen as the game progresses
+on its own.
+Soon your avatar will will be seeking and destroying an exotic panopoly of beasts while you
+gaze proudly on. Missing, you will notice, is the tedious march from town, the bewildering maze of cookie cutter
+streets hiding some specific merchant or NPC,
+and the repetetive hunt for just the right beast to execute. <b>Progress Quest</b> supplies
+your character with an endless series of victims, as well as exciting quests which keep your quest
+log full to the brim at all times.
+<p>
+TREASURE: Each slain creature yields a trophy, which can be sold in any town.
+When the encumbrance bar reaches maximum, your character automatically returns to the nearest town
+to sell your loot. If sufficiently liquid, he may then purchase an upgrade in equpiment (weapon or armor).
+That being done, the interpid adventurer then returns to the frontier to spill more blood.
+<i>Tip: The amount your character can carry before his encumbrance bar fills up
+increases as his STR stat improves.</i>
+<p>
+QUESTS: When a quest is complete, your character is rewarded with one of:
+a) a special, valuable, treasure item,
+b) an improved weapon or piece of armor,
+c) a boost in stats, or
+d) a new spell for his spellbook. The character is then assigned
+a follow-up quest, which he immediately begins to make progress on.
+<p>
+EXPERIENCE AND LEVELING UP: Experience represents your character's knowledge about the world
+around him, as well as his battle prowess and ability to channel the forces of magical power.
+Your character gains experience by killing monsters and sentient beings,
+over and over again. Once the experience bar is full, your character levels up, and is
+given an automatic boost in several of his stats and a new spell for his spellbook.
+<p>
+DYING: Be warned that your character can be slain by monsters which are tougher than
+he can handle. However, this concept
+has been abstracted out of the game and takes effect simply by somewhat reducing the experience
+accumulated for each successful murder.
+<p>
+SAVING YOUR PROGRESS: Your game is saved whenever you quit, as well as each time your character levels
+up or completes a quest. You can pick up where you left off by restarting <b>Progress Quest</b> and clicking the <code>Load Game</code>
+button. <b>Progress Quest</b> makes a backup of your existing save file each time it saves anew, so
+if your save file becomes corrupted, load the backup, and lament the progress that must now be regained.
+
+<h3> Game controls </h3>
+
+<b>Progress Quest</b> belongs to a new breed of "fire and forget" RPG's. There is no need to interact
+with <b>Progress Quest</b> at all; it will make progress with you or without you.
+<p>
+You can quit <b>Progress Quest</b> by using the window close box, or by hitting &lt;Alt&gt;-&lt;F4&gt;
+(hold down the &lt;Alt&gt; key while hitting &lt;F4&gt;), but there is really little need to ever do so.
+Please note that your character will <i>not</i> make any progress <i>except when <b>Progress Quest</b> is
+running</i>. Your character will make <i>no</i> progress once you quit the program, until you start
+<b>Progress Quest</b> again.
+
+<h3> Keyboard quick reference </h3>
+
+<table border=1 cellspacing=5><th>Key</th><th>Description</tr>
+<tr><td>Alt-F4<td>Exit <b>Progress Quest</b></table>
+
+<p>
+<small>&copy:Copyright 2003
+<a href=mailto:grumdrig@progressquest.com>grumdrig@progressquest.com</a>
diff --git a/orig/pq/dist/pq6-2beta1.zip b/orig/pq/dist/pq6-2beta1.zip
new file mode 100644
index 0000000..9c2b2eb
--- /dev/null
+++ b/orig/pq/dist/pq6-2beta1.zip
Binary files differ
diff --git a/orig/pq/pq.cfg b/orig/pq/pq.cfg
new file mode 100644
index 0000000..9df49a9
--- /dev/null
+++ b/orig/pq/pq.cfg
@@ -0,0 +1,35 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-LE"c:\appl\delphi6\Projects\Bpl"
+-LN"c:\appl\delphi6\Projects\Bpl"
diff --git a/orig/pq/pq.dof b/orig/pq/pq.dof
new file mode 100644
index 0000000..eaa0c05
--- /dev/null
+++ b/orig/pq/pq.dof
@@ -0,0 +1,87 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=vcl;rtl;vclx;vclshlctrls;visualclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;nmfast;indy;VclSmp;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualdbclx;dbexpress;dbxcds;dclOffice2k;inetdb
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=6
+MinorVer=2
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Grumdrig
+FileDescription=
+FileVersion=6.2.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=pq.exe
+ProductName=Progress Quest
+ProductVersion=6.2
+Comments=
diff --git a/orig/pq/pq.dpr b/orig/pq/pq.dpr
new file mode 100644
index 0000000..249c073
--- /dev/null
+++ b/orig/pq/pq.dpr
@@ -0,0 +1,25 @@
+program pq;
+
+uses
+ Forms,
+ Config in 'Config.pas' {K},
+ Front in 'Front.pas' {FrontForm},
+ Main in 'Main.pas' {MainForm},
+ NewGuy in 'NewGuy.pas' {NewGuyForm},
+ SelServ in 'SelServ.pas' {ServerSelectForm},
+ Web in 'Web.pas';
+
+{$E exe}
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.Title := 'Progress Quest';
+ Application.CreateForm(TMainForm, MainForm);
+ Application.CreateForm(TK, K);
+ Application.CreateForm(TFrontForm, FrontForm);
+ Application.CreateForm(TNewGuyForm, NewGuyForm);
+ Application.CreateForm(TServerSelectForm, ServerSelectForm);
+ Application.Run;
+end.
diff --git a/orig/pq/pq.exe b/orig/pq/pq.exe
new file mode 100755
index 0000000..82360a3
--- /dev/null
+++ b/orig/pq/pq.exe
Binary files differ
diff --git a/orig/pq/pq.res b/orig/pq/pq.res
new file mode 100644
index 0000000..0ff3632
--- /dev/null
+++ b/orig/pq/pq.res
Binary files differ
diff --git a/orig/pq/saves/Avtrep.pq3 b/orig/pq/saves/Avtrep.pq3
new file mode 100644
index 0000000..d3a2016
--- /dev/null
+++ b/orig/pq/saves/Avtrep.pq3
Binary files differ
diff --git a/orig/pq/saves/Chillmitts [Oobag].log b/orig/pq/saves/Chillmitts [Oobag].log
new file mode 100644
index 0000000..a596a38
--- /dev/null
+++ b/orig/pq/saves/Chillmitts [Oobag].log
@@ -0,0 +1,9 @@
+[2003-04-12 11:34:34] Gained a swamp elf lilypad
+[2003-04-12 11:34:34] Executing a fetal Anhkheg...
+[2003-04-12 11:37:14] Loaded game: C:\proj\pq6.2\Chillmitts [Oobag].pq
+[2003-04-12 11:37:15] Saving game: C:\proj\pq6.2\Chillmitts [Oobag].pq
+[2003-04-12 11:51:16] Loaded game: C:\proj\pq6.2\Chillmitts [Oobag].pq
+[2003-04-12 11:51:30] Gained an anhkheg chitin
+[2003-04-12 11:51:30] Executing a fetal Anhkheg...
+[2003-04-12 11:51:36] Gained an anhkheg chitin
+[2003-04-12 11:51:36] Executing a fetal Anhkheg...
diff --git a/orig/pq/saves/Chillmitts [Oobag].pq b/orig/pq/saves/Chillmitts [Oobag].pq
new file mode 100644
index 0000000..410ab03
--- /dev/null
+++ b/orig/pq/saves/Chillmitts [Oobag].pq
Binary files differ
diff --git a/orig/pq/saves/Chillmitts [Oobag].sheet b/orig/pq/saves/Chillmitts [Oobag].sheet
new file mode 100644
index 0000000..dab3337
--- /dev/null
+++ b/orig/pq/saves/Chillmitts [Oobag].sheet
@@ -0,0 +1,45 @@
+Chillmitts [Oobag]
+Gyrognome Puma Burgular
+Level 2 (exp. 345/1279)
+
+Plot stage: Act I (5 hours remaining)
+Quest: Exterminate the Gargoyles (40% complete)
+
+Stats:
+ STR 11
+ CON 10
+ DEX 6
+ INT 8
+ WIS 5 HP Max 9
+ CHA 16 MP Max 11
+
+Equipment:
+ Shield Pie Plate
+ Helm -2 Holey Threadbare Chamois
+ Hauberk -2 Burlap
+ Vambraces Macrame
+ Gauntlets Mildewed Motheaten Chamois
+ Gambeson Macrame
+ Greaves -4 Faded Chamois
+
+Spell Book:
+ Slime Finger II
+ Sadness I
+ Seasick I
+
+Inventory (19/21 cubits):
+ 89 gold pieces
+ a peryton antler
+ a lizard man tail
+ a pirate booty
+ a gray ooze gravy
+ a hobgoblin patella
+ a violet fungi spore
+ 2 billy goat beards
+ an eel sashimi
+ 6 yellow mold spores
+ 2 nixie webbings
+ the Fearsome Laurel of Prurience
+
+-- 4/12/2003 1:19:29 PM
+-- Progress Quest 6.2 - http://progressquest.com/
diff --git a/orig/pq/saves/Cokie [Oobag].log b/orig/pq/saves/Cokie [Oobag].log
new file mode 100644
index 0000000..f864dfa
--- /dev/null
+++ b/orig/pq/saves/Cokie [Oobag].log
@@ -0,0 +1,266 @@
+[2003-04-12 11:41:57] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:42:02] Gained a manes tooth
+[2003-04-12 11:42:02] Executing a Manes...
+[2003-04-12 11:42:09] Gained a manes tooth
+[2003-04-12 11:42:09] Executing a Battle-Manes...
+[2003-04-12 11:42:22] Quest completed: Deliver this bucket
+[2003-04-12 11:42:22] Commencing quest: Placate the Boogies
+[2003-04-12 11:42:22] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:42:22] Gained a manes tooth
+[2003-04-12 11:42:22] Executing a Nixie...
+[2003-04-12 11:42:28] Gained a nixie webbing
+[2003-04-12 11:42:28] Executing a Goblin...
+[2003-04-12 11:42:34] Gained a goblin ear
+[2003-04-12 11:42:34] Heading to market to sell loot...
+[2003-04-12 11:42:38] Selling a gnoll collar...
+[2003-04-12 11:42:40] Got paid a gold piece
+[2003-04-12 11:42:40] Selling a pirate booty...
+[2003-04-12 11:42:41] Got paid a gold piece
+[2003-04-12 11:42:41] Selling a quasit tail...
+[2003-04-12 11:42:42] Got paid a gold piece
+[2003-04-12 11:42:42] Selling a girl scout cookie...
+[2003-04-12 11:42:43] Got paid a gold piece
+[2003-04-12 11:42:43] Selling a multicell dendrite...
+[2003-04-12 11:42:44] Got paid a gold piece
+[2003-04-12 11:42:44] Selling a nebbish belly...
+[2003-04-12 11:42:46] Got paid a gold piece
+[2003-04-12 11:42:46] Selling a troglodyte tail...
+[2003-04-12 11:42:47] Got paid a gold piece
+[2003-04-12 11:42:47] Selling a merman trident...
+[2003-04-12 11:42:48] Got paid a gold piece
+[2003-04-12 11:42:48] Selling a yellow mold spore...
+[2003-04-12 11:42:49] Got paid a gold piece
+[2003-04-12 11:42:49] Selling a hippogriff egg...
+[2003-04-12 11:42:50] Got paid a gold piece
+[2003-04-12 11:42:50] Selling a koala heart...
+[2003-04-12 11:42:52] Got paid a gold piece
+[2003-04-12 11:42:52] Selling 7 manes tooths...
+[2003-04-12 11:42:53] Got paid 7 gold pieces
+[2003-04-12 11:42:53] Selling a nixie webbing...
+[2003-04-12 11:42:54] Got paid a gold piece
+[2003-04-12 11:42:54] Selling a goblin ear...
+[2003-04-12 11:42:55] Got paid a gold piece
+[2003-04-12 11:42:55] Heading to the killing fields...
+[2003-04-12 11:42:59] Executing an undernourished Triton...
+[2003-04-12 11:43:12] Gained a triton scale
+[2003-04-12 11:43:12] Executing a passing Battle-Finch Hunter Strangler...
+[2003-04-12 11:43:24] Gained a Fearsome Sceptre of Loyalty
+[2003-04-12 11:43:24] Executing an Uruk...
+[2003-04-12 11:43:36] Gained an uruk boot
+[2003-04-12 11:43:36] Executing a Battle-Dwarf...
+[2003-04-12 11:43:49] Gained a dwarf drawers
+[2003-04-12 11:43:49] Executing a Pixie...
+[2003-04-12 11:43:55] Gained a pixie dust
+[2003-04-12 11:43:55] Executing a Nebbish...
+[2003-04-12 11:44:01] Gained a nebbish belly
+[2003-04-12 11:44:01] Executing a Battle-Beagle...
+[2003-04-12 11:44:07] Gained a beagle collar
+[2003-04-12 11:44:07] Executing a Manes...
+[2003-04-12 11:44:13] Gained a manes tooth
+[2003-04-12 11:44:13] Executing a Sea Elf...
+[2003-04-12 11:44:20] Gained a Level
+[2003-04-12 11:44:20] Gained 7 HP Maxes
+[2003-04-12 11:44:20] Gained 8 MP Maxes
+[2003-04-12 11:44:20] Gained a STR
+[2003-04-12 11:44:20] Gained a STR
+[2003-04-12 11:44:20] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:44:22] Gained a sea elf jerkin
+[2003-04-12 11:44:22] Executing a crippled preadolescent Umber Hulk...
+[2003-04-12 11:44:28] Gained an umber hulk claw
+[2003-04-12 11:44:28] Executing a cursed Orc...
+[2003-04-12 11:44:37] Quest completed: Placate the Boogies
+[2003-04-12 11:44:37] Commencing quest: Placate the Nymphs
+[2003-04-12 11:44:37] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:44:37] Gained an orc snout
+[2003-04-12 11:44:37] Executing a Wolf...
+[2003-04-12 11:44:43] Gained a wolf paw
+[2003-04-12 11:44:43] Executing a greater Nixie...
+[2003-04-12 11:44:50] Gained a nixie webbing
+[2003-04-12 11:44:50] Executing a Grid Bug...
+[2003-04-12 11:44:53] Gained a grid bug carapace
+[2003-04-12 11:44:53] Executing a Troglodyte...
+[2003-04-12 11:44:59] Gained a troglodyte tail
+[2003-04-12 11:44:59] Executing an Uruk...
+[2003-04-12 11:45:06] Gained an uruk boot
+[2003-04-12 11:45:06] Executing an underage Piercer...
+[2003-04-12 11:45:12] Gained a piercer tip
+[2003-04-12 11:45:12] Executing a Brown Elf...
+[2003-04-12 11:45:15] Gained a brown elf tusk
+[2003-04-12 11:45:15] Executing a greater Swamp Elf...
+[2003-04-12 11:45:21] Gained a swamp elf lilypad
+[2003-04-12 11:45:21] Executing a crippled Medusa...
+[2003-04-12 11:45:31] Gained a medusa eye
+[2003-04-12 11:45:31] Executing an undernourished Nymph...
+[2003-04-12 11:45:38] Gained a nymph hanky
+[2003-04-12 11:45:38] Executing a Stun Worm...
+[2003-04-12 11:45:44] Gained a stun worm trode
+[2003-04-12 11:45:44] Heading to market to sell loot...
+[2003-04-12 11:45:48] Selling a triton scale...
+[2003-04-12 11:45:49] Got paid 2 gold pieces
+[2003-04-12 11:45:49] Selling a Fearsome Sceptre of Loyalty...
+[2003-04-12 11:45:50] Got paid 2 gold pieces
+[2003-04-12 11:45:50] Selling 2 uruk boots...
+[2003-04-12 11:45:52] Got paid 4 gold pieces
+[2003-04-12 11:45:52] Selling a dwarf drawers...
+[2003-04-12 11:45:53] Got paid 2 gold pieces
+[2003-04-12 11:45:53] Selling a pixie dust...
+[2003-04-12 11:45:54] Got paid 2 gold pieces
+[2003-04-12 11:45:54] Selling a nebbish belly...
+[2003-04-12 11:45:55] Got paid 2 gold pieces
+[2003-04-12 11:45:55] Selling a beagle collar...
+[2003-04-12 11:45:57] Got paid 2 gold pieces
+[2003-04-12 11:45:57] Selling a manes tooth...
+[2003-04-12 11:45:58] Got paid 2 gold pieces
+[2003-04-12 11:45:58] Selling a sea elf jerkin...
+[2003-04-12 11:45:59] Got paid 2 gold pieces
+[2003-04-12 11:45:59] Selling an umber hulk claw...
+[2003-04-12 11:46:00] Got paid 2 gold pieces
+[2003-04-12 11:46:00] Selling an orc snout...
+[2003-04-12 11:46:01] Got paid 2 gold pieces
+[2003-04-12 11:46:01] Selling a wolf paw...
+[2003-04-12 11:46:03] Got paid 2 gold pieces
+[2003-04-12 11:46:03] Selling a nixie webbing...
+[2003-04-12 11:46:04] Got paid 2 gold pieces
+[2003-04-12 11:46:04] Selling a grid bug carapace...
+[2003-04-12 11:46:05] Got paid 2 gold pieces
+[2003-04-12 11:46:05] Selling a troglodyte tail...
+[2003-04-12 11:46:06] Got paid 2 gold pieces
+[2003-04-12 11:46:06] Selling a piercer tip...
+[2003-04-12 11:46:07] Got paid 2 gold pieces
+[2003-04-12 11:46:07] Selling a brown elf tusk...
+[2003-04-12 11:46:09] Got paid 2 gold pieces
+[2003-04-12 11:46:09] Selling a swamp elf lilypad...
+[2003-04-12 11:46:10] Got paid 2 gold pieces
+[2003-04-12 11:46:10] Selling a medusa eye...
+[2003-04-12 11:46:11] Got paid 2 gold pieces
+[2003-04-12 11:46:11] Selling a nymph hanky...
+[2003-04-12 11:46:12] Got paid 2 gold pieces
+[2003-04-12 11:46:12] Selling a stun worm trode...
+[2003-04-12 11:46:13] Got paid 2 gold pieces
+[2003-04-12 11:46:13] Negotiating purchase of better equipment...
+[2003-04-12 11:46:19] Spent 60 gold pieces
+[2003-04-12 11:46:19] Heading to the killing fields...
+[2003-04-12 11:46:23] Executing a greater Rot Grub...
+[2003-04-12 11:46:29] Gained a rot grub eggsac
+[2003-04-12 11:46:29] Executing a sick Quasit...
+[2003-04-12 11:46:32] Gained a quasit tail
+[2003-04-12 11:46:33] Executing an underage Sea Hag...
+[2003-04-12 11:46:39] Gained a sea hag wart
+[2003-04-12 11:46:39] Executing a greater Bunny...
+[2003-04-12 11:46:42] Gained a bunny ear
+[2003-04-12 11:46:42] Executing a greater Uruk...
+[2003-04-12 11:46:51] Gained an uruk boot
+[2003-04-12 11:46:51] Executing a comatose Catoblepas...
+[2003-04-12 11:46:58] Gained a catoblepas neck
+[2003-04-12 11:46:58] Executing a Piercer...
+[2003-04-12 11:47:07] Gained a piercer tip
+[2003-04-12 11:47:07] Executing a greater Wolf...
+[2003-04-12 11:47:17] Quest completed: Placate the Nymphs
+[2003-04-12 11:47:17] Gained an INT
+[2003-04-12 11:47:17] Commencing quest: Deliver this trinket
+[2003-04-12 11:47:17] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:47:17] Gained a wolf paw
+[2003-04-12 11:47:17] Executing a Cub Scout...
+[2003-04-12 11:47:20] Gained a cub scout neckercheif
+[2003-04-12 11:47:20] Executing a Sylph...
+[2003-04-12 11:47:29] Gained a sylph thigh
+[2003-04-12 11:47:29] Executing a Bat...
+[2003-04-12 11:47:32] Gained a bat wing
+[2003-04-12 11:47:32] Executing an underage Homonculus...
+[2003-04-12 11:47:36] Gained a homonculus fluid
+[2003-04-12 11:47:36] Executing a Gnoll...
+[2003-04-12 11:47:42] Gained a gnoll collar
+[2003-04-12 11:47:42] Executing an Eel...
+[2003-04-12 11:47:48] Gained an eel sashimi
+[2003-04-12 11:47:48] Executing a Girl Scout...
+[2003-04-12 11:47:54] Gained a girl scout cookie
+[2003-04-12 11:47:54] Executing a greater Merman...
+[2003-04-12 11:48:01] Gained a merman trident
+[2003-04-12 11:48:01] Executing a Battle-Orc...
+[2003-04-12 11:48:07] Gained an orc snout
+[2003-04-12 11:48:07] Executing a Yellow Mold...
+[2003-04-12 11:48:10] Gained a yellow mold spore
+[2003-04-12 11:48:10] Executing a cursed Goblin...
+[2003-04-12 11:48:19] Gained a goblin ear
+[2003-04-12 11:48:19] Executing a Piercer...
+[2003-04-12 11:48:29] Gained a piercer tip
+[2003-04-12 11:48:29] Executing a Jumpskin...
+[2003-04-12 11:48:38] Gained a jumpskin shin
+[2003-04-12 11:48:38] Executing a greater Grid Bug...
+[2003-04-12 11:48:44] Gained a grid bug carapace
+[2003-04-12 11:48:44] Heading to market to sell loot...
+[2003-04-12 11:48:48] Selling a rot grub eggsac...
+[2003-04-12 11:48:50] Got paid 2 gold pieces
+[2003-04-12 11:48:50] Selling a quasit tail...
+[2003-04-12 11:48:51] Got paid 2 gold pieces
+[2003-04-12 11:48:51] Selling a sea hag wart...
+[2003-04-12 11:48:52] Got paid 2 gold pieces
+[2003-04-12 11:48:52] Selling a bunny ear...
+[2003-04-12 11:48:53] Got paid 2 gold pieces
+[2003-04-12 11:48:53] Selling an uruk boot...
+[2003-04-12 11:48:54] Got paid 2 gold pieces
+[2003-04-12 11:48:54] Selling a catoblepas neck...
+[2003-04-12 11:48:56] Got paid 2 gold pieces
+[2003-04-12 11:48:56] Selling 2 piercer tips...
+[2003-04-12 11:48:57] Got paid 4 gold pieces
+[2003-04-12 11:48:57] Selling a wolf paw...
+[2003-04-12 11:48:58] Got paid 2 gold pieces
+[2003-04-12 11:48:58] Selling a cub scout neckercheif...
+[2003-04-12 11:48:59] Got paid 2 gold pieces
+[2003-04-12 11:48:59] Selling a sylph thigh...
+[2003-04-12 11:49:00] Got paid 2 gold pieces
+[2003-04-12 11:49:00] Selling a bat wing...
+[2003-04-12 11:49:02] Got paid 2 gold pieces
+[2003-04-12 11:49:02] Selling a homonculus fluid...
+[2003-04-12 11:49:03] Got paid 2 gold pieces
+[2003-04-12 11:49:03] Selling a gnoll collar...
+[2003-04-12 11:49:04] Got paid 2 gold pieces
+[2003-04-12 11:49:04] Selling an eel sashimi...
+[2003-04-12 11:49:05] Got paid 2 gold pieces
+[2003-04-12 11:49:05] Selling a girl scout cookie...
+[2003-04-12 11:49:06] Got paid 2 gold pieces
+[2003-04-12 11:49:06] Selling a merman trident...
+[2003-04-12 11:49:08] Got paid 2 gold pieces
+[2003-04-12 11:49:08] Selling an orc snout...
+[2003-04-12 11:49:09] Got paid 2 gold pieces
+[2003-04-12 11:49:09] Selling a yellow mold spore...
+[2003-04-12 11:49:10] Got paid 2 gold pieces
+[2003-04-12 11:49:10] Selling a goblin ear...
+[2003-04-12 11:49:11] Got paid 2 gold pieces
+[2003-04-12 11:49:11] Selling a jumpskin shin...
+[2003-04-12 11:49:12] Got paid 2 gold pieces
+[2003-04-12 11:49:12] Selling a grid bug carapace...
+[2003-04-12 11:49:14] Got paid 2 gold pieces
+[2003-04-12 11:49:14] Heading to the killing fields...
+[2003-04-12 11:49:18] Executing a greater Leprechaun...
+[2003-04-12 11:49:24] Gained a leprechaun wallet
+[2003-04-12 11:49:24] Executing a cursed Crayfish...
+[2003-04-12 11:49:30] Gained a crayfish antenna
+[2003-04-12 11:49:30] Executing an Iron Peasant...
+[2003-04-12 11:49:40] Gained an iron peasant chaff
+[2003-04-12 11:49:40] Executing an undernourished Green Slime...
+[2003-04-12 11:49:43] Gained a green slime sample
+[2003-04-12 11:49:43] Executing an Uruk...
+[2003-04-12 11:49:49] Gained an uruk boot
+[2003-04-12 11:49:49] Executing an underage Violet Fungi...
+[2003-04-12 11:49:55] Gained a violet fungi spore
+[2003-04-12 11:49:55] Executing a Camel...
+[2003-04-12 11:50:01] Gained a camel hump
+[2003-04-12 11:50:01] Executing a greater Rat...
+[2003-04-12 11:50:23] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:50:23] Gained a wolf paw
+[2003-04-12 11:50:23] Executing a Yellow Mold...
+[2003-04-12 11:50:27] Gained a yellow mold spore
+[2003-04-12 11:50:27] Executing a massive Nixie...
+[2003-04-12 11:50:30] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:52:42] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:53:40] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
+[2003-04-12 11:53:46] Gained a nixie webbing
+[2003-04-12 11:53:46] Executing a Yellow Mold...
+[2003-04-12 11:53:49] Gained a yellow mold spore
+[2003-04-12 11:53:49] Executing a massive Nixie...
+[2003-04-12 11:53:59] Gained a nixie webbing
+[2003-04-12 11:53:59] Executing a Goblin...
+[2003-04-12 11:54:02] Gained a goblin ear
+[2003-04-12 11:54:02] Executing a Battle-Leprechaun...
+[2003-04-12 11:54:06] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
diff --git a/orig/pq/saves/Cokie [Oobag].pq b/orig/pq/saves/Cokie [Oobag].pq
new file mode 100644
index 0000000..d734a72
--- /dev/null
+++ b/orig/pq/saves/Cokie [Oobag].pq
Binary files differ
diff --git a/orig/pq/saves/Cokie [Oobag].sheet b/orig/pq/saves/Cokie [Oobag].sheet
new file mode 100644
index 0000000..5461425
--- /dev/null
+++ b/orig/pq/saves/Cokie [Oobag].sheet
@@ -0,0 +1,37 @@
+Cookie [Oobag]
+Half Halfling Puma Burgular
+Level 3 (exp. 44/1291)
+
+Plot stage: Act I (5 hours remaining)
+Quest: Exterminate the Unicorns (93% complete)
+
+Stats:
+ STR 12
+ CON 9
+ DEX 6
+ INT 14
+ WIS 13 HP Max 19
+ CHA 11 MP Max 19
+
+Equipment:
+ Shield +1 Pie Plate
+ Helm Macrame
+ Hauberk -1 Canvas
+ Brassairts Mildewed Rusty Pleathers
+ Vambraces Cracked Patched Pleathers
+ Gauntlets Lace
+ Gambeson Lace
+ Greaves -1 Macrame
+ Sollerets -1 Burlap
+
+Spell Book:
+ Hastiness III
+ Slime Finger III
+ Sadness I
+ Rabbit Punch I
+
+Inventory (1/22 cubits):
+ 6 gold pieces
+
+-- 9/5/2003 12:22:01 AM
+-- Progress Quest 6.2 - http://progressquest.com/
diff --git a/orig/pq/saves/Frogrox [Oobag].pq b/orig/pq/saves/Frogrox [Oobag].pq
new file mode 100644
index 0000000..b5411e5
--- /dev/null
+++ b/orig/pq/saves/Frogrox [Oobag].pq
Binary files differ
diff --git a/orig/pq/saves/Kridfrav.pq3 b/orig/pq/saves/Kridfrav.pq3
new file mode 100644
index 0000000..454525b
--- /dev/null
+++ b/orig/pq/saves/Kridfrav.pq3
Binary files differ
diff --git a/orig/pq/saves/Moxwhik.pq3 b/orig/pq/saves/Moxwhik.pq3
new file mode 100644
index 0000000..0eab286
--- /dev/null
+++ b/orig/pq/saves/Moxwhik.pq3
Binary files differ
diff --git a/orig/pq/saves/Oupret.pq3 b/orig/pq/saves/Oupret.pq3
new file mode 100644
index 0000000..67fe6a7
--- /dev/null
+++ b/orig/pq/saves/Oupret.pq3
Binary files differ
diff --git a/orig/pq/saves/Rotdrut.pq3 b/orig/pq/saves/Rotdrut.pq3
new file mode 100644
index 0000000..751bf75
--- /dev/null
+++ b/orig/pq/saves/Rotdrut.pq3
Binary files differ
diff --git a/orig/pq/saves/Utzin.pq3 b/orig/pq/saves/Utzin.pq3
new file mode 100644
index 0000000..cd9f421
--- /dev/null
+++ b/orig/pq/saves/Utzin.pq3
Binary files differ
diff --git a/orig/pq/saves/Whakcrood [Spoltog].pq b/orig/pq/saves/Whakcrood [Spoltog].pq
new file mode 100644
index 0000000..911154e
--- /dev/null
+++ b/orig/pq/saves/Whakcrood [Spoltog].pq
Binary files differ
diff --git a/orig/pq/saves/Ziedkrad.pq3 b/orig/pq/saves/Ziedkrad.pq3
new file mode 100644
index 0000000..d3aa892
--- /dev/null
+++ b/orig/pq/saves/Ziedkrad.pq3
Binary files differ
diff --git a/orig/pq/screenshots.zip b/orig/pq/screenshots.zip
new file mode 100644
index 0000000..d61e81f
--- /dev/null
+++ b/orig/pq/screenshots.zip
Binary files differ
diff --git a/orig/pq/swords.gif b/orig/pq/swords.gif
new file mode 100644
index 0000000..010ef0d
--- /dev/null
+++ b/orig/pq/swords.gif
Binary files differ