OSM Map On Magellan/Format/layer
Layer
The layer files contain the map object data, as there are point, polylines and polygons. Each layer subdivides into several levels of cell. The first level contains only one big cell filling the whole layer. The next level and every second level following, the cell width and height is devided by half. In the levels inbetween the cells have the same widht and height like in the level before, but the cells are shifted half a cell width to the left and down.
Cells off different levels | ||
---|---|---|
Level 2 | Level 3 | Level 4 |
Coordinates in the layer file are negative in direction of west and north (The world is standing upside down)
Header
There are two different versions of Header known, that both work. The rest of the file is identical. Both header are 128 bytes long. The rest of the layer file is reserved for geographical data.
Version 1
bytes | type | description |
---|---|---|
Bytes 0 - 3 | char[] | String = "MHGO" |
Bytes 4 - 7 | int | Category (two possible values NORMAL_LAYER = 0, ARTIFICIAL_LAYER = 1) |
Bytes 8 - 9 | short | FileIdentifier = 0xc000 |
Bytes 10 - 13 | float | Longitude Left |
Bytes 14 - 17 | float | Longitude Right |
Bytes 18 - 21 | float | Latitude Bottom |
Bytes 22 - 25 | float | Latitude Top |
Bytes 26 - 27 | short | Number of Levels (0 when layer is empty) |
Bytes 28 - 31 | int | Number of Objects inside the layer |
Bytes 32 - 39 | double | Scale Factor Longitude (Typically 9.0e-6) |
Bytes 40 - 47 | double | Scale Factor Latitude (Typically 9.0e-6) |
Bytes 48 - 51 | float | Origin Longitude (Typically 0.0) |
Bytes 52 - 55 | float | Origin Latitude (Typically 0.0) |
Bytes 56 - 59 | int | Left |
Bytes 60 - 63 | int | Bottom |
Bytes 64 - 67 | int | Right |
Bytes 68 - 71 | int | Top |
Byte 72 | byte | Layer Type (POINT = 0x0B, POLYLINE = 0x0D, AREA = 0x0C, LABELS = 0x0F, POI = 0x10) |
Byte 73 | byte | 0x00 |
Bytes 74 - 77 | int | Size in bytes of largest cell |
Bytes 78 - 81 | int | First Cell Id |
Bytes 82 - 85 | int | Last Cell Id |
Bytes 86 - 127 | byte[] | Filled with 0x00 |
Version 2
bytes | type | description |
---|---|---|
Bytes 0 - 3 | char[] | String = "MHGO" |
Bytes 4 - 7 | int | Magic 0x80 |
Bytes 8 - 15 | double | Scale Factor Longitude (Typically 9.0e-6) |
Bytes 16 - 23 | double | Scale Factor Latitude (Typically 9.0e-6) |
Bytes 24 - 27 | float | Origin Longitude (Typically 0.0) |
Bytes 28 - 31 | float | Origin Latitude (Typically 0.0) |
Bytes 32 - 35 | int | Left |
Bytes 36 - 39 | int | Bottom |
Bytes 40 - 43 | int | Right |
Bytes 44 - 47 | int | Top |
Bytes 48 - 51 | float | Longitude Left |
Bytes 52 - 55 | float | Longitude Right |
Bytes 56 - 59 | float | Latitude Bottom |
Bytes 60 - 63 | float | Latitude Top |
Bytes 64 - 47 | int | Number of Objects inside the layer |
Bytes 68 - 71 | int | Size in bytes of largest cell |
Bytes 72 - 75 | int | First Cell Id |
Bytes 76 - 79 | int | Last Cell Id |
Bytes 80 - 81 | short | Number of Levels (0 when layer is empty) |
Bytes 82 - 83 | short | FileIdentifier = 0xc000 |
Byte 84 | byte | Layer Type (POINT = 0x0B, POLYLINE = 0x0D, AREA = 0x0C, LABELS = 0x0F, POI = 0x10) |
Byte 85 | byte | 0x00 |
Bytes 86 - 89 | int | Category (two possible values NORMAL_LAYER = 0, ARTIFICIAL_LAYER = 1) |
Bytes 90 - 127 | byte[] | Filled with 0x00 |
Cell Data
The Graphic data starts at byte 512 of the file. It is organized in cells as described above. When a cell is empty/without elements it is not listed in the following section at all. Each Cell starts with a short containing the number of elements within the cell.
bytes | type | description |
---|---|---|
Bytes 0 - 1 | short | Number of Elements in the cell |
Bytes 2 - 3 | short | 0x00 (Maybe the value above is an int and this belongs to it) |
Bytes 4 - (n - 1) | byte[] | Polyline, Point or Polyarea data |
Bytes n | byte | optional alignment byte |
Each element within a cell has a common prefix of maximum 19 bytes describing its bounding box.
bytes | type | description |
---|---|---|
Bytes 0 - 1 | short | Length of element in bytes |
Bytes 2 | byte | Bounding box parameter descriptor |
Bytes 3 - | nothing, byte, short or int | X-Offset |
nothing, byte, short or int | Y-Offset | |
nothing, byte, short or int | Width | |
nothing, byte, short or int | Height | |
byte[] | Graphic data |
The parameter descriptor is set up like this:
Bounding Box Parameter Descriptor | |||||||
---|---|---|---|---|---|---|---|
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
Height Data Type | Width Data Type | Y-Offset Data Type | X-Offset Data Type |
where
- 3 = nothing ( value = 0)
- 2 = byte
- 1 = short
- 0 = integer
(Note: for some reason the "length of element in bytes" is calculated by Length = 18 + Length of "Graphic data")
Polyline
All coordinates within a Polyline Graphic are relative to its bounding box described before. The map differentiates between following types of Polylines:
Type | Criteria | extra Size |
---|---|---|
7 | firstPoint.x == topRight.x,firstPoint.y == bottomLeft.y, lastPoint.x == bottomLeft.x, lastPoint.y == topRight.y | 0 |
6 | firstPoint.x == bottomLeft.x, firstPoint.y == topRight.y, lastPoint.x == topRight.x, lastPoint.y == bottomLeft.y | 0 |
5 | firstPoint == topRight, lastPoint == bottomLeft | 0 |
4 | irstPoint == bottomLeft, lastPoint == topRight | 0 |
3 | firstPoint == bottomLeft | 2 |
2 | firstPoint.x - bottomLeft.x <= 255, firstPoint.y - bottomLeft.y <= 255 | 4 |
1 | firstPoint.x - bottomLeft.x <= 65535, firstPoint.y - bottomLeft.y <= 65535 | 6 |
0 | all the rest | 10 |
The size of the polyline stream is calculated by:
Size = (extra Size) + (Number of Points - 2) * 2 + 4
When a text is associated to the polyline the size increases by 2.
Lets assume the polyline in the following table is of polytype 1 with four points for the following table
bytes | type | description |
---|---|---|
Bytes 0 | byte | textOffset = 0xff when no text is associated with this polyline, otherwise text offset within row of aux table |
Bytes 1 | byte | object type or layer this polyline belongs to |
Bytes 2 - 3 | short | polyType << 13 + number of points |
Bytes 4 - 5 | short | x offset of first point from bottom left corner of bounding box. |
Bytes 6 - 7 | short | y offset of first point from bottom left corner of bounding box. |
Bytes 8 | byte | x offset second point in relation to first |
Bytes 9 | byte | y offset second point in relation to first |
Bytes 10 | byte | x offset third point in relation to second |
Bytes 11 | byte | y offset third point in relation to second |
Bytes 12 | byte | x offset 4th point in relation to third This point would miss in case of polytype 4-7 |
Bytes 13 | byte | y offset 4th point in relation to third. This point would miss in case of polytype 4-7 |
Bytes 14 | short | (optional, only when textOffset != 0xff), line within aux table |
Example
Here is an example for a layer file containing a single line with three points, it is generated out of this example osm file:
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="CGImap 0.0.2">
<node id="1112" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.34013" lon="7.60557"/>
<node id="1113" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:23Z" user="benno234" uid="1234" lat="49.34138" lon="7.60557"/>
<node id="1114" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:24Z" user="benno234" uid="1234" lat="49.34138" lon="7.60819">
<tag k="created_by" v="fantasy"/>
</node>
<way id="2011" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:25Z" user="benno234" uid="1234">
<nd ref="1112"/>
<nd ref="1113"/>
<nd ref="1114"/>
<tag k="highway" v="motorway"/>
<tag k="name" v="My Way"/>
<tag k="postal_code" v="12345"/>
<tag k="source" v="fantasy"/>
</way>
</osm>
Here are the used parameters from the layer header:
- bb left : 777781
- bb right : 888885
- bb top : -5444447
- bb bottom : -5555551
- scalelat : 9.0E-6
- scalelon : 9.0E-6
- ref lon : 0.0
- ref lat : 0.0
- ko left : 7.000029
- ko right : 7.999965
- ko top : -49.000023
- ko bottom : -49.999958
- firstCell : 654
- lastCell : 654
- nbr of Lev : 4
- nbr of Obj : 1
- fileIdent : 0xc000
- category : 0
- layerType : 13
0x4D | 0x48 | 0x47 | 0x4F | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0xC0 | 0x3D | 0x00 | 0xE0 | 0x40 | 0xB7 | 0xFF | 0xFF | 0x40 | 0xF5 | 0xFF | 0x47 | 0xC2 | 0x06 | 0x00 | 0x44 | 0xC2 | 0x04 | 0x00 | 0x01 | 0x00 | 0x00 | 0x00 |
0x3F | 0xAB | 0xCC | 0x94 | 0xD6 | 0xDF | 0xE2 | 0x3E | 0x3F | 0xAB | 0xCC | 0x94 | 0xD6 | 0xDF | 0xE2 | 0x3E | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x35 | 0xDE | 0x0B | 0x00 | 0xA1 | 0x3A | 0xAB | 0xFF |
0x35 | 0x90 | 0x0D | 0x00 | 0xA1 | 0xEC | 0xAC | 0xFF | 0x0D | 0x00 | 0x1C | 0x00 | 0x00 | 0x00 | 0x8E | 0x02 | 0x00 | 0x00 | 0x8E | 0x02 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x01 | 0x00 | 0x00 | 0x00 | 0x20 | 0x00 | 0x95 | 0x22 | 0x05 | 0x08 | 0x01 | 0x23 | 0x01 | 0x8B | 0x00 | 0x00 | 0x06 | 0xE0 | 0x9F | 0x01 | 0x9F | 0x00 | 0x9F | 0xFF | 0x00 | 0x46 | 0x01 | 0x00 |
PolyArea
A polyarea within the map is the pendant to a multipolygon in the osm data. It can contain several outer area where the inner area are substracted from.
The bounding box is stored like at polyline. Here is how the graphic data is represented:
bytes | type | description |
---|---|---|
Bytes 0 | byte | textOffset = 0xff when no text is associated with this polyline, otherwise text offset within row of aux table |
Bytes 1 | byte | object type or layer this polyarea belongs to |
Bytes 2 - 3 | short | Number of Points of all Sub Areas |
Bytes 4 - (Number of SubAreas * 2 - 1) | short[] | Info for Sub Area |
byte[] | Sub Area data | |
byte | 0xff = No countour data present | |
byte | 0x00 = Alignement | |
short | (optional, only when textOffset != 0xff), line within aux table |
It is a little bit tricky to build the info for the sub areas.
Index of Sub area | Calculation of info |
---|---|
0 | Sub outer Poly Area Type << 13 + number of Outer Sub Area + Number of Inner Sub Area |
1 | Sub outer Poly Area Type << 13 + amount of points before (Sub Area 0) + 1 |
2 | Sub outer Poly Area Type << 13 + amount of points before (Sub Area 0, 1) + 2 |
... | |
n | Sub inner Poly Area Type << 13 + amount of points before ((Sub Area 0, 1, ...,(n - 1)) + n |
n + 1 | Sub inner Poly Trea type << 13 + amount of points before ((Sub Area 0, 1, ..., n) + n + 1 |
... |
Sub Area
Similar to the polyline there are several possible polyarea types, but only two of them are relevant:
Type | Criteria | extra Size |
---|---|---|
4 | firstPoint.x - bottomLeft.x <= 255, firstPoint.y - bottomLeft.y <= 255 | 2 |
2 | firstPoint.x - bottomLeft.x <= 65535, firstPoint.y - bottomLeft.y <= 65535 | 4 |
Lets assume the Sub Poly Area in the following table is of polytype 2 with four points for the following table
bytes | type | description |
---|---|---|
Bytes 0 - 1 | short | x offset of first point from bottom left corner of bounding box. |
Bytes 2 - 3 | short | y offset of first point from bottom left corner of bounding box. |
Bytes 4 | byte | x offset second point in relation to first |
Bytes 5 | byte | y offset second point in relation to first |
Bytes 6 | byte | x offset third point in relation to second |
Bytes 7 | byte | y offset third point in relation to second |
Bytes 8 | byte | x offset 4th point in relation to third |
Bytes 9 | byte | y offset 4th point in relation to third |
The Areas will automatically be closed. It is not needed to list the first point at the end of the list of points again, to close it.
Example
Here is a simple example with a multipolygon having one inner and one outer area:
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="CGImap 0.0.2">
<node id="1112" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.34299" lon="7.60286"/>
<node id="1113" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.34299" lon="7.61354"/>
<node id="1114" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.33621" lon="7.61354"/>
<node id="1115" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.33621" lon="7.60286"/>
<node id="1122" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.34013" lon="7.60557"/>
<node id="1123" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.34013" lon="7.60957"/>
<node id="1124" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.33737" lon="7.60957"/>
<node id="1125" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:22Z" user="benno234" uid="1234" lat="49.33737" lon="7.60557"/>
<way id="2011" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:25Z" user="benno234" uid="1234">
<nd ref="1112"/>
<nd ref="1113"/>
<nd ref="1114"/>
<nd ref="1115"/>
<nd ref="1112"/>
</way>
<way id="2021" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:25Z" user="benno234" uid="1234">
<nd ref="1122"/>
<nd ref="1123"/>
<nd ref="1124"/>
<nd ref="1125"/>
<nd ref="1122"/>
</way>
<relation id="3031" visible="true" version="1" changeset="1" timestamp="2014-11-29T17:32:25Z" user="benno234" uid="1234">
<member type="way" ref="2011" role="outer"/>
<member type="way" ref="2021" role="inner"/>
<tag k="natural" v="scrub"/>
<tag k="type" v="multipolygon"/>
</relation>
</osm>
Here is the layer definition:
- bb left : 777781
- bb right : 888885
- bb top : -5444447
- bb bottom : -5555551
- scalelat : 9.0E-6
- scalelon : 9.0E-6
- ref lon : 0.0
- ref lat : 0.0
- ko left : 7.000029
- ko right : 7.999965
- ko top : -49.000023
- ko bottom : -49.999958
- firstCell : 654
- lastCell : 654
- nbr of Lev : 4
- nbr of Obj : 1
- fileIdent : 0xc000
- category : 0
- layerType : 12
And here is the dump of the whole layer file:
0x4D | 0x48 | 0x47 | 0x4F | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0xC0 | 0x3D | 0x00 | 0xE0 | 0x40 | 0xB7 | 0xFF | 0xFF | 0x40 | 0xF5 | 0xFF | 0x47 | 0xC2 | 0x06 | 0x00 | 0x44 | 0xC2 | 0x04 | 0x00 | 0x01 | 0x00 | 0x00 | 0x00 |
0x3F | 0xAB | 0xCC | 0x94 | 0xD6 | 0xDF | 0xE2 | 0x3E | 0x3F | 0xAB | 0xCC | 0x94 | 0xD6 | 0xDF | 0xE2 | 0x3E | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x35 | 0xDE | 0x0B | 0x00 | 0xA1 | 0x3A | 0xAB | 0xFF |
0x35 | 0x90 | 0x0D | 0x00 | 0xA1 | 0xEC | 0xAC | 0xFF | 0x0C | 0x00 | 0x7A | 0x00 | 0x00 | 0x00 | 0x8E | 0x02 | 0x00 | 0x00 | 0x8E | 0x02 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x01 | 0x00 | 0x00 | 0x00 | 0x7E | 0x00 | 0x59 | 0xF5 | 0x03 | 0x56 | 0xA3 | 0x04 | 0xF2 | 0x02 | 0xFF | 0x00 | 0x30 | 0x00 | 0x02 | 0x80 | 0x22 | 0x40 | 0x00 | 0x00 | 0x00 | 0x7E | 0x00 | 0x7E | 0x00 | 0x7D | 0x00 | 0x7E |
0x00 | 0x7D | 0x00 | 0x7D | 0x77 | 0x01 | 0x76 | 0x00 | 0x77 | 0x00 | 0x77 | 0x00 | 0x77 | 0x00 | 0x76 | 0x00 | 0x77 | 0x00 | 0x77 | 0x00 | 0x76 | 0x00 | 0x77 | 0xFF | 0x00 | 0x83 | 0x00 | 0x83 | 0x00 | 0x82 | 0x00 | 0x83 |
0x00 | 0x82 | 0x00 | 0x82 | 0x89 | 0x01 | 0x8A | 0x00 | 0x89 | 0x00 | 0x89 | 0x00 | 0x8A | 0x00 | 0x89 | 0x00 | 0x89 | 0x00 | 0x89 | 0x00 | 0x8A | 0x00 | 0x89 | 0xFF | 0x2D | 0x01 | 0x3D | 0x01 | 0x6F | 0x01 | 0x70 | 0x00 |
0x6F | 0x00 | 0x6F | 0xFF | 0x00 | 0x67 | 0x00 | 0x67 | 0x00 | 0x65 | 0x91 | 0x01 | 0x91 | 0x00 | 0x90 | 0x00 | 0x91 | 0xFF | 0x00 | 0x9B | 0x00 | 0x99 | 0x00 | 0x99 | 0xFF | 0x00 |