
MAPGEN
DUMPER output image of WITP:AE Terrain Types (Hex) resized to fit
monitors.
This is a set of programs designed to make editing/creating custom maps for Matrix Games' “War in the Pacific: Admiral's Edition” significantly easier; by outputting the game map data contained within PWHEXE.DAT in a graphical format which can then be easily edited in graphical programs such as PhotoShop™ and then reloaded into PWHEXE.DAT, significantly reducing the time input needed to create/modify large areas of the map.
You can't have it do all the work for making a map for you. You still need to actually draw the map yourself. It's not a magic “make a random map” program.
|
|
MAPGEN ANALYZER: This program will analyze PWHEXE.DAT and:
|
|
|
|
|
|
MAPGEN COMBINER: This program must be placed into your \WITPAE\ART folder. There are two options available:
Both choices output a very large PNG file; allowing you to see the whole map as one contiguous file. TO BE DONE IN FUTURE: Add the MAPGEN SPLITTER counterpart to break down the combined map; so that you can combine a map to make large scale art in Photoshop; and then unsplit it again for use in the WITP:AE game engine. |
|
|
|
|
|
MAPGEN DUMPER: This program dumps the PWHEXE.DAT into two forms of graphical output:
You select the type of data you wish to dump and the graphical output during program execution. |
|
|
|
|
|
MAPGEN REPACKER: This program reads either the large (9766x7803) large contiguous map image or the 42 small sub map images generated previously by MAPGEN DUMPER, analyzes them and repacks the information contained within them on hex/hex-side values into the PWHEXE.DAT file. You select the type of data you wish to repack and whether you wish to use the “split” or “large” map images as a data source during program execution. |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
Hex Analysis Behavior during REPACK Mode: |
|
|
|
The red dots represent pixels in the hex that will be sampled for color values (R,G,B tuples) during the repacking process. The values are placed into a Python List and the most common value is returned to the greater program as the color value for that hex. This will enable better repacking over single pixel sampling mode. |
|
Hex Side Analysis Behavior during REPACK Mode: |
|
|
|
The dots represent pixels in each hex side that will be sampled for color values (R,G,B tuples) during the repacking process. The values are placed into a Python List and the most common value is returned to the greater program as the color value for that hex. This will enable better repacking over single pixel sampling mode. |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
These notes are based pretty much largely on Dave Bradley's "Map Data File Formats for AE", last revised on 5 October 2011, and also included in this distribution for clarity. (PDF File)
They're intended to help users of MAPGEN know which colors to paint their graphical maps for proper input into PWHEXE.DAT, but also to help anyone who would want to in the future, design a map editor for WITP:AE, hence the thoroughness of some of the detail below.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Complete Hex Entry Breakdown
Each Hex Entry in the PWHEXE.dat file is 56 bytes long, with each byte allocated as such:
|
Byte |
Description |
Byte |
Description |
Byte |
Description |
|
0 |
Hexside Type #1 |
20 |
Hexside Type #5 |
40 |
Original hex Nation |
|
1 |
Hexside Road #1 |
21 |
Hexside Road #5 |
41 |
Malaria Zone |
|
2 |
Hexside Railroad #1 |
22 |
Hexside Railroad #5 |
42 |
Amphibious Landing Zone |
|
3 |
Hexside River #1 |
23 |
Hexside River #5 |
43 |
Hexside Control E |
|
4 |
Hexside Strait #1 |
24 |
Hexside Strait #5 |
44 |
Hexside Control SE |
|
5 |
Hexside Type #2 |
25 |
Hexside Type #6 |
45 |
Hexside Control SW |
|
6 |
Hexside Road #2 |
26 |
Hexside Road #6 |
46 |
Hexside Control W |
|
7 |
Hexside Railroad #2 |
27 |
Hexside Railroad #6 |
47 |
Hexside Control NW |
|
8 |
Hexside River #2 |
28 |
Hexside River #6 |
48 |
Hexside Control NE |
|
9 |
Hexside Strait #2 |
29 |
Hexside Strait #6 |
49 |
Stacking Limit |
|
10 |
Hexside Type #3 |
30 |
Hex Type Code |
50 |
Spare |
|
11 |
Hexside Road #3 |
31 |
Terrain Type Code |
51 |
Allied Coastwatcher |
|
12 |
Hexside Railroad #3 |
32 |
Island Size Coding |
52 |
Japanese Coastwatcher |
|
13 |
Hexside River #3 |
33 |
Hex River Type Coding |
53 |
Spare |
|
14 |
Hexside Strait #3 |
34 |
Hex Strait Type Coding |
54 |
Spare |
|
15 |
Hexside Type #4 |
35 |
Sub Map Coding |
55 |
Spare |
|
16 |
Hexside Road #4 |
36 |
Weather Zone Coding |
|
|
|
17 |
Hexside Railroad #4 |
37 |
Hexagon Control |
|
|
|
18 |
Hexside River #4 |
38 |
Computer Control Zone Number |
|
|
|
19 |
Hexside Strait #4 |
39 |
Entry Zone/Port ID |
|
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hex Type
Coding
(Byte 30)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Ocean |
Blue 1 |
0, 0, 255 |
#0000ff |
|
x01 |
Coastal |
Blue 0 |
0, 164, 255 |
#00a4ff |
|
x02 |
Land |
Green 2 |
0, 160, 0 |
#00a000 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Terrain Type
Coding
(Byte 31)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Deep Ocean (OD) |
Blue 1 |
0, 0, 255 |
#0000ff |
|
x01 |
Clear (Clr) |
Green 4 |
93, 135, 93 |
#5d875d |
|
x02 |
Jungle (Jg) |
Green 2 |
0, 160, 0 |
#00a000 |
|
x03 |
Mountain (Mtn) |
Brown 1 |
160, 64, 0 |
#a04000 |
|
x04 |
Desert (Des) |
Yellow 1 |
255, 255, 0 |
#ffff00 |
|
x05 |
Swamp (Swp) |
Tan 2 |
121, 105, 73 |
#796949 |
|
x06 |
Heavy Urban (Uh) |
Red 1 |
255, 0, 0 |
#ff0000 |
|
x07 |
Forest (Wd) |
Green 1 |
0, 255, 0 |
#00ff00 |
|
x08 |
Rough (Rgh) |
Tan 1 |
193, 168, 117 |
#c1a875 |
|
x09 |
Sandy Desert (SDes) |
Yellow 0 |
255, 255, 192 |
#ffffc0 |
|
x0A |
Tundra (Tun) |
Gray 2 |
160, 160, 160 |
#a0a0a0 |
|
x0B |
Ice field (If) |
Gray 1 |
208, 208, 208 |
#d0d0d0 |
|
x0C |
Atoll |
Cyan 0 |
180, 255, 255 |
#b4ffff |
|
x0D |
Light Urban (Ul) |
Red 0 |
255, 110, 110 |
#ff6e6e |
|
x0E |
Tropical Mountain (MT) |
Green 3 |
0, 64, 0 |
#004000 |
|
x0F |
Rough Desert (DR) |
Yellow 2 |
160, 160, 0 |
#a0a000 |
|
10 |
Rough Forest (WR) |
Orange |
244, 91, 26 |
#f45b1a |
|
11 |
Rough Jungle (JR) |
Green 5 |
0, 117, 94 |
#00755e |
|
12 |
Shallow Ocean (OS) |
Blue 0 |
0, 164, 255 |
#00a4ff |
|
13 |
Pack Ice (Fs) |
White |
255, 255, 255 |
#ffffff |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Island Size
Coding
(Byte 32)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Very Large / Unlimited |
Tan 1 |
193, 168, 117 |
#c1a875 |
|
x01 |
very small |
Green 2 |
0, 160, 0 |
#00a000 |
|
x02 |
Small |
Purple 2 |
160, 0, 160 |
#a000a0 |
|
x03 |
Medium |
Red 1 |
255, 0, 0 |
#ff0000 |
|
x04 |
Large |
Orange |
244, 91, 26 |
#f45b1a |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hex River
Type Coding
(Byte 33)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No River |
White |
255, 255, 255 |
#ffffff |
|
x01 |
Minor River |
Blue 0 |
0, 164, 255 |
#00a4ff |
|
x02 |
Major River |
Blue 2 |
0, 64, 128 |
#004080 |
|
x03 |
Navigable River |
Orange |
244, 91, 26 |
#f45b1a |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hex Strait
Type Coding
(Byte 34)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No Strait |
White |
255, 255, 255 |
#ffffff |
|
x01 |
Wide Strait |
Blue 2 |
0, 64, 128 |
#004080 |
|
x02 |
Narrow Strait |
Blue 0 |
0, 164, 255 |
#00a4ff |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sub Map
Coding
(Byte 35)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Main Map |
Green 2 |
0, 160, 0 |
#00a000 |
|
Values x01 (1) to xFE (254) are used for Sub Maps #1 through #254. The system that MAPGEN uses is: Value of 80 = (80, 80, 80) RGB tuple |
||||
|
xFF |
AREA NOT USED |
Red 2 |
160, 0, 0 |
#a00000 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Weather Zone
Coding
(Byte 36)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Temperate |
Green 2 |
0, 160, 0 |
#00a000 |
|
x65 |
Cold Weather, Tibet |
Gray 1 |
208, 208, 208 |
#d0d0d0 |
|
x66 |
Cold Weather, North Cent. China |
Gray 2 |
160, 160, 160 |
#a0a0a0 |
|
x67 |
Cold Weather, Siberia |
Gray 3 |
112, 112, 112 |
#707070 |
|
x69 |
Cold Weather, Aleutians |
Gray 4 |
64, 64, 64 |
#404040 |
|
x6A |
Cold Weather, Canada |
Gray 5 |
32, 32, 32 |
#202020 |
|
x97 |
South Pole |
Pink 1 |
255, 0, 128 |
#ff0080 |
|
x98 |
Falklands |
Purple 2 |
160, 0, 160 |
#a000a0 |
|
xFF |
Off-Map |
Orange |
244, 91, 26 |
#f45b1a |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Entry
Zone/Port ID Coding
(Byte 39)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Spare |
Green 2 |
|
|
|
Values x01 (1) to xFF (255) are used for Entry Zones #1 through #255. The system that MAPGEN uses is: Value of 80 = (80, 80, 80) RGB tuple |
||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Malaria Zone
Coding
(Byte 41)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Normal/No Malaria |
Green 2 |
0, 160, 0 |
#00a000 |
|
x01 |
Malarial |
Red 1 |
255, 0, 0 |
#ff0000 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Amphibious
Landing Zone Coding
(Byte 42)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Normal/Allowed |
Green 2 |
0, 160, 0 |
#00a000 |
|
x01 |
Prohibited |
Red 1 |
255, 0, 0 |
#ff0000 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Stacking
Limit Coding
(Byte 49)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No Limit / Unlimited |
|
|
|
|
Values x01 (1) to xFF (255) are used for Stacking Limits #1 through #255. The system that MAPGEN uses is: Value of 80 = (80, 80, 80) RGB tuple - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The stacking limit formula is: Decimal Value * 5000 Thus, a hex with a decimal value of 25 (0x19) would have a stack limit of 125,000. Stock WITP:AE has this zeroed out. Unofficial map data mods include stacking limits. |
||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Allied
Coastwatcher Coding
(Byte 51)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No Coastwatcher |
Green 2 |
0, 160, 0 |
#00a000 |
|
x01 |
Coastwatcher Present |
Red 1 |
255, 0, 0 |
#ff0000 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Japanese
Coastwatcher Coding
(Byte 52)
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No Coastwatcher |
Green 2 |
0, 160, 0 |
#00a000 |
|
x01 |
Coastwatcher Present |
Red 1 |
255, 0, 0 |
#ff0000 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
Ocean |
Blue 2 |
0, 64, 128 |
#004080 |
|
x01 |
Ground A |
Green 4 |
93, 135, 93 |
#5d875d |
|
x02 |
River |
Blue 0 |
0, 164, 255 |
#00a4ff |
|
x03 |
Ground B |
Green 1 |
0, 255, 0 |
#00ff00 |
|
x04 |
Blocked, Ground Units/TFs |
Red 1 |
255, 0, 0 |
#ff0000 |
|
x05 |
Blocked, Coral Reef |
Pink 1 |
255, 0, 128 |
#ff0080 |
|
x06 |
Both LCUs and TFs |
Purple 2 |
160, 0, 160 |
#a000a0 |
|
x07 |
Both LCUs and TFs |
Yellow 2 |
160, 160, 0 |
#a0a000 |
|
x08 |
NOT USED BY GAME |
NOT USED BY GAME |
NOT USED BY GAME |
NOT USED BY GAME |
|
x09 |
Blocked, LCUs |
Brown 1 |
160, 64, 0 |
#a04000 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No Roads |
White |
255, 255, 255 |
#ffffff |
|
x01 |
Minor Rail (RR) Trail (The manual says that trails underlie all rail lines where there is no Road (“walking on railway tracks”). |
Green 5 |
0, 117, 94 |
#00755e |
|
x02 |
Minor Road |
Red 1 |
255, 0, 0 |
#ff0000 |
|
x03 |
Major Road |
Brown 1 |
160, 64, 0 |
#a04000 |
A further note on trails. There have been some clarifications that have surfaced on the AE forum, stating that there is an implicit assumption of trails in hexes where there are no explicit designated road types, that is, where the hexside road type equals 00. So, movement can still occur in these directions but at the slowest rate for that terrain type/unit type/weather/etc. The manual states, “The existence of foot trails is assumed in all hexes on the map that do not have roads defined, and this is accounted for in the off-road movement rates. Therefore there are no actual “trails” defined on the map except for along railway lines......” .I have changed the designation I have assigned to the the code 01 for these fields to (RR) Trail. The stock map is very consistent with this approach, with a few exceptions that may just be oversights. I have however tested the viability of having Railway lines without underlying (RR) Trails and vice-versa. If you wish to use this for modding purposes I think it will work just fine but you should test to see if the movement rates you realize with this are what you intended.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No Railway |
White |
255, 255, 255 |
#ffffff |
|
x01 |
Minor Railway |
Red 0 |
255, 110, 110 |
#ff6e6e |
|
x02 |
Major Railway |
Purple 1 |
255, 0, 255 |
#ff00ff |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No Straits |
White |
255, 255, 255 |
#ffffff |
|
x01 |
Wide Strait |
Blue 2 |
0, 64, 128 |
#004080 |
|
x02 |
Narrow Strait |
Blue 0 |
0, 164, 255 |
#00a4ff |
There is an unresolved anomaly with this parameter. The hexside parameters provide for an individual strait type for each of the six sides. How these six bytes and the parameters expressed in byte 34-Straight Type (Hexagon) interact is not entirely clear.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
Hex Value |
Definition |
Color |
Color (RGB) |
Color (HTML Hex) |
|
x00 |
No River |
White |
255, 255, 255 |
#ffffff |
|
x01 |
Minor River |
Blue 0 |
0, 164, 255 |
#00a4ff |
|
x02 |
Major River |
Blue 2 |
0, 64, 128 |
#004080 |
|
x03 |
Navigable River |
Orange |
244, 91, 26 |
#f45b1a |
There is an unresolved anomaly with this parameter. The hexside parameters provide for an individual river type for each of the six sides. How these parameters and the parameters expressed in byte 33-River Type (hexagon) interact is not entirely clear.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The Graphical Map actually begins on pixel 21,38 of the complete dumped data map, because one row of top hexes is ¾ “off-map” while one column of left hexes is ½ “off-map” – the data map is 9766x7803 pixels while the graphical map is 9703x7767 pixels.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WITP:AE’s map is divided across several files, in both graphical (.bmp) format and in data format (.dat).
This multi-layer approach allows for superior graphical chrome (coastlines that approximate reality pretty closely in game), while keeping the hex data file within manageable limits (it’s already at 47,000~ hexes).
However, it means that the in-game map file is 9703 x 7767 pixels!
To allow this enormous true color map image to be loaded/edited onto computers that were in existence circa late 2002 (WITP was released Summer 2004), the map was chopped up into pieces no larger than 1500 x 1500 pixels and dynamically loaded into the game as the player moved the cursor around.
\ART
Is where the map image files are.
They’re divided between two sequences: WPEHxx.bmp (with hex map overlaid) and WPENxx.bmp (without hexes). Each sequence contains 41 bitmap images, arranged thusly:
|
|
Column 1 |
Column 2 |
Column 3 |
Column 4 |
Column 5 |
Column 6 |
Column 7 |
|
Row 1 |
00.bmp |
01.bmp |
02.bmp |
03.bmp |
04.bmp |
05.bmp |
06.bmp |
|
Row 2 |
07.bmp |
08.bmp |
09.bmp |
10.bmp |
11.bmp |
12.bmp |
13.bmp |
|
Row 3 |
14.bmp |
15.bmp |
16.bmp |
17.bmp |
18.bmp |
19.bmp |
20.bmp |
|
Row 4 |
21.bmp |
22.bmp |
23.bmp |
24.bmp |
25.bmp |
26.bmp |
27.bmp |
|
Row 5 |
28.bmp |
29.bmp |
30.bmp |
31.bmp |
32.bmp |
33.bmp |
34.bmp |
|
Row 6 |
35.bmp |
36.bmp |
37.bmp |
38.bmp |
39.bmp |
40.bmp |
41.bmp |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The reason this extremely large table is included is because Python is tricky when it comes to directly hex-editing files in binary mode.
Writing binary locations in files with low decimal values (x00 to x09) can be done reliably with the following code:
if HEXCOLOR == Hex_Tan_1_Color: #x00 Unlimited Island Size
HEXVALUE = ('\x00').encode() #We have to encode it because python is dumb.
HexFileData.write(HEXVALUE) #Write value to PWHEX.DAT
But when you get into extremely high decimal values, the above code doesn't work and incorrectly inputs values. To read/dump the correct values, you have to use a different set of code:
if HEXCOLOR == Hex_Gray_5_Color: #x6A Cold Weather, Canada
HEXVALUE = bytes(b'j') #We have to encode it because python is dumb.
HexFileData.write(HEXVALUE) #Write value to PWHEX.DAT
The following map dumpers/repacker segments use the HEXVALUE = bytes(b'j') method:
Hex Weather Zone
Sub Map Definitions
Entry Zone/Port ID Definitions
Stacking Limit Definitions
|
Decimal |
Hexadecimal |
Binary Byte |
|
0 |
0x00 |
b'\x00' |
|
1 |
0x01 |
b'\x01' |
|
2 |
0x02 |
b'\x02' |
|
3 |
0x03 |
b'\x03' |
|
4 |
0x04 |
b'\x04' |
|
5 |
0x05 |
b'\x05' |
|
6 |
0x06 |
b'\x06' |
|
7 |
0x07 |
b'\x07' |
|
8 |
0x08 |
b'\x08' |
|
9 |
0x09 |
b'\t' |
|
10 |
0x0A |
b'\n' |
|
11 |
0x0B |
b'\x0b' |
|
12 |
0x0C |
b'\x0c' |
|
13 |
0x0D |
b'\r' |
|
14 |
0x0E |
b'\x0e' |
|
15 |
0x0F |
b'\x0f' |
|
16 |
0x10 |
b'\x10' |
|
17 |
0x11 |
b'\x11' |
|
18 |
0x12 |
b'\x12' |
|
19 |
0x13 |
b'\x13' |
|
20 |
0x14 |
b'\x14' |
|
21 |
0x15 |
b'\x15' |
|
22 |
0x16 |
b'\x16' |
|
23 |
0x17 |
b'\x17' |
|
24 |
0x18 |
b'\x18' |
|
25 |
0x19 |
b'\x19' |
|
26 |
0x1A |
b'\x1a' |
|
27 |
0x1B |
b'\x1b' |
|
28 |
0x1C |
b'\x1c' |
|
29 |
0x1D |
b'\x1d' |
|
30 |
0x1E |
b'\x1e' |
|
31 |
0x1F |
b'\x1f' |
|
32 |
0x20 |
b' ' |
|
33 |
0x21 |
b'!' |
|
34 |
0x22 |
b'"' |
|
35 |
0x23 |
b'#' |
|
36 |
0x24 |
b'$' |
|
37 |
0x25 |
b'%' |
|
38 |
0x26 |
b'&' |
|
39 |
0x27 |
b"'" |
|
40 |
0x28 |
b'(' |
|
41 |
0x29 |
b')' |
|
42 |
0x2A |
b'*' |
|
43 |
0x2B |
b'+' |
|
44 |
0x2C |
b',' |
|
45 |
0x2D |
b'-' |
|
46 |
0x2E |
b'.' |
|
47 |
0x2F |
b'/' |
|
48 |
0x30 |
b'0' |
|
49 |
0x31 |
b'1' |
|
50 |
0x32 |
b'2' |
|
51 |
0x33 |
b'3' |
|
52 |
0x34 |
b'4' |
|
53 |
0x35 |
b'5' |
|
54 |
0x36 |
b'6' |
|
55 |
0x37 |
b'7' |
|
56 |
0x38 |
b'8' |
|
57 |
0x39 |
b'9' |
|
58 |
0x3A |
b':' |
|
59 |
0x3B |
b';' |
|
60 |
0x3C |
b'<' |
|
61 |
0x3D |
b'=' |
|
62 |
0x3E |
b'>' |
|
63 |
0x3F |
b'?' |
|
64 |
0x40 |
b'@' |
|
65 |
0x41 |
b'A' |
|
66 |
0x42 |
b'B' |
|
67 |
0x43 |
b'C' |
|
68 |
0x44 |
b'D' |
|
69 |
0x45 |
b'E' |
|
70 |
0x46 |
b'F' |
|
71 |
0x47 |
b'G' |
|
72 |
0x48 |
b'H' |
|
73 |
0x49 |
b'I' |
|
74 |
0x4A |
b'J' |
|
75 |
0x4B |
b'K' |
|
76 |
0x4C |
b'L' |
|
77 |
0x4D |
b'M' |
|
78 |
0x4E |
b'N' |
|
79 |
0x4F |
b'O' |
|
80 |
0x50 |
b'P' |
|
81 |
0x51 |
b'Q' |
|
82 |
0x52 |
b'R' |
|
83 |
0x53 |
b'S' |
|
84 |
0x54 |
b'T' |
|
85 |
0x55 |
b'U' |
|
86 |
0x56 |
b'V' |
|
87 |
0x57 |
b'W' |
|
88 |
0x58 |
b'X' |
|
89 |
0x59 |
b'Y' |
|
90 |
0x5A |
b'Z' |
|
91 |
0x5B |
b'[' |
|
92 |
0x5C |
b'\\' |
|
93 |
0x5D |
b']' |
|
94 |
0x5E |
b'^' |
|
95 |
0x5F |
b'_' |
|
96 |
0x60 |
b'`' |
|
97 |
0x61 |
b'a' |
|
98 |
0x62 |
b'b' |
|
99 |
0x63 |
b'c' |
|
100 |
0x64 |
b'd' |
|
101 |
0x65 |
b'e' |
|
102 |
0x66 |
b'f' |
|
103 |
0x67 |
b'g' |
|
104 |
0x68 |
b'h' |
|
105 |
0x69 |
b'i' |
|
106 |
0x6A |
b'j' |
|
107 |
0x6B |
b'k' |
|
108 |
0x6C |
b'l' |
|
109 |
0x6D |
b'm' |
|
110 |
0x6E |
b'n' |
|
111 |
0x6F |
b'o' |
|
112 |
0x70 |
b'p' |
|
113 |
0x71 |
b'q' |
|
114 |
0x72 |
b'r' |
|
115 |
0x73 |
b's' |
|
116 |
0x74 |
b't' |
|
117 |
0x75 |
b'u' |
|
118 |
0x76 |
b'v' |
|
119 |
0x77 |
b'w' |
|
120 |
0x78 |
b'x' |
|
121 |
0x79 |
b'y' |
|
122 |
0x7A |
b'z' |
|
123 |
0x7B |
b'{' |
|
124 |
0x7C |
b'|' |
|
125 |
0x7D |
b'}' |
|
126 |
0x7E |
b'~' |
|
127 |
0x7F |
b'\x7f' |
|
128 |
0x80 |
b'\x80' |
|
129 |
0x81 |
b'\x81' |
|
130 |
0x82 |
b'\x82' |
|
131 |
0x83 |
b'\x83' |
|
132 |
0x84 |
b'\x84' |
|
133 |
0x85 |
b'\x85' |
|
134 |
0x86 |
b'\x86' |
|
135 |
0x87 |
b'\x87' |
|
136 |
0x88 |
b'\x88' |
|
137 |
0x89 |
b'\x89' |
|
138 |
0x8A |
b'\x8a' |
|
139 |
0x8B |
b'\x8b' |
|
140 |
0x8C |
b'\x8c' |
|
141 |
0x8D |
b'\x8d' |
|
142 |
0x8E |
b'\x8e' |
|
143 |
0x8F |
b'\x8f' |
|
144 |
0x90 |
b'\x90' |
|
145 |
0x91 |
b'\x91' |
|
146 |
0x92 |
b'\x92' |
|
147 |
0x93 |
b'\x93' |
|
148 |
0x94 |
b'\x94' |
|
149 |
0x95 |
b'\x95' |
|
150 |
0x96 |
b'\x96' |
|
151 |
0x97 |
b'\x97' |
|
152 |
0x98 |
b'\x98' |
|
153 |
0x99 |
b'\x99' |
|
154 |
0x9A |
b'\x9a' |
|
155 |
0x9B |
b'\x9b' |
|
156 |
0x9C |
b'\x9c' |
|
157 |
0x9D |
b'\x9d' |
|
158 |
0x9E |
b'\x9e' |
|
159 |
0x9F |
b'\x9f' |
|
160 |
0xA0 |
b'\xa0' |
|
161 |
0xA1 |
b'\xa1' |
|
162 |
0xA2 |
b'\xa2' |
|
163 |
0xA3 |
b'\xa3' |
|
164 |
0xA4 |
b'\xa4' |
|
165 |
0xA5 |
b'\xa5' |
|
166 |
0xA6 |
b'\xa6' |
|
167 |
0xA7 |
b'\xa7' |
|
168 |
0xA8 |
b'\xa8' |
|
169 |
0xA9 |
b'\xa9' |
|
170 |
0xAA |
b'\xaa' |
|
171 |
0xAB |
b'\xab' |
|
172 |
0xAC |
b'\xac' |
|
173 |
0xAD |
b'\xad' |
|
174 |
0xAE |
b'\xae' |
|
175 |
0xAF |
b'\xaf' |
|
176 |
0xB0 |
b'\xb0' |
|
177 |
0xB1 |
b'\xb1' |
|
178 |
0xB2 |
b'\xb2' |
|
179 |
0xB3 |
b'\xb3' |
|
180 |
0xB4 |
b'\xb4' |
|
181 |
0xB5 |
b'\xb5' |
|
182 |
0xB6 |
b'\xb6' |
|
183 |
0xB7 |
b'\xb7' |
|
184 |
0xB8 |
b'\xb8' |
|
185 |
0xB9 |
b'\xb9' |
|
186 |
0xBA |
b'\xba' |
|
187 |
0xBB |
b'\xbb' |
|
188 |
0xBC |
b'\xbc' |
|
189 |
0xBD |
b'\xbd' |
|
190 |
0xBE |
b'\xbe' |
|
191 |
0xBF |
b'\xbf' |
|
192 |
0xC0 |
b'\xc0' |
|
193 |
0xC1 |
b'\xc1' |
|
194 |
0xC2 |
b'\xc2' |
|
195 |
0xC3 |
b'\xc3' |
|
196 |
0xC4 |
b'\xc4' |
|
197 |
0xC5 |
b'\xc5' |
|
198 |
0xC6 |
b'\xc6' |
|
199 |
0xC7 |
b'\xc7' |
|
200 |
0xC8 |
b'\xc8' |
|
201 |
0xC9 |
b'\xc9' |
|
202 |
0xCA |
b'\xca' |
|
203 |
0xCB |
b'\xcb' |
|
204 |
0xCC |
b'\xcc' |
|
205 |
0xCD |
b'\xcd' |
|
206 |
0xCE |
b'\xce' |
|
207 |
0xCF |
b'\xcf' |
|
208 |
0xD0 |
b'\xd0' |
|
209 |
0xD1 |
b'\xd1' |
|
210 |
0xD2 |
b'\xd2' |
|
211 |
0xD3 |
b'\xd3' |
|
212 |
0xD4 |
b'\xd4' |
|
213 |
0xD5 |
b'\xd5' |
|
214 |
0xD6 |
b'\xd6' |
|
215 |
0xD7 |
b'\xd7' |
|
216 |
0xD8 |
b'\xd8' |
|
217 |
0xD9 |
b'\xd9' |
|
218 |
0xDA |
b'\xda' |
|
219 |
0xDB |
b'\xdb' |
|
220 |
0xDC |
b'\xdc' |
|
221 |
0xDD |
b'\xdd' |
|
222 |
0xDE |
b'\xde' |
|
223 |
0xDF |
b'\xdf' |
|
224 |
0xE0 |
b'\xe0' |
|
225 |
0xE1 |
b'\xe1' |
|
226 |
0xE2 |
b'\xe2' |
|
227 |
0xE3 |
b'\xe3' |
|
228 |
0xE4 |
b'\xe4' |
|
229 |
0xE5 |
b'\xe5' |
|
230 |
0xE6 |
b'\xe6' |
|
231 |
0xE7 |
b'\xe7' |
|
232 |
0xE8 |
b'\xe8' |
|
233 |
0xE9 |
b'\xe9' |
|
234 |
0xEA |
b'\xea' |
|
235 |
0xEB |
b'\xeb' |
|
236 |
0xEC |
b'\xec' |
|
237 |
0xED |
b'\xed' |
|
238 |
0xEE |
b'\xee' |
|
239 |
0xEF |
b'\xef' |
|
240 |
0xF0 |
b'\xf0' |
|
241 |
0xF1 |
b'\xf1' |
|
242 |
0xF2 |
b'\xf2' |
|
243 |
0xF3 |
b'\xf3' |
|
244 |
0xF4 |
b'\xf4' |
|
245 |
0xF5 |
b'\xf5' |
|
246 |
0xF6 |
b'\xf6' |
|
247 |
0xF7 |
b'\xf7' |
|
248 |
0xF8 |
b'\xf8' |
|
249 |
0xF9 |
b'\xf9' |
|
250 |
0xFA |
b'\xfa' |
|
251 |
0xFB |
b'\xfb' |
|
252 |
0xFC |
b'\xfc' |
|
253 |
0xFD |
b'\xfd' |
|
254 |
0xFE |
b'\xfe' |
|
255 |
0xFF |
b'\xff' |