diff --git a/format/avro/ocf.go b/format/avro/ocf.go index 63ed8393..8f9d694d 100644 --- a/format/avro/ocf.go +++ b/format/avro/ocf.go @@ -3,9 +3,6 @@ package avro import ( "bytes" "compress/flate" - "encoding/binary" - "hash/crc32" - "github.com/golang/snappy" "github.com/wader/fq/format" "github.com/wader/fq/format/avro/decoders" @@ -14,6 +11,7 @@ import ( "github.com/wader/fq/pkg/bitio" "github.com/wader/fq/pkg/decode" "github.com/wader/fq/pkg/scalar" + "hash/crc32" ) func init() { @@ -85,6 +83,37 @@ func decodeHeader(d *decode.D) HeaderData { return headerData } +func decodeBlockCodec(d *decode.D, dataSize int64, codec string) *bytes.Buffer { + bb := &bytes.Buffer{} + if codec == "deflate" { + br := d.FieldRawLen("compressed", dataSize*8) + d.MustCopy(bb, flate.NewReader(bitio.NewIOReader(br))) + } else if codec == "snappy" { + // Everything but last 4 bytes which are the checksum + n := dataSize - 4 + br := d.FieldRawLen("compressed", n*8) + compressed := make([]byte, n) + if _, err := bitio.ReadFull(br, compressed, n*8); err != nil { + d.Fatalf("failed reading compressed data %v", err) + } + decompressed, err := snappy.Decode(nil, compressed) + if err != nil { + d.Fatalf("failed decompressing data: %v", err) + } + d.MustCopy(bb, bytes.NewReader(decompressed)) + + // Check the checksum + crc32W := crc32.NewIEEE() + d.MustCopy(crc32W, bytes.NewReader(bb.Bytes())) + d.FieldU32("crc", d.ValidateUBytes(crc32W.Sum(nil)), scalar.Hex) + } else { + // Unknown codec, just dump the compressed data. + d.FieldRawLen("compressed", dataSize*8, scalar.Description(codec+" encoded")) + return nil + } + return bb +} + func decodeAvroOCF(d *decode.D, in interface{}) interface{} { header := decodeHeader(d) @@ -101,49 +130,19 @@ func decodeAvroOCF(d *decode.D, in interface{}) interface{} { size := d.FieldSFn("size", decoders.VarZigZag) i := int64(0) - if header.Codec == "deflate" { - br := d.FieldRawLen("compressed", size*8) - bb := &bytes.Buffer{} - d.MustCopy(bb, flate.NewReader(bitio.NewIOReader(br))) - d.FieldArrayRootBitBufFn("data", bitio.NewBitReader(bb.Bytes(), -1), func(d *decode.D) { - for ; i < count; i++ { - decodeFn("data", d) - } - }) - } else if header.Codec == "snappy" { - // Everything but last 4 bytes which are the checksum - n := (size - 4) * 8 - br := d.FieldRawLen("compressed", n) - data := make([]byte, size-4) - if _, err := br.ReadBits(data, n); err != nil { - d.Fatalf("failed to read snappy compressed data: %v", err) + if header.Codec != "null" { + if bb := decodeBlockCodec(d, size, header.Codec); bb != nil { + d.FieldArrayRootBitBufFn("data", bitio.NewBitReader(bb.Bytes(), -1), func(d *decode.D) { + for ; i < count; i++ { + decodeFn("data", d) + } + }) } - decoded, err := snappy.Decode(nil, data) - if err != nil { - d.Fatalf("failed to decode snappy compressed data: %v", err) - } - - crc := crc32.ChecksumIEEE(decoded) - crcB := make([]byte, 4) - if d.Endian == decode.BigEndian { - binary.BigEndian.PutUint32(crcB, crc) - } else { - binary.LittleEndian.PutUint32(crcB, crc) - } - d.FieldRawLen("crc32", 4*8, d.AssertBitBuf(crcB)) - d.FieldArrayRootBitBufFn("data", bitio.NewBitReader(decoded, -1), func(d *decode.D) { - for ; i < count; i++ { - decodeFn("data", d) - } - }) - } else if header.Codec == "null" { + } else { d.FieldArrayLoop("data", func() bool { return i < count }, func(d *decode.D) { decodeFn("datum", d) i++ }) - } else { - // Unknown codec, just dump the compressed data. - d.FieldRawLen("data", size*8, scalar.Description(header.Codec+" encoded")) } d.FieldRawLen("sync", 16*8, d.AssertBitBuf(header.Sync)) }) diff --git a/format/avro/testdata/quickstop-deflate.fqtest b/format/avro/testdata/quickstop-deflate.fqtest index 0cfbc8a6..9ac837c6 100644 --- a/format/avro/testdata/quickstop-deflate.fqtest +++ b/format/avro/testdata/quickstop-deflate.fqtest @@ -1,12 +1,412 @@ # Testcase taken from linkedin/goavro https://github.com/linkedin/goavro -$ fq '.blocks[0]' quickstop-deflate.avro - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.blocks[0]{}: - 0x0000|02 0a 44 61 6e 74 65 0a 48 69 63 6b 73 06 28 30|..Dante.Hicks.(0| data[0:602]: - * |until 0x3ff1.7 (end) (16370) | | -0x00120| b4 09 | .. | count: 602 -0x00120| be 22 | ." | size: 2207 -0x00120| 8d db| ..| compressed: raw bits +$ fq 'dv({array_truncate: 5})' quickstop-deflate.avro + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: quickstop-deflate.avro (avro_ocf) 0x0-0x5835.7 (22582) +0x00000|4f 62 6a 01 |Obj. | magic: raw bits (valid) 0x0-0x3.7 (4) + | | | header{}: 0x4-0x129.7 (294) + | | | meta[0:2]: 0x4-0x119.7 (278) + | | | [0]{}: block 0x4-0x118.7 (277) +0x00000| 04 | . | count: 2 0x4-0x4.7 (1) + | | | data[0:2]: 0x5-0x118.7 (276) + | | | [0]{}: entry 0x5-0x17.7 (19) + | | | key{}: 0x5-0xf.7 (11) +0x00000| 14 | . | length: 10 0x5-0x5.7 (1) +0x00000| 61 76 72 6f 2e 63 6f 64 65 63| avro.codec| data: "avro.codec" 0x6-0xf.7 (10) + | | | value{}: 0x10-0x17.7 (8) +0x00010|0e |. | length: 7 0x10-0x10.7 (1) +0x00010| 64 65 66 6c 61 74 65 | deflate | data: "deflate" 0x11-0x17.7 (7) + | | | [1]{}: entry 0x18-0x118.7 (257) + | | | key{}: 0x18-0x23.7 (12) +0x00010| 16 | . | length: 11 0x18-0x18.7 (1) +0x00010| 61 76 72 6f 2e 73 63| avro.sc| data: "avro.schema" 0x19-0x23.7 (11) +0x00020|68 65 6d 61 |hema | + | | | value{}: 0x24-0x118.7 (245) +0x00020| e6 03 | .. | length: 243 0x24-0x25.7 (2) +0x00020| 7b 22 74 79 70 65 22 3a 22 72| {"type":"r| data: "{\"type\":\"record\",\"name\":\"Person\",\"fields\":[{\"name\""... 0x26-0x118.7 (243) +0x00030|65 63 6f 72 64 22 2c 22 6e 61 6d 65 22 3a 22 50|ecord","name":"P| +* |until 0x118.7 (243) | | + | | | [1]{}: block 0x119-0x119.7 (1) +0x00110| 00 | . | count: 0 0x119-0x119.7 (1) + | | | data[0:0]: 0x11a-NA (0) +0x00110| 93 e7 87 9e 02 95| ......| sync: raw bits 0x11a-0x129.7 (16) +0x00120|d5 9e 4f 58 37 ad b2 a2 ce cd |..OX7..... | + | | | blocks[0:12]: 0x12a-0x5835.7 (22284) + | | | [0]{}: block 0x12a-0x9dc.7 (2227) + | | | data[0:602]: 0x0-0x3ff1.7 (16370) + | | | [0]{}: data 0x0-0x11.7 (18) + 0x0000|02 |. | ID: 1 0x0-0x0.7 (1) + | | | First{}: 0x1-0x6.7 (6) + 0x0000| 0a | . | length: 5 0x1-0x1.7 (1) + 0x0000| 44 61 6e 74 65 | Dante | data: "Dante" 0x2-0x6.7 (5) + | | | Last{}: 0x7-0xc.7 (6) + 0x0000| 0a | . | length: 5 0x7-0x7.7 (1) + 0x0000| 48 69 63 6b 73 | Hicks | data: "Hicks" 0x8-0xc.7 (5) + | | | Phone{}: 0xd-0x10.7 (4) + 0x0000| 06 | . | length: 3 0xd-0xd.7 (1) + 0x0000| 28 30| (0| data: "(0)" 0xe-0x10.7 (3) + 0x0010|29 |) | + 0x0010| 40 | @ | Age: 32 0x11-0x11.7 (1) + | | | [1]{}: data 0x12-0x30.7 (31) + 0x0010| 04 | . | ID: 2 0x12-0x12.7 (1) + | | | First{}: 0x13-0x19.7 (7) + 0x0010| 0c | . | length: 6 0x13-0x13.7 (1) + 0x0010| 52 61 6e 64 61 6c | Randal | data: "Randal" 0x14-0x19.7 (6) + | | | Last{}: 0x1a-0x20.7 (7) + 0x0010| 0c | . | length: 6 0x1a-0x1a.7 (1) + 0x0010| 47 72 61 76 65| Grave| data: "Graves" 0x1b-0x20.7 (6) + 0x0020|73 |s | + | | | Phone{}: 0x21-0x2f.7 (15) + 0x0020| 1c | . | length: 14 0x21-0x21.7 (1) + 0x0020| 28 35 35 35 29 20 31 32 33 2d 35 36 37 38| (555) 123-5678| data: "(555) 123-5678" 0x22-0x2f.7 (14) + 0x0030|3c |< | Age: 30 0x30-0x30.7 (1) + | | | [2]{}: data 0x31-0x53.7 (35) + 0x0030| 06 | . | ID: 3 0x31-0x31.7 (1) + | | | First{}: 0x32-0x3a.7 (9) + 0x0030| 10 | . | length: 8 0x32-0x32.7 (1) + 0x0030| 56 65 72 6f 6e 69 63 61 | Veronica | data: "Veronica" 0x33-0x3a.7 (8) + | | | Last{}: 0x3b-0x43.7 (9) + 0x0030| 10 | . | length: 8 0x3b-0x3b.7 (1) + 0x0030| 4c 6f 75 67| Loug| data: "Loughran" 0x3c-0x43.7 (8) + 0x0040|68 72 61 6e |hran | + | | | Phone{}: 0x44-0x52.7 (15) + 0x0040| 1c | . | length: 14 0x44-0x44.7 (1) + 0x0040| 28 35 35 35 29 20 31 32 33 2d 30| (555) 123-0| data: "(555) 123-0987" 0x45-0x52.7 (14) + 0x0050|39 38 37 |987 | + 0x0050| 38 | 8 | Age: 28 0x53-0x53.7 (1) + | | | [3]{}: data 0x54-0x71.7 (30) + 0x0050| 08 | . | ID: 4 0x54-0x54.7 (1) + | | | First{}: 0x55-0x5c.7 (8) + 0x0050| 0e | . | length: 7 0x55-0x55.7 (1) + 0x0050| 43 61 69 74 6c 69 6e | Caitlin | data: "Caitlin" 0x56-0x5c.7 (7) + | | | Last{}: 0x5d-0x61.7 (5) + 0x0050| 08 | . | length: 4 0x5d-0x5d.7 (1) + 0x0050| 42 72| Br| data: "Bree" 0x5e-0x61.7 (4) + 0x0060|65 65 |ee | + | | | Phone{}: 0x62-0x70.7 (15) + 0x0060| 1c | . | length: 14 0x62-0x62.7 (1) + 0x0060| 28 35 35 35 29 20 31 32 33 2d 32 33 32| (555) 123-232| data: "(555) 123-2323" 0x63-0x70.7 (14) + 0x0070|33 |3 | + 0x0070| 36 | 6 | Age: 27 0x71-0x71.7 (1) + | | | [4]{}: data 0x72-0x8d.7 (28) + 0x0070| 0a | . | ID: 5 0x72-0x72.7 (1) + | | | First{}: 0x73-0x76.7 (4) + 0x0070| 06 | . | length: 3 0x73-0x73.7 (1) + 0x0070| 42 6f 62 | Bob | data: "Bob" 0x74-0x76.7 (3) + | | | Last{}: 0x77-0x7d.7 (7) + 0x0070| 0c | . | length: 6 0x77-0x77.7 (1) + 0x0070| 53 69 6c 65 6e 74 | Silent | data: "Silent" 0x78-0x7d.7 (6) + | | | Phone{}: 0x7e-0x8c.7 (15) + 0x0070| 1c | . | length: 14 0x7e-0x7e.7 (1) + 0x0070| 28| (| data: "(555) 123-6422" 0x7f-0x8c.7 (14) + 0x0080|35 35 35 29 20 31 32 33 2d 36 34 32 32 |555) 123-6422 | + 0x0080| 3a | : | Age: 29 0x8d-0x8d.7 (1) + | | | [5:602]: ... +0x00120| b4 09 | .. | count: 602 0x12a-0x12b.7 (2) +0x00120| be 22 | ." | size: 2207 0x12c-0x12d.7 (2) +0x00120| 8d db| ..| compressed: raw bits 0x12e-0x9cc.7 (2207) 0x00130|6f 64 ac f9 19 c6 71 f9 37 49 8e 63 1d 55 55 b5|od....q.7I.c.UU.| * |until 0x9cc.7 (2207) | | -0x009c0| 93 e7 87| ...| sync: raw bits (valid) +0x009c0| 93 e7 87| ...| sync: raw bits (valid) 0x9cd-0x9dc.7 (16) 0x009d0|9e 02 95 d5 9e 4f 58 37 ad b2 a2 ce cd |.....OX7..... | + | | | [1]{}: block 0x9dd-0x1257.7 (2171) + | | | data[0:592]: 0x0-0x3ffc.7 (16381) + | | | [0]{}: data 0x0-0x23.7 (36) + 0x0000|b6 09 |.. | ID: 603 0x0-0x1.7 (2) + | | | First{}: 0x2-0xa.7 (9) + 0x0000| 10 | . | length: 8 0x2-0x2.7 (1) + 0x0000| 56 65 72 6f 6e 69 63 61 | Veronica | data: "Veronica" 0x3-0xa.7 (8) + | | | Last{}: 0xb-0x13.7 (9) + 0x0000| 10 | . | length: 8 0xb-0xb.7 (1) + 0x0000| 4c 6f 75 67| Loug| data: "Loughran" 0xc-0x13.7 (8) + 0x0010|68 72 61 6e |hran | + | | | Phone{}: 0x14-0x22.7 (15) + 0x0010| 1c | . | length: 14 0x14-0x14.7 (1) + 0x0010| 28 35 35 35 29 20 31 32 33 2d 30| (555) 123-0| data: "(555) 123-0987" 0x15-0x22.7 (14) + 0x0020|39 38 37 |987 | + 0x0020| 38 | 8 | Age: 28 0x23-0x23.7 (1) + | | | [1]{}: data 0x24-0x42.7 (31) + 0x0020| b8 09 | .. | ID: 604 0x24-0x25.7 (2) + | | | First{}: 0x26-0x2d.7 (8) + 0x0020| 0e | . | length: 7 0x26-0x26.7 (1) + 0x0020| 43 61 69 74 6c 69 6e | Caitlin | data: "Caitlin" 0x27-0x2d.7 (7) + | | | Last{}: 0x2e-0x32.7 (5) + 0x0020| 08 | . | length: 4 0x2e-0x2e.7 (1) + 0x0020| 42| B| data: "Bree" 0x2f-0x32.7 (4) + 0x0030|72 65 65 |ree | + | | | Phone{}: 0x33-0x41.7 (15) + 0x0030| 1c | . | length: 14 0x33-0x33.7 (1) + 0x0030| 28 35 35 35 29 20 31 32 33 2d 32 33| (555) 123-23| data: "(555) 123-2323" 0x34-0x41.7 (14) + 0x0040|32 33 |23 | + 0x0040| 36 | 6 | Age: 27 0x42-0x42.7 (1) + | | | [2]{}: data 0x43-0x5f.7 (29) + 0x0040| ba 09 | .. | ID: 605 0x43-0x44.7 (2) + | | | First{}: 0x45-0x48.7 (4) + 0x0040| 06 | . | length: 3 0x45-0x45.7 (1) + 0x0040| 42 6f 62 | Bob | data: "Bob" 0x46-0x48.7 (3) + | | | Last{}: 0x49-0x4f.7 (7) + 0x0040| 0c | . | length: 6 0x49-0x49.7 (1) + 0x0040| 53 69 6c 65 6e 74| Silent| data: "Silent" 0x4a-0x4f.7 (6) + | | | Phone{}: 0x50-0x5e.7 (15) + 0x0050|1c |. | length: 14 0x50-0x50.7 (1) + 0x0050| 28 35 35 35 29 20 31 32 33 2d 36 34 32 32 | (555) 123-6422 | data: "(555) 123-6422" 0x51-0x5e.7 (14) + 0x0050| 3a| :| Age: 29 0x5f-0x5f.7 (1) + | | | [3]{}: data 0x60-0x70.7 (17) + 0x0060|bc 09 |.. | ID: 606 0x60-0x61.7 (2) + | | | First{}: 0x62-0x65.7 (4) + 0x0060| 06 | . | length: 3 0x62-0x62.7 (1) + 0x0060| 4a 61 79 | Jay | data: "Jay" 0x63-0x65.7 (3) + | | | Last{}: 0x66-0x69.7 (4) + 0x0060| 06 | . | length: 3 0x66-0x66.7 (1) + 0x0060| 3f 3f 3f | ??? | data: "???" 0x67-0x69.7 (3) + | | | Phone{}: 0x6a-0x6f.7 (6) + 0x0060| 0a | . | length: 5 0x6a-0x6a.7 (1) + 0x0060| 28 31 30 30 29| (100)| data: "(100)" 0x6b-0x6f.7 (5) + 0x0070|34 |4 | Age: 26 0x70-0x70.7 (1) + | | | [4]{}: data 0x71-0x85.7 (21) + 0x0070| be 09 | .. | ID: 607 0x71-0x72.7 (2) + | | | First{}: 0x73-0x78.7 (6) + 0x0070| 0a | . | length: 5 0x73-0x73.7 (1) + 0x0070| 44 61 6e 74 65 | Dante | data: "Dante" 0x74-0x78.7 (5) + | | | Last{}: 0x79-0x7e.7 (6) + 0x0070| 0a | . | length: 5 0x79-0x79.7 (1) + 0x0070| 48 69 63 6b 73 | Hicks | data: "Hicks" 0x7a-0x7e.7 (5) + | | | Phone{}: 0x7f-0x84.7 (6) + 0x0070| 0a| .| length: 5 0x7f-0x7f.7 (1) + 0x0080|28 31 30 31 29 |(101) | data: "(101)" 0x80-0x84.7 (5) + 0x0080| 40 | @ | Age: 32 0x85-0x85.7 (1) + | | | [5:592]: ... +0x009d0| a0 09 | .. | count: 592 0x9dd-0x9de.7 (2) +0x009d0| ce| .| size: 2151 0x9df-0x9e0.7 (2) +0x009e0|21 |! | +0x009e0| 8d d8 5f 44 fc 7b 1e c7 f1 bb 9f d3 ff 3f d7| .._D.{.......?.| compressed: raw bits 0x9e1-0x1247.7 (2151) +0x009f0|7b b1 97 e7 7b 71 f8 55 df fe fc d6 f2 1b e7 2c|{...{q.U.......,| +* |until 0x1247.7 (2151) | | +0x01240| 93 e7 87 9e 02 95 d5 9e| ........| sync: raw bits (valid) 0x1248-0x1257.7 (16) +0x01250|4f 58 37 ad b2 a2 ce cd |OX7..... | + | | | [2]{}: block 0x1258-0x1ad5.7 (2174) + | | | data[0:591]: 0x0-0x3fe4.7 (16357) + | | | [0]{}: data 0x0-0x14.7 (21) + 0x0000|d6 12 |.. | ID: 1195 0x0-0x1.7 (2) + | | | First{}: 0x2-0x7.7 (6) + 0x0000| 0a | . | length: 5 0x2-0x2.7 (1) + 0x0000| 44 61 6e 74 65 | Dante | data: "Dante" 0x3-0x7.7 (5) + | | | Last{}: 0x8-0xd.7 (6) + 0x0000| 0a | . | length: 5 0x8-0x8.7 (1) + 0x0000| 48 69 63 6b 73 | Hicks | data: "Hicks" 0x9-0xd.7 (5) + | | | Phone{}: 0xe-0x13.7 (6) + 0x0000| 0a | . | length: 5 0xe-0xe.7 (1) + 0x0000| 28| (| data: "(199)" 0xf-0x13.7 (5) + 0x0010|31 39 39 29 |199) | + 0x0010| 40 | @ | Age: 32 0x14-0x14.7 (1) + | | | [1]{}: data 0x15-0x34.7 (32) + 0x0010| d8 12 | .. | ID: 1196 0x15-0x16.7 (2) + | | | First{}: 0x17-0x1d.7 (7) + 0x0010| 0c | . | length: 6 0x17-0x17.7 (1) + 0x0010| 52 61 6e 64 61 6c | Randal | data: "Randal" 0x18-0x1d.7 (6) + | | | Last{}: 0x1e-0x24.7 (7) + 0x0010| 0c | . | length: 6 0x1e-0x1e.7 (1) + 0x0010| 47| G| data: "Graves" 0x1f-0x24.7 (6) + 0x0020|72 61 76 65 73 |raves | + | | | Phone{}: 0x25-0x33.7 (15) + 0x0020| 1c | . | length: 14 0x25-0x25.7 (1) + 0x0020| 28 35 35 35 29 20 31 32 33 2d| (555) 123-| data: "(555) 123-5678" 0x26-0x33.7 (14) + 0x0030|35 36 37 38 |5678 | + 0x0030| 3c | < | Age: 30 0x34-0x34.7 (1) + | | | [2]{}: data 0x35-0x58.7 (36) + 0x0030| da 12 | .. | ID: 1197 0x35-0x36.7 (2) + | | | First{}: 0x37-0x3f.7 (9) + 0x0030| 10 | . | length: 8 0x37-0x37.7 (1) + 0x0030| 56 65 72 6f 6e 69 63 61| Veronica| data: "Veronica" 0x38-0x3f.7 (8) + | | | Last{}: 0x40-0x48.7 (9) + 0x0040|10 |. | length: 8 0x40-0x40.7 (1) + 0x0040| 4c 6f 75 67 68 72 61 6e | Loughran | data: "Loughran" 0x41-0x48.7 (8) + | | | Phone{}: 0x49-0x57.7 (15) + 0x0040| 1c | . | length: 14 0x49-0x49.7 (1) + 0x0040| 28 35 35 35 29 20| (555) | data: "(555) 123-0987" 0x4a-0x57.7 (14) + 0x0050|31 32 33 2d 30 39 38 37 |123-0987 | + 0x0050| 38 | 8 | Age: 28 0x58-0x58.7 (1) + | | | [3]{}: data 0x59-0x77.7 (31) + 0x0050| dc 12 | .. | ID: 1198 0x59-0x5a.7 (2) + | | | First{}: 0x5b-0x62.7 (8) + 0x0050| 0e | . | length: 7 0x5b-0x5b.7 (1) + 0x0050| 43 61 69 74| Cait| data: "Caitlin" 0x5c-0x62.7 (7) + 0x0060|6c 69 6e |lin | + | | | Last{}: 0x63-0x67.7 (5) + 0x0060| 08 | . | length: 4 0x63-0x63.7 (1) + 0x0060| 42 72 65 65 | Bree | data: "Bree" 0x64-0x67.7 (4) + | | | Phone{}: 0x68-0x76.7 (15) + 0x0060| 1c | . | length: 14 0x68-0x68.7 (1) + 0x0060| 28 35 35 35 29 20 31| (555) 1| data: "(555) 123-2323" 0x69-0x76.7 (14) + 0x0070|32 33 2d 32 33 32 33 |23-2323 | + 0x0070| 36 | 6 | Age: 27 0x77-0x77.7 (1) + | | | [4]{}: data 0x78-0x94.7 (29) + 0x0070| de 12 | .. | ID: 1199 0x78-0x79.7 (2) + | | | First{}: 0x7a-0x7d.7 (4) + 0x0070| 06 | . | length: 3 0x7a-0x7a.7 (1) + 0x0070| 42 6f 62 | Bob | data: "Bob" 0x7b-0x7d.7 (3) + | | | Last{}: 0x7e-0x84.7 (7) + 0x0070| 0c | . | length: 6 0x7e-0x7e.7 (1) + 0x0070| 53| S| data: "Silent" 0x7f-0x84.7 (6) + 0x0080|69 6c 65 6e 74 |ilent | + | | | Phone{}: 0x85-0x93.7 (15) + 0x0080| 1c | . | length: 14 0x85-0x85.7 (1) + 0x0080| 28 35 35 35 29 20 31 32 33 2d| (555) 123-| data: "(555) 123-6422" 0x86-0x93.7 (14) + 0x0090|36 34 32 32 |6422 | + 0x0090| 3a | : | Age: 29 0x94-0x94.7 (1) + | | | [5:591]: ... +0x01250| 9e 09 | .. | count: 591 0x1258-0x1259.7 (2) +0x01250| d4 21 | .! | size: 2154 0x125a-0x125b.7 (2) +0x01250| 8d d8 5f 44| .._D| compressed: raw bits 0x125c-0x1ac5.7 (2154) +0x01260|ec 0d 1e c7 f1 bb 63 1d c7 7a f4 ff cf 5e ec e5|......c..z...^..| +* |until 0x1ac5.7 (2154) | | +0x01ac0| 93 e7 87 9e 02 95 d5 9e 4f 58| ........OX| sync: raw bits (valid) 0x1ac6-0x1ad5.7 (16) +0x01ad0|37 ad b2 a2 ce cd |7..... | + | | | [3]{}: block 0x1ad6-0x235f.7 (2186) + | | | data[0:592]: 0x0-0x3fed.7 (16366) + | | | [0]{}: data 0x0-0x1e.7 (31) + 0x0000|f4 1b |.. | ID: 1786 0x0-0x1.7 (2) + | | | First{}: 0x2-0x9.7 (8) + 0x0000| 0e | . | length: 7 0x2-0x2.7 (1) + 0x0000| 43 61 69 74 6c 69 6e | Caitlin | data: "Caitlin" 0x3-0x9.7 (7) + | | | Last{}: 0xa-0xe.7 (5) + 0x0000| 08 | . | length: 4 0xa-0xa.7 (1) + 0x0000| 42 72 65 65 | Bree | data: "Bree" 0xb-0xe.7 (4) + | | | Phone{}: 0xf-0x1d.7 (15) + 0x0000| 1c| .| length: 14 0xf-0xf.7 (1) + 0x0010|28 35 35 35 29 20 31 32 33 2d 32 33 32 33 |(555) 123-2323 | data: "(555) 123-2323" 0x10-0x1d.7 (14) + 0x0010| 36 | 6 | Age: 27 0x1e-0x1e.7 (1) + | | | [1]{}: data 0x1f-0x3b.7 (29) + 0x0010| f6| .| ID: 1787 0x1f-0x20.7 (2) + 0x0020|1b |. | + | | | First{}: 0x21-0x24.7 (4) + 0x0020| 06 | . | length: 3 0x21-0x21.7 (1) + 0x0020| 42 6f 62 | Bob | data: "Bob" 0x22-0x24.7 (3) + | | | Last{}: 0x25-0x2b.7 (7) + 0x0020| 0c | . | length: 6 0x25-0x25.7 (1) + 0x0020| 53 69 6c 65 6e 74 | Silent | data: "Silent" 0x26-0x2b.7 (6) + | | | Phone{}: 0x2c-0x3a.7 (15) + 0x0020| 1c | . | length: 14 0x2c-0x2c.7 (1) + 0x0020| 28 35 35| (55| data: "(555) 123-6422" 0x2d-0x3a.7 (14) + 0x0030|35 29 20 31 32 33 2d 36 34 32 32 |5) 123-6422 | + 0x0030| 3a | : | Age: 29 0x3b-0x3b.7 (1) + | | | [2]{}: data 0x3c-0x4c.7 (17) + 0x0030| f8 1b | .. | ID: 1788 0x3c-0x3d.7 (2) + | | | First{}: 0x3e-0x41.7 (4) + 0x0030| 06 | . | length: 3 0x3e-0x3e.7 (1) + 0x0030| 4a| J| data: "Jay" 0x3f-0x41.7 (3) + 0x0040|61 79 |ay | + | | | Last{}: 0x42-0x45.7 (4) + 0x0040| 06 | . | length: 3 0x42-0x42.7 (1) + 0x0040| 3f 3f 3f | ??? | data: "???" 0x43-0x45.7 (3) + | | | Phone{}: 0x46-0x4b.7 (6) + 0x0040| 0a | . | length: 5 0x46-0x46.7 (1) + 0x0040| 28 32 39 37 29 | (297) | data: "(297)" 0x47-0x4b.7 (5) + 0x0040| 34 | 4 | Age: 26 0x4c-0x4c.7 (1) + | | | [3]{}: data 0x4d-0x61.7 (21) + 0x0040| fa 1b | .. | ID: 1789 0x4d-0x4e.7 (2) + | | | First{}: 0x4f-0x54.7 (6) + 0x0040| 0a| .| length: 5 0x4f-0x4f.7 (1) + 0x0050|44 61 6e 74 65 |Dante | data: "Dante" 0x50-0x54.7 (5) + | | | Last{}: 0x55-0x5a.7 (6) + 0x0050| 0a | . | length: 5 0x55-0x55.7 (1) + 0x0050| 48 69 63 6b 73 | Hicks | data: "Hicks" 0x56-0x5a.7 (5) + | | | Phone{}: 0x5b-0x60.7 (6) + 0x0050| 0a | . | length: 5 0x5b-0x5b.7 (1) + 0x0050| 28 32 39 38| (298| data: "(298)" 0x5c-0x60.7 (5) + 0x0060|29 |) | + 0x0060| 40 | @ | Age: 32 0x61-0x61.7 (1) + | | | [4]{}: data 0x62-0x81.7 (32) + 0x0060| fc 1b | .. | ID: 1790 0x62-0x63.7 (2) + | | | First{}: 0x64-0x6a.7 (7) + 0x0060| 0c | . | length: 6 0x64-0x64.7 (1) + 0x0060| 52 61 6e 64 61 6c | Randal | data: "Randal" 0x65-0x6a.7 (6) + | | | Last{}: 0x6b-0x71.7 (7) + 0x0060| 0c | . | length: 6 0x6b-0x6b.7 (1) + 0x0060| 47 72 61 76| Grav| data: "Graves" 0x6c-0x71.7 (6) + 0x0070|65 73 |es | + | | | Phone{}: 0x72-0x80.7 (15) + 0x0070| 1c | . | length: 14 0x72-0x72.7 (1) + 0x0070| 28 35 35 35 29 20 31 32 33 2d 35 36 37| (555) 123-567| data: "(555) 123-5678" 0x73-0x80.7 (14) + 0x0080|38 |8 | + 0x0080| 3c | < | Age: 30 0x81-0x81.7 (1) + | | | [5:592]: ... +0x01ad0| a0 09 | .. | count: 592 0x1ad6-0x1ad7.7 (2) +0x01ad0| ec 21 | .! | size: 2166 0x1ad8-0x1ad9.7 (2) +0x01ad0| 8d d8 7f 44 ec 7b| ...D.{| compressed: raw bits 0x1ada-0x234f.7 (2166) +0x01ae0|1e c7 f1 ff 8e 75 1c d7 fd bf df bf b8 df 3f 96|.....u........?.| +* |until 0x234f.7 (2166) | | +0x02350|93 e7 87 9e 02 95 d5 9e 4f 58 37 ad b2 a2 ce cd|........OX7.....| sync: raw bits (valid) 0x2350-0x235f.7 (16) + | | | [4]{}: block 0x2360-0x2bda.7 (2171) + | | | data[0:591]: 0x0-0x3fee.7 (16367) + | | | [0]{}: data 0x0-0x1f.7 (32) + 0x0000|94 25 |.% | ID: 2378 0x0-0x1.7 (2) + | | | First{}: 0x2-0x8.7 (7) + 0x0000| 0c | . | length: 6 0x2-0x2.7 (1) + 0x0000| 52 61 6e 64 61 6c | Randal | data: "Randal" 0x3-0x8.7 (6) + | | | Last{}: 0x9-0xf.7 (7) + 0x0000| 0c | . | length: 6 0x9-0x9.7 (1) + 0x0000| 47 72 61 76 65 73| Graves| data: "Graves" 0xa-0xf.7 (6) + | | | Phone{}: 0x10-0x1e.7 (15) + 0x0010|1c |. | length: 14 0x10-0x10.7 (1) + 0x0010| 28 35 35 35 29 20 31 32 33 2d 35 36 37 38 | (555) 123-5678 | data: "(555) 123-5678" 0x11-0x1e.7 (14) + 0x0010| 3c| <| Age: 30 0x1f-0x1f.7 (1) + | | | [1]{}: data 0x20-0x43.7 (36) + 0x0020|96 25 |.% | ID: 2379 0x20-0x21.7 (2) + | | | First{}: 0x22-0x2a.7 (9) + 0x0020| 10 | . | length: 8 0x22-0x22.7 (1) + 0x0020| 56 65 72 6f 6e 69 63 61 | Veronica | data: "Veronica" 0x23-0x2a.7 (8) + | | | Last{}: 0x2b-0x33.7 (9) + 0x0020| 10 | . | length: 8 0x2b-0x2b.7 (1) + 0x0020| 4c 6f 75 67| Loug| data: "Loughran" 0x2c-0x33.7 (8) + 0x0030|68 72 61 6e |hran | + | | | Phone{}: 0x34-0x42.7 (15) + 0x0030| 1c | . | length: 14 0x34-0x34.7 (1) + 0x0030| 28 35 35 35 29 20 31 32 33 2d 30| (555) 123-0| data: "(555) 123-0987" 0x35-0x42.7 (14) + 0x0040|39 38 37 |987 | + 0x0040| 38 | 8 | Age: 28 0x43-0x43.7 (1) + | | | [2]{}: data 0x44-0x62.7 (31) + 0x0040| 98 25 | .% | ID: 2380 0x44-0x45.7 (2) + | | | First{}: 0x46-0x4d.7 (8) + 0x0040| 0e | . | length: 7 0x46-0x46.7 (1) + 0x0040| 43 61 69 74 6c 69 6e | Caitlin | data: "Caitlin" 0x47-0x4d.7 (7) + | | | Last{}: 0x4e-0x52.7 (5) + 0x0040| 08 | . | length: 4 0x4e-0x4e.7 (1) + 0x0040| 42| B| data: "Bree" 0x4f-0x52.7 (4) + 0x0050|72 65 65 |ree | + | | | Phone{}: 0x53-0x61.7 (15) + 0x0050| 1c | . | length: 14 0x53-0x53.7 (1) + 0x0050| 28 35 35 35 29 20 31 32 33 2d 32 33| (555) 123-23| data: "(555) 123-2323" 0x54-0x61.7 (14) + 0x0060|32 33 |23 | + 0x0060| 36 | 6 | Age: 27 0x62-0x62.7 (1) + | | | [3]{}: data 0x63-0x7f.7 (29) + 0x0060| 9a 25 | .% | ID: 2381 0x63-0x64.7 (2) + | | | First{}: 0x65-0x68.7 (4) + 0x0060| 06 | . | length: 3 0x65-0x65.7 (1) + 0x0060| 42 6f 62 | Bob | data: "Bob" 0x66-0x68.7 (3) + | | | Last{}: 0x69-0x6f.7 (7) + 0x0060| 0c | . | length: 6 0x69-0x69.7 (1) + 0x0060| 53 69 6c 65 6e 74| Silent| data: "Silent" 0x6a-0x6f.7 (6) + | | | Phone{}: 0x70-0x7e.7 (15) + 0x0070|1c |. | length: 14 0x70-0x70.7 (1) + 0x0070| 28 35 35 35 29 20 31 32 33 2d 36 34 32 32 | (555) 123-6422 | data: "(555) 123-6422" 0x71-0x7e.7 (14) + 0x0070| 3a| :| Age: 29 0x7f-0x7f.7 (1) + | | | [4]{}: data 0x80-0x90.7 (17) + 0x0080|9c 25 |.% | ID: 2382 0x80-0x81.7 (2) + | | | First{}: 0x82-0x85.7 (4) + 0x0080| 06 | . | length: 3 0x82-0x82.7 (1) + 0x0080| 4a 61 79 | Jay | data: "Jay" 0x83-0x85.7 (3) + | | | Last{}: 0x86-0x89.7 (4) + 0x0080| 06 | . | length: 3 0x86-0x86.7 (1) + 0x0080| 3f 3f 3f | ??? | data: "???" 0x87-0x89.7 (3) + | | | Phone{}: 0x8a-0x8f.7 (6) + 0x0080| 0a | . | length: 5 0x8a-0x8a.7 (1) + 0x0080| 28 33 39 36 29| (396)| data: "(396)" 0x8b-0x8f.7 (5) + 0x0090|34 |4 | Age: 26 0x90-0x90.7 (1) + | | | [5:591]: ... +0x02360|9e 09 |.. | count: 591 0x2360-0x2361.7 (2) +0x02360| ce 21 | .! | size: 2151 0x2362-0x2363.7 (2) +0x02360| 8d d8 df 47 ec fb 1e c7 f1 bb 65 5b| ...G......e[| compressed: raw bits 0x2364-0x2bca.7 (2151) +0x02370|96 6d ff 01 e7 e2 dc f4 e3 db 2f 6b d5 b7 5f c7|.m......../k.._.| +* |until 0x2bca.7 (2151) | | +0x02bc0| 93 e7 87 9e 02| .....| sync: raw bits (valid) 0x2bcb-0x2bda.7 (16) +0x02bd0|95 d5 9e 4f 58 37 ad b2 a2 ce cd |...OX7..... | + | | | [5:12]: ... diff --git a/format/avro/testdata/snappy.fqtest b/format/avro/testdata/snappy.fqtest index 0ec497a2..80bdfead 100644 --- a/format/avro/testdata/snappy.fqtest +++ b/format/avro/testdata/snappy.fqtest @@ -1,13 +1,676 @@ # Generated using https://gist.github.com/xentripetal/c0f1645ee1abd4d25f71896c8d650543 -$ fq '.blocks[0]' snappy.avro - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.blocks[0]{}: - 0x000|01 0e 42 00 00 00 00 92 24 49 92 24 49 f2 3f 02|..B.....$I.$I.?.| data[0:10]: - * |until 0x307.7 (end) (776) | | -0x0420|14 |. | count: 10 -0x0420| 8c 08 | .. | size: 518 -0x0420| 88 06 f0 52 01 0e 42 00 00 00 00 92 24| ...R..B.....$| compressed: raw bits +$ fq 'dv({array_truncate: 25})' snappy.avro + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: snappy.avro (avro_ocf) 0x0-0x638.7 (1593) +0x0000|4f 62 6a 01 |Obj. | magic: raw bits (valid) 0x0-0x3.7 (4) + | | | header{}: 0x4-0x41f.7 (1052) + | | | meta[0:2]: 0x4-0x40f.7 (1036) + | | | [0]{}: block 0x4-0x40e.7 (1035) +0x0000| 04 | . | count: 2 0x4-0x4.7 (1) + | | | data[0:2]: 0x5-0x40e.7 (1034) + | | | [0]{}: entry 0x5-0x3fc.7 (1016) + | | | key{}: 0x5-0x10.7 (12) +0x0000| 16 | . | length: 11 0x5-0x5.7 (1) +0x0000| 61 76 72 6f 2e 73 63 68 65 6d| avro.schem| data: "avro.schema" 0x6-0x10.7 (11) +0x0010|61 |a | + | | | value{}: 0x11-0x3fc.7 (1004) +0x0010| d4 0f | .. | length: 1002 0x11-0x12.7 (2) +0x0010| 7b 22 66 69 65 6c 64 73 22 3a 5b 7b 22| {"fields":[{"| data: "{\"fields\":[{\"name\":\"null\",\"type\":\"null\"},{\"name\":\""... 0x13-0x3fc.7 (1002) +0x0020|6e 61 6d 65 22 3a 22 6e 75 6c 6c 22 2c 22 74 79|name":"null","ty| +* |until 0x3fc.7 (1002) | | + | | | [1]{}: entry 0x3fd-0x40e.7 (18) + | | | key{}: 0x3fd-0x407.7 (11) +0x03f0| 14 | . | length: 10 0x3fd-0x3fd.7 (1) +0x03f0| 61 76| av| data: "avro.codec" 0x3fe-0x407.7 (10) +0x0400|72 6f 2e 63 6f 64 65 63 |ro.codec | + | | | value{}: 0x408-0x40e.7 (7) +0x0400| 0c | . | length: 6 0x408-0x408.7 (1) +0x0400| 73 6e 61 70 70 79 | snappy | data: "snappy" 0x409-0x40e.7 (6) + | | | [1]{}: block 0x40f-0x40f.7 (1) +0x0400| 00| .| count: 0 0x40f-0x40f.7 (1) + | | | data[0:0]: 0x410-NA (0) +0x0410|cc cc 61 31 fd 14 d0 61 16 b6 0f 9d 30 f4 1b f0|..a1...a....0...| sync: raw bits 0x410-0x41f.7 (16) + | | | blocks[0:1]: 0x420-0x638.7 (537) + | | | [0]{}: block 0x420-0x638.7 (537) + | | | data[0:10]: 0x0-0x307.7 (776) + | | | [0]{}: data 0x0-0x4a.7 (75) + | | | null: null 0x0-NA (0) + 0x000|01 |. | boolean: true 0x0-0x0.7 (1) + 0x000| 0e | . | int: 7 0x1-0x1.7 (1) + 0x000| 42 | B | long: 33 0x2-0x2.7 (1) + 0x000| 00 00 00 00 | .... | float: 0 0x3-0x6.7 (4) + 0x000| 92 24 49 92 24 49 f2 3f | .$I.$I.? | double: -2.8062043420318885e-221 0x7-0xe.7 (8) + | | | bytes{}: 0xf-0x10.7 (2) + 0x000| 02| .| length: 1 0xf-0xf.7 (1) + 0x010|39 |9 | data: raw bits 0x10-0x10.7 (1) + | | | string{}: 0x11-0x13.7 (3) + 0x010| 04 | . | length: 2 0x11-0x11.7 (1) + 0x010| 31 30 | 10 | data: "10" 0x12-0x13.7 (2) + 0x010| 00 | . | enum: "A" (0) 0x14-0x14.7 (1) + | | | array[0:1]: 0x15-0x15.7 (1) + | | | [0]{}: block 0x15-0x15.7 (1) + 0x010| 00 | . | count: 0 0x15-0x15.7 (1) + | | | data[0:0]: 0x16-NA (0) + | | | map[0:2]: 0x16-0x23.7 (14) + | | | [0]{}: block 0x16-0x22.7 (13) + 0x010| 06 | . | count: 3 0x16-0x16.7 (1) + | | | data[0:3]: 0x17-0x22.7 (12) + | | | [0]{}: entry 0x17-0x1a.7 (4) + | | | key{}: 0x17-0x18.7 (2) + 0x010| 02 | . | length: 1 0x17-0x17.7 (1) + 0x010| 61 | a | data: "a" 0x18-0x18.7 (1) + | | | value{}: 0x19-0x1a.7 (2) + 0x010| 02 | . | length: 1 0x19-0x19.7 (1) + 0x010| 41 | A | data: "A" 0x1a-0x1a.7 (1) + | | | [1]{}: entry 0x1b-0x1e.7 (4) + | | | key{}: 0x1b-0x1c.7 (2) + 0x010| 02 | . | length: 1 0x1b-0x1b.7 (1) + 0x010| 62 | b | data: "b" 0x1c-0x1c.7 (1) + | | | value{}: 0x1d-0x1e.7 (2) + 0x010| 02 | . | length: 1 0x1d-0x1d.7 (1) + 0x010| 42 | B | data: "B" 0x1e-0x1e.7 (1) + | | | [2]{}: entry 0x1f-0x22.7 (4) + | | | key{}: 0x1f-0x20.7 (2) + 0x010| 02| .| length: 1 0x1f-0x1f.7 (1) + 0x020|63 |c | data: "c" 0x20-0x20.7 (1) + | | | value{}: 0x21-0x22.7 (2) + 0x020| 02 | . | length: 1 0x21-0x21.7 (1) + 0x020| 43 | C | data: "C" 0x22-0x22.7 (1) + | | | [1]{}: block 0x23-0x23.7 (1) + 0x020| 00 | . | count: 0 0x23-0x23.7 (1) + | | | data[0:0]: 0x24-NA (0) + | | | union{}: 0x24-0x26.7 (3) + 0x020| 02 | . | type: 1 0x24-0x24.7 (1) + | | | value{}: 0x25-0x26.7 (2) + 0x020| 02 | . | length: 1 0x25-0x25.7 (1) + 0x020| 30 | 0 | data: "0" 0x26-0x26.7 (1) + 0x020| 00 01 02 03 04 05 06 07 08| .........| fixed: raw bits 0x27-0x36.7 (16) + 0x030|09 0a 0b 0c 0d 0e 0f |....... | + 0x030| 0c | . | date: "1970-01-06" (6) 0x37-0x37.7 (1) + 0x030| c0 a9 07 | ... | timeMillis: "00:01:00.000" (60000) 0x38-0x3a.7 (3) + 0x030| e0 5d | .] | timeMicros: "00:00:00.006000" (6000) 0x3b-0x3c.7 (2) + 0x030| c0 d9 84| ...| timestampMillis: "2000-01-01T00:01:00Z" (946684860000) 0x3d-0x42.7 (6) + 0x040|ad 8d 37 |..7 | + 0x040| e0 dd bf b3 a7 c0 ae 03 | ........ | timestampMicros: "2000-01-01T00:00:00.006Z" (946684800006000) 0x43-0x4a.7 (8) + | | | [1]{}: data 0x4b-0x98.7 (78) + | | | null: null 0x4b-NA (0) + 0x040| 00 | . | boolean: false 0x4b-0x4b.7 (1) + 0x040| 0c | . | int: 6 0x4c-0x4c.7 (1) + 0x040| 40 | @ | long: 32 0x4d-0x4d.7 (1) + 0x040| ab aa| ..| float: -1.2126478207002966e-12 0x4e-0x51.7 (4) + 0x050|aa 3e |.> | + 0x050| 25 49 92 24 49 92 f4 3f | %I.$I..? | double: 4.61123556404525e-129 0x52-0x59.7 (8) + | | | bytes{}: 0x5a-0x5b.7 (2) + 0x050| 02 | . | length: 1 0x5a-0x5a.7 (1) + 0x050| 38 | 8 | data: raw bits 0x5b-0x5b.7 (1) + | | | string{}: 0x5c-0x5e.7 (3) + 0x050| 04 | . | length: 2 0x5c-0x5c.7 (1) + 0x050| 31 31 | 11 | data: "11" 0x5d-0x5e.7 (2) + 0x050| 02| .| enum: "B" (1) 0x5f-0x5f.7 (1) + | | | array[0:2]: 0x60-0x63.7 (4) + | | | [0]{}: block 0x60-0x62.7 (3) + 0x060|02 |. | count: 1 0x60-0x60.7 (1) + | | | data[0:1]: 0x61-0x62.7 (2) + | | | [0]{}: entry 0x61-0x62.7 (2) + 0x060| 02 | . | length: 1 0x61-0x61.7 (1) + 0x060| 61 | a | data: "a" 0x62-0x62.7 (1) + | | | [1]{}: block 0x63-0x63.7 (1) + 0x060| 00 | . | count: 0 0x63-0x63.7 (1) + | | | data[0:0]: 0x64-NA (0) + | | | map[0:2]: 0x64-0x71.7 (14) + | | | [0]{}: block 0x64-0x70.7 (13) + 0x060| 06 | . | count: 3 0x64-0x64.7 (1) + | | | data[0:3]: 0x65-0x70.7 (12) + | | | [0]{}: entry 0x65-0x68.7 (4) + | | | key{}: 0x65-0x66.7 (2) + 0x060| 02 | . | length: 1 0x65-0x65.7 (1) + 0x060| 61 | a | data: "a" 0x66-0x66.7 (1) + | | | value{}: 0x67-0x68.7 (2) + 0x060| 02 | . | length: 1 0x67-0x67.7 (1) + 0x060| 41 | A | data: "A" 0x68-0x68.7 (1) + | | | [1]{}: entry 0x69-0x6c.7 (4) + | | | key{}: 0x69-0x6a.7 (2) + 0x060| 02 | . | length: 1 0x69-0x69.7 (1) + 0x060| 62 | b | data: "b" 0x6a-0x6a.7 (1) + | | | value{}: 0x6b-0x6c.7 (2) + 0x060| 02 | . | length: 1 0x6b-0x6b.7 (1) + 0x060| 42 | B | data: "B" 0x6c-0x6c.7 (1) + | | | [2]{}: entry 0x6d-0x70.7 (4) + | | | key{}: 0x6d-0x6e.7 (2) + 0x060| 02 | . | length: 1 0x6d-0x6d.7 (1) + 0x060| 63 | c | data: "c" 0x6e-0x6e.7 (1) + | | | value{}: 0x6f-0x70.7 (2) + 0x060| 02| .| length: 1 0x6f-0x6f.7 (1) + 0x070|43 |C | data: "C" 0x70-0x70.7 (1) + | | | [1]{}: block 0x71-0x71.7 (1) + 0x070| 00 | . | count: 0 0x71-0x71.7 (1) + | | | data[0:0]: 0x72-NA (0) + | | | union{}: 0x72-0x74.7 (3) + 0x070| 02 | . | type: 1 0x72-0x72.7 (1) + | | | value{}: 0x73-0x74.7 (2) + 0x070| 02 | . | length: 1 0x73-0x73.7 (1) + 0x070| 31 | 1 | data: "1" 0x74-0x74.7 (1) + 0x070| 00 01 02 03 04 05 06 07 08 09 0a| ...........| fixed: raw bits 0x75-0x84.7 (16) + 0x080|0b 0c 0d 0e 0f |..... | + 0x080| 0e | . | date: "1970-01-07" (7) 0x85-0x85.7 (1) + 0x080| c2 a9 07 | ... | timeMillis: "00:01:00.001" (60001) 0x86-0x88.7 (3) + 0x080| dd 5d | .] | timeMicros: "23:59:59.994001" (-5999) 0x89-0x8a.7 (2) + 0x080| c2 c9 b7 ff 8d| .....| timestampMillis: "2000-01-02T00:01:00.001Z" (946771260001) 0x8b-0x90.7 (6) + 0x090|37 |7 | + 0x090| a2 a2 f9 90 ab c5 ae 03 | ........ | timestampMicros: "2000-01-01T23:59:59.994001Z" (946771199994001) 0x91-0x98.7 (8) + | | | [2]{}: data 0x99-0xe8.7 (80) + | | | null: null 0x99-NA (0) + 0x090| 01 | . | boolean: true 0x99-0x99.7 (1) + 0x090| 0a | . | int: 5 0x9a-0x9a.7 (1) + 0x090| 46 | F | long: 35 0x9b-0x9b.7 (1) + 0x090| ab aa 2a 3f| ..*?| float: -1.2090952154417134e-12 0x9c-0x9f.7 (4) + 0x0a0|b7 6d db b6 6d db f6 3f |.m..m..? | double: -1.071112274748446e-41 0xa0-0xa7.7 (8) + | | | bytes{}: 0xa8-0xaa.7 (3) + 0x0a0| 04 | . | length: 2 0xa8-0xa8.7 (1) + 0x0a0| 31 31 | 11 | data: raw bits 0xa9-0xaa.7 (2) + | | | string{}: 0xab-0xac.7 (2) + 0x0a0| 02 | . | length: 1 0xab-0xab.7 (1) + 0x0a0| 38 | 8 | data: "8" 0xac-0xac.7 (1) + 0x0a0| 04 | . | enum: "C" (2) 0xad-0xad.7 (1) + | | | array[0:2]: 0xae-0xb3.7 (6) + | | | [0]{}: block 0xae-0xb2.7 (5) + 0x0a0| 04 | . | count: 2 0xae-0xae.7 (1) + | | | data[0:2]: 0xaf-0xb2.7 (4) + | | | [0]{}: entry 0xaf-0xb0.7 (2) + 0x0a0| 02| .| length: 1 0xaf-0xaf.7 (1) + 0x0b0|61 |a | data: "a" 0xb0-0xb0.7 (1) + | | | [1]{}: entry 0xb1-0xb2.7 (2) + 0x0b0| 02 | . | length: 1 0xb1-0xb1.7 (1) + 0x0b0| 62 | b | data: "b" 0xb2-0xb2.7 (1) + | | | [1]{}: block 0xb3-0xb3.7 (1) + 0x0b0| 00 | . | count: 0 0xb3-0xb3.7 (1) + | | | data[0:0]: 0xb4-NA (0) + | | | map[0:2]: 0xb4-0xc1.7 (14) + | | | [0]{}: block 0xb4-0xc0.7 (13) + 0x0b0| 06 | . | count: 3 0xb4-0xb4.7 (1) + | | | data[0:3]: 0xb5-0xc0.7 (12) + | | | [0]{}: entry 0xb5-0xb8.7 (4) + | | | key{}: 0xb5-0xb6.7 (2) + 0x0b0| 02 | . | length: 1 0xb5-0xb5.7 (1) + 0x0b0| 61 | a | data: "a" 0xb6-0xb6.7 (1) + | | | value{}: 0xb7-0xb8.7 (2) + 0x0b0| 02 | . | length: 1 0xb7-0xb7.7 (1) + 0x0b0| 41 | A | data: "A" 0xb8-0xb8.7 (1) + | | | [1]{}: entry 0xb9-0xbc.7 (4) + | | | key{}: 0xb9-0xba.7 (2) + 0x0b0| 02 | . | length: 1 0xb9-0xb9.7 (1) + 0x0b0| 62 | b | data: "b" 0xba-0xba.7 (1) + | | | value{}: 0xbb-0xbc.7 (2) + 0x0b0| 02 | . | length: 1 0xbb-0xbb.7 (1) + 0x0b0| 42 | B | data: "B" 0xbc-0xbc.7 (1) + | | | [2]{}: entry 0xbd-0xc0.7 (4) + | | | key{}: 0xbd-0xbe.7 (2) + 0x0b0| 02 | . | length: 1 0xbd-0xbd.7 (1) + 0x0b0| 63 | c | data: "c" 0xbe-0xbe.7 (1) + | | | value{}: 0xbf-0xc0.7 (2) + 0x0b0| 02| .| length: 1 0xbf-0xbf.7 (1) + 0x0c0|43 |C | data: "C" 0xc0-0xc0.7 (1) + | | | [1]{}: block 0xc1-0xc1.7 (1) + 0x0c0| 00 | . | count: 0 0xc1-0xc1.7 (1) + | | | data[0:0]: 0xc2-NA (0) + | | | union{}: 0xc2-0xc4.7 (3) + 0x0c0| 02 | . | type: 1 0xc2-0xc2.7 (1) + | | | value{}: 0xc3-0xc4.7 (2) + 0x0c0| 02 | . | length: 1 0xc3-0xc3.7 (1) + 0x0c0| 32 | 2 | data: "2" 0xc4-0xc4.7 (1) + 0x0c0| 00 01 02 03 04 05 06 07 08 09 0a| ...........| fixed: raw bits 0xc5-0xd4.7 (16) + 0x0d0|0b 0c 0d 0e 0f |..... | + 0x0d0| 08 | . | date: "1970-01-04" (4) 0xd5-0xd5.7 (1) + 0x0d0| c4 a9 07 | ... | timeMillis: "00:01:00.002" (60002) 0xd6-0xd8.7 (3) + 0x0d0| e4 5d | .] | timeMicros: "00:00:00.006002" (6002) 0xd9-0xda.7 (2) + 0x0d0| c4 b9 ea d1 8e| .....| timestampMillis: "2000-01-03T00:01:00.002Z" (946857660002) 0xdb-0xe0.7 (6) + 0x0e0|37 |7 | + 0x0e0| e4 dd b5 ee ae ca ae 03 | ........ | timestampMicros: "2000-01-03T00:00:00.006002Z" (946857600006002) 0xe1-0xe8.7 (8) + | | | [3]{}: data 0xe9-0x133.7 (75) + | | | null: null 0xe9-NA (0) + 0x0e0| 00 | . | boolean: false 0xe9-0xe9.7 (1) + 0x0e0| 08 | . | int: 4 0xea-0xea.7 (1) + 0x0e0| 44 | D | long: 34 0xeb-0xeb.7 (1) + 0x0e0| 00 00 80 3f| ...?| float: 4.600602988224807e-41 0xec-0xef.7 (4) + 0x0f0|49 92 24 49 92 24 f9 3f |I.$I.$.? | double: 2.5892767407305293e+46 0xf0-0xf7.7 (8) + | | | bytes{}: 0xf8-0xfa.7 (3) + 0x0f0| 04 | . | length: 2 0xf8-0xf8.7 (1) + 0x0f0| 31 30 | 10 | data: raw bits 0xf9-0xfa.7 (2) + | | | string{}: 0xfb-0xfc.7 (2) + 0x0f0| 02 | . | length: 1 0xfb-0xfb.7 (1) + 0x0f0| 39 | 9 | data: "9" 0xfc-0xfc.7 (1) + 0x0f0| 00 | . | enum: "A" (0) 0xfd-0xfd.7 (1) + | | | array[0:1]: 0xfe-0xfe.7 (1) + | | | [0]{}: block 0xfe-0xfe.7 (1) + 0x0f0| 00 | . | count: 0 0xfe-0xfe.7 (1) + | | | data[0:0]: 0xff-NA (0) + | | | map[0:2]: 0xff-0x10c.7 (14) + | | | [0]{}: block 0xff-0x10b.7 (13) + 0x0f0| 06| .| count: 3 0xff-0xff.7 (1) + | | | data[0:3]: 0x100-0x10b.7 (12) + | | | [0]{}: entry 0x100-0x103.7 (4) + | | | key{}: 0x100-0x101.7 (2) + 0x100|02 |. | length: 1 0x100-0x100.7 (1) + 0x100| 61 | a | data: "a" 0x101-0x101.7 (1) + | | | value{}: 0x102-0x103.7 (2) + 0x100| 02 | . | length: 1 0x102-0x102.7 (1) + 0x100| 41 | A | data: "A" 0x103-0x103.7 (1) + | | | [1]{}: entry 0x104-0x107.7 (4) + | | | key{}: 0x104-0x105.7 (2) + 0x100| 02 | . | length: 1 0x104-0x104.7 (1) + 0x100| 62 | b | data: "b" 0x105-0x105.7 (1) + | | | value{}: 0x106-0x107.7 (2) + 0x100| 02 | . | length: 1 0x106-0x106.7 (1) + 0x100| 42 | B | data: "B" 0x107-0x107.7 (1) + | | | [2]{}: entry 0x108-0x10b.7 (4) + | | | key{}: 0x108-0x109.7 (2) + 0x100| 02 | . | length: 1 0x108-0x108.7 (1) + 0x100| 63 | c | data: "c" 0x109-0x109.7 (1) + | | | value{}: 0x10a-0x10b.7 (2) + 0x100| 02 | . | length: 1 0x10a-0x10a.7 (1) + 0x100| 43 | C | data: "C" 0x10b-0x10b.7 (1) + | | | [1]{}: block 0x10c-0x10c.7 (1) + 0x100| 00 | . | count: 0 0x10c-0x10c.7 (1) + | | | data[0:0]: 0x10d-NA (0) + | | | union{}: 0x10d-0x10f.7 (3) + 0x100| 02 | . | type: 1 0x10d-0x10d.7 (1) + | | | value{}: 0x10e-0x10f.7 (2) + 0x100| 02 | . | length: 1 0x10e-0x10e.7 (1) + 0x100| 33| 3| data: "3" 0x10f-0x10f.7 (1) + 0x110|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|................| fixed: raw bits 0x110-0x11f.7 (16) + 0x120|0a |. | date: "1970-01-05" (5) 0x120-0x120.7 (1) + 0x120| c6 a9 07 | ... | timeMillis: "00:01:00.003" (60003) 0x121-0x123.7 (3) + 0x120| d9 5d | .] | timeMicros: "23:59:59.994003" (-5997) 0x124-0x125.7 (2) + 0x120| c6 a9 9d a4 8f 37 | .....7 | timestampMillis: "2000-01-04T00:01:00.003Z" (946944060003) 0x126-0x12b.7 (6) + 0x120| a6 a2 ef cb| ....| timestampMicros: "2000-01-03T23:59:59.994003Z" (946943999994003) 0x12c-0x133.7 (8) + 0x130|b2 cf ae 03 |.... | + | | | [4]{}: data 0x134-0x182.7 (79) + | | | null: null 0x134-NA (0) + 0x130| 01 | . | boolean: true 0x134-0x134.7 (1) + 0x130| 06 | . | int: 3 0x135-0x135.7 (1) + 0x130| 4a | J | long: 37 0x136-0x136.7 (1) + 0x130| ab aa aa 3f | ...? | float: -1.2126479291205139e-12 0x137-0x13a.7 (4) + 0x130| db b6 6d db b6| ..m..| double: -6.368110545752354e+133 0x13b-0x142.7 (8) + 0x140|6d fb 3f |m.? | + | | | bytes{}: 0x143-0x145.7 (3) + 0x140| 04 | . | length: 2 0x143-0x143.7 (1) + 0x140| 31 33 | 13 | data: raw bits 0x144-0x145.7 (2) + | | | string{}: 0x146-0x148.7 (3) + 0x140| 04 | . | length: 2 0x146-0x146.7 (1) + 0x140| 31 34 | 14 | data: "14" 0x147-0x148.7 (2) + 0x140| 02 | . | enum: "B" (1) 0x149-0x149.7 (1) + | | | array[0:2]: 0x14a-0x14d.7 (4) + | | | [0]{}: block 0x14a-0x14c.7 (3) + 0x140| 02 | . | count: 1 0x14a-0x14a.7 (1) + | | | data[0:1]: 0x14b-0x14c.7 (2) + | | | [0]{}: entry 0x14b-0x14c.7 (2) + 0x140| 02 | . | length: 1 0x14b-0x14b.7 (1) + 0x140| 61 | a | data: "a" 0x14c-0x14c.7 (1) + | | | [1]{}: block 0x14d-0x14d.7 (1) + 0x140| 00 | . | count: 0 0x14d-0x14d.7 (1) + | | | data[0:0]: 0x14e-NA (0) + | | | map[0:2]: 0x14e-0x15b.7 (14) + | | | [0]{}: block 0x14e-0x15a.7 (13) + 0x140| 06 | . | count: 3 0x14e-0x14e.7 (1) + | | | data[0:3]: 0x14f-0x15a.7 (12) + | | | [0]{}: entry 0x14f-0x152.7 (4) + | | | key{}: 0x14f-0x150.7 (2) + 0x140| 02| .| length: 1 0x14f-0x14f.7 (1) + 0x150|61 |a | data: "a" 0x150-0x150.7 (1) + | | | value{}: 0x151-0x152.7 (2) + 0x150| 02 | . | length: 1 0x151-0x151.7 (1) + 0x150| 41 | A | data: "A" 0x152-0x152.7 (1) + | | | [1]{}: entry 0x153-0x156.7 (4) + | | | key{}: 0x153-0x154.7 (2) + 0x150| 02 | . | length: 1 0x153-0x153.7 (1) + 0x150| 62 | b | data: "b" 0x154-0x154.7 (1) + | | | value{}: 0x155-0x156.7 (2) + 0x150| 02 | . | length: 1 0x155-0x155.7 (1) + 0x150| 42 | B | data: "B" 0x156-0x156.7 (1) + | | | [2]{}: entry 0x157-0x15a.7 (4) + | | | key{}: 0x157-0x158.7 (2) + 0x150| 02 | . | length: 1 0x157-0x157.7 (1) + 0x150| 63 | c | data: "c" 0x158-0x158.7 (1) + | | | value{}: 0x159-0x15a.7 (2) + 0x150| 02 | . | length: 1 0x159-0x159.7 (1) + 0x150| 43 | C | data: "C" 0x15a-0x15a.7 (1) + | | | [1]{}: block 0x15b-0x15b.7 (1) + 0x150| 00 | . | count: 0 0x15b-0x15b.7 (1) + | | | data[0:0]: 0x15c-NA (0) + | | | union{}: 0x15c-0x15e.7 (3) + 0x150| 02 | . | type: 1 0x15c-0x15c.7 (1) + | | | value{}: 0x15d-0x15e.7 (2) + 0x150| 02 | . | length: 1 0x15d-0x15d.7 (1) + 0x150| 34 | 4 | data: "4" 0x15e-0x15e.7 (1) + 0x150| 00| .| fixed: raw bits 0x15f-0x16e.7 (16) + 0x160|01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |............... | + 0x160| 04| .| date: "1970-01-02" (2) 0x16f-0x16f.7 (1) + 0x170|c8 a9 07 |... | timeMillis: "00:01:00.004" (60004) 0x170-0x172.7 (3) + 0x170| e8 5d | .] | timeMicros: "00:00:00.006004" (6004) 0x173-0x174.7 (2) + 0x170| c8 99 d0 f6 8f 37 | .....7 | timestampMillis: "2000-01-05T00:01:00.004Z" (947030460004) 0x175-0x17a.7 (6) + 0x170| e8 dd ab a9 b6| .....| timestampMicros: "2000-01-05T00:00:00.006004Z" (947030400006004) 0x17b-0x182.7 (8) + 0x180|d4 ae 03 |... | + | | | [5]{}: data 0x183-0x1d3.7 (81) + | | | null: null 0x183-NA (0) + 0x180| 00 | . | boolean: false 0x183-0x183.7 (1) + 0x180| 04 | . | int: 2 0x184-0x184.7 (1) + 0x180| 48 | H | long: 36 0x185-0x185.7 (1) + 0x180| 55 55 d5 3f | UU.? | float: 1.4694491357184e+13 0x186-0x189.7 (4) + 0x180| 6e db b6 6d db b6| n..m..| double: 1.0257800654339733e+226 0x18a-0x191.7 (8) + 0x190|fd 3f |.? | + | | | bytes{}: 0x192-0x194.7 (3) + 0x190| 04 | . | length: 2 0x192-0x192.7 (1) + 0x190| 31 32 | 12 | data: raw bits 0x193-0x194.7 (2) + | | | string{}: 0x195-0x197.7 (3) + 0x190| 04 | . | length: 2 0x195-0x195.7 (1) + 0x190| 31 35 | 15 | data: "15" 0x196-0x197.7 (2) + 0x190| 04 | . | enum: "C" (2) 0x198-0x198.7 (1) + | | | array[0:2]: 0x199-0x19e.7 (6) + | | | [0]{}: block 0x199-0x19d.7 (5) + 0x190| 04 | . | count: 2 0x199-0x199.7 (1) + | | | data[0:2]: 0x19a-0x19d.7 (4) + | | | [0]{}: entry 0x19a-0x19b.7 (2) + 0x190| 02 | . | length: 1 0x19a-0x19a.7 (1) + 0x190| 61 | a | data: "a" 0x19b-0x19b.7 (1) + | | | [1]{}: entry 0x19c-0x19d.7 (2) + 0x190| 02 | . | length: 1 0x19c-0x19c.7 (1) + 0x190| 62 | b | data: "b" 0x19d-0x19d.7 (1) + | | | [1]{}: block 0x19e-0x19e.7 (1) + 0x190| 00 | . | count: 0 0x19e-0x19e.7 (1) + | | | data[0:0]: 0x19f-NA (0) + | | | map[0:2]: 0x19f-0x1ac.7 (14) + | | | [0]{}: block 0x19f-0x1ab.7 (13) + 0x190| 06| .| count: 3 0x19f-0x19f.7 (1) + | | | data[0:3]: 0x1a0-0x1ab.7 (12) + | | | [0]{}: entry 0x1a0-0x1a3.7 (4) + | | | key{}: 0x1a0-0x1a1.7 (2) + 0x1a0|02 |. | length: 1 0x1a0-0x1a0.7 (1) + 0x1a0| 61 | a | data: "a" 0x1a1-0x1a1.7 (1) + | | | value{}: 0x1a2-0x1a3.7 (2) + 0x1a0| 02 | . | length: 1 0x1a2-0x1a2.7 (1) + 0x1a0| 41 | A | data: "A" 0x1a3-0x1a3.7 (1) + | | | [1]{}: entry 0x1a4-0x1a7.7 (4) + | | | key{}: 0x1a4-0x1a5.7 (2) + 0x1a0| 02 | . | length: 1 0x1a4-0x1a4.7 (1) + 0x1a0| 62 | b | data: "b" 0x1a5-0x1a5.7 (1) + | | | value{}: 0x1a6-0x1a7.7 (2) + 0x1a0| 02 | . | length: 1 0x1a6-0x1a6.7 (1) + 0x1a0| 42 | B | data: "B" 0x1a7-0x1a7.7 (1) + | | | [2]{}: entry 0x1a8-0x1ab.7 (4) + | | | key{}: 0x1a8-0x1a9.7 (2) + 0x1a0| 02 | . | length: 1 0x1a8-0x1a8.7 (1) + 0x1a0| 63 | c | data: "c" 0x1a9-0x1a9.7 (1) + | | | value{}: 0x1aa-0x1ab.7 (2) + 0x1a0| 02 | . | length: 1 0x1aa-0x1aa.7 (1) + 0x1a0| 43 | C | data: "C" 0x1ab-0x1ab.7 (1) + | | | [1]{}: block 0x1ac-0x1ac.7 (1) + 0x1a0| 00 | . | count: 0 0x1ac-0x1ac.7 (1) + | | | data[0:0]: 0x1ad-NA (0) + | | | union{}: 0x1ad-0x1af.7 (3) + 0x1a0| 02 | . | type: 1 0x1ad-0x1ad.7 (1) + | | | value{}: 0x1ae-0x1af.7 (2) + 0x1a0| 02 | . | length: 1 0x1ae-0x1ae.7 (1) + 0x1a0| 35| 5| data: "5" 0x1af-0x1af.7 (1) + 0x1b0|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|................| fixed: raw bits 0x1b0-0x1bf.7 (16) + 0x1c0|06 |. | date: "1970-01-03" (3) 0x1c0-0x1c0.7 (1) + 0x1c0| ca a9 07 | ... | timeMillis: "00:01:00.005" (60005) 0x1c1-0x1c3.7 (3) + 0x1c0| d5 5d | .] | timeMicros: "23:59:59.994005" (-5995) 0x1c4-0x1c5.7 (2) + 0x1c0| ca 89 83 c9 90 37 | .....7 | timestampMillis: "2000-01-06T00:01:00.005Z" (947116860005) 0x1c6-0x1cb.7 (6) + 0x1c0| aa a2 e5 86| ....| timestampMicros: "2000-01-05T23:59:59.994005Z" (947116799994005) 0x1cc-0x1d3.7 (8) + 0x1d0|ba d9 ae 03 |.... | + | | | [6]{}: data 0x1d4-0x21f.7 (76) + | | | null: null 0x1d4-NA (0) + 0x1d0| 01 | . | boolean: true 0x1d4-0x1d4.7 (1) + 0x1d0| 02 | . | int: 1 0x1d5-0x1d5.7 (1) + 0x1d0| 4e | N | long: 39 0x1d6-0x1d6.7 (1) + 0x1d0| 00 00 00 40 | ...@ | float: 8.96831017167883e-44 0x1d7-0x1da.7 (4) + 0x1d0| 00 00 00 00 00| .....| double: 3.16e-322 0x1db-0x1e2.7 (8) + 0x1e0|00 00 40 |..@ | + | | | bytes{}: 0x1e3-0x1e5.7 (3) + 0x1e0| 04 | . | length: 2 0x1e3-0x1e3.7 (1) + 0x1e0| 31 35 | 15 | data: raw bits 0x1e4-0x1e5.7 (2) + | | | string{}: 0x1e6-0x1e8.7 (3) + 0x1e0| 04 | . | length: 2 0x1e6-0x1e6.7 (1) + 0x1e0| 31 32 | 12 | data: "12" 0x1e7-0x1e8.7 (2) + 0x1e0| 00 | . | enum: "A" (0) 0x1e9-0x1e9.7 (1) + | | | array[0:1]: 0x1ea-0x1ea.7 (1) + | | | [0]{}: block 0x1ea-0x1ea.7 (1) + 0x1e0| 00 | . | count: 0 0x1ea-0x1ea.7 (1) + | | | data[0:0]: 0x1eb-NA (0) + | | | map[0:2]: 0x1eb-0x1f8.7 (14) + | | | [0]{}: block 0x1eb-0x1f7.7 (13) + 0x1e0| 06 | . | count: 3 0x1eb-0x1eb.7 (1) + | | | data[0:3]: 0x1ec-0x1f7.7 (12) + | | | [0]{}: entry 0x1ec-0x1ef.7 (4) + | | | key{}: 0x1ec-0x1ed.7 (2) + 0x1e0| 02 | . | length: 1 0x1ec-0x1ec.7 (1) + 0x1e0| 61 | a | data: "a" 0x1ed-0x1ed.7 (1) + | | | value{}: 0x1ee-0x1ef.7 (2) + 0x1e0| 02 | . | length: 1 0x1ee-0x1ee.7 (1) + 0x1e0| 41| A| data: "A" 0x1ef-0x1ef.7 (1) + | | | [1]{}: entry 0x1f0-0x1f3.7 (4) + | | | key{}: 0x1f0-0x1f1.7 (2) + 0x1f0|02 |. | length: 1 0x1f0-0x1f0.7 (1) + 0x1f0| 62 | b | data: "b" 0x1f1-0x1f1.7 (1) + | | | value{}: 0x1f2-0x1f3.7 (2) + 0x1f0| 02 | . | length: 1 0x1f2-0x1f2.7 (1) + 0x1f0| 42 | B | data: "B" 0x1f3-0x1f3.7 (1) + | | | [2]{}: entry 0x1f4-0x1f7.7 (4) + | | | key{}: 0x1f4-0x1f5.7 (2) + 0x1f0| 02 | . | length: 1 0x1f4-0x1f4.7 (1) + 0x1f0| 63 | c | data: "c" 0x1f5-0x1f5.7 (1) + | | | value{}: 0x1f6-0x1f7.7 (2) + 0x1f0| 02 | . | length: 1 0x1f6-0x1f6.7 (1) + 0x1f0| 43 | C | data: "C" 0x1f7-0x1f7.7 (1) + | | | [1]{}: block 0x1f8-0x1f8.7 (1) + 0x1f0| 00 | . | count: 0 0x1f8-0x1f8.7 (1) + | | | data[0:0]: 0x1f9-NA (0) + | | | union{}: 0x1f9-0x1fb.7 (3) + 0x1f0| 02 | . | type: 1 0x1f9-0x1f9.7 (1) + | | | value{}: 0x1fa-0x1fb.7 (2) + 0x1f0| 02 | . | length: 1 0x1fa-0x1fa.7 (1) + 0x1f0| 36 | 6 | data: "6" 0x1fb-0x1fb.7 (1) + 0x1f0| 00 01 02 03| ....| fixed: raw bits 0x1fc-0x20b.7 (16) + 0x200|04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |............ | + 0x200| 00 | . | date: "1969-12-31" (0) 0x20c-0x20c.7 (1) + 0x200| cc a9 07| ...| timeMillis: "00:01:00.006" (60006) 0x20d-0x20f.7 (3) + 0x210|ec 5d |.] | timeMicros: "00:00:00.006006" (6006) 0x210-0x211.7 (2) + 0x210| cc f9 b5 9b 91 37 | .....7 | timestampMillis: "2000-01-07T00:01:00.006Z" (947203260006) 0x212-0x217.7 (6) + 0x210| ec dd a1 e4 bd de ae 03| ........| timestampMicros: "2000-01-07T00:00:00.006006Z" (947203200006006) 0x218-0x21f.7 (8) + | | | [7]{}: data 0x220-0x26e.7 (79) + | | | null: null 0x220-NA (0) + 0x220|00 |. | boolean: false 0x220-0x220.7 (1) + 0x220| 00 | . | int: 0 0x221-0x221.7 (1) + 0x220| 4c | L | long: 38 0x222-0x222.7 (1) + 0x220| 55 55 15 40 | UU.@ | float: 1.4642952798208e+13 0x223-0x226.7 (4) + 0x220| 49 92 24 49 92 24 01 40 | I.$I.$.@ | double: 2.5892767406983375e+46 0x227-0x22e.7 (8) + | | | bytes{}: 0x22f-0x231.7 (3) + 0x220| 04| .| length: 2 0x22f-0x22f.7 (1) + 0x230|31 34 |14 | data: raw bits 0x230-0x231.7 (2) + | | | string{}: 0x232-0x234.7 (3) + 0x230| 04 | . | length: 2 0x232-0x232.7 (1) + 0x230| 31 33 | 13 | data: "13" 0x233-0x234.7 (2) + 0x230| 02 | . | enum: "B" (1) 0x235-0x235.7 (1) + | | | array[0:2]: 0x236-0x239.7 (4) + | | | [0]{}: block 0x236-0x238.7 (3) + 0x230| 02 | . | count: 1 0x236-0x236.7 (1) + | | | data[0:1]: 0x237-0x238.7 (2) + | | | [0]{}: entry 0x237-0x238.7 (2) + 0x230| 02 | . | length: 1 0x237-0x237.7 (1) + 0x230| 61 | a | data: "a" 0x238-0x238.7 (1) + | | | [1]{}: block 0x239-0x239.7 (1) + 0x230| 00 | . | count: 0 0x239-0x239.7 (1) + | | | data[0:0]: 0x23a-NA (0) + | | | map[0:2]: 0x23a-0x247.7 (14) + | | | [0]{}: block 0x23a-0x246.7 (13) + 0x230| 06 | . | count: 3 0x23a-0x23a.7 (1) + | | | data[0:3]: 0x23b-0x246.7 (12) + | | | [0]{}: entry 0x23b-0x23e.7 (4) + | | | key{}: 0x23b-0x23c.7 (2) + 0x230| 02 | . | length: 1 0x23b-0x23b.7 (1) + 0x230| 61 | a | data: "a" 0x23c-0x23c.7 (1) + | | | value{}: 0x23d-0x23e.7 (2) + 0x230| 02 | . | length: 1 0x23d-0x23d.7 (1) + 0x230| 41 | A | data: "A" 0x23e-0x23e.7 (1) + | | | [1]{}: entry 0x23f-0x242.7 (4) + | | | key{}: 0x23f-0x240.7 (2) + 0x230| 02| .| length: 1 0x23f-0x23f.7 (1) + 0x240|62 |b | data: "b" 0x240-0x240.7 (1) + | | | value{}: 0x241-0x242.7 (2) + 0x240| 02 | . | length: 1 0x241-0x241.7 (1) + 0x240| 42 | B | data: "B" 0x242-0x242.7 (1) + | | | [2]{}: entry 0x243-0x246.7 (4) + | | | key{}: 0x243-0x244.7 (2) + 0x240| 02 | . | length: 1 0x243-0x243.7 (1) + 0x240| 63 | c | data: "c" 0x244-0x244.7 (1) + | | | value{}: 0x245-0x246.7 (2) + 0x240| 02 | . | length: 1 0x245-0x245.7 (1) + 0x240| 43 | C | data: "C" 0x246-0x246.7 (1) + | | | [1]{}: block 0x247-0x247.7 (1) + 0x240| 00 | . | count: 0 0x247-0x247.7 (1) + | | | data[0:0]: 0x248-NA (0) + | | | union{}: 0x248-0x24a.7 (3) + 0x240| 02 | . | type: 1 0x248-0x248.7 (1) + | | | value{}: 0x249-0x24a.7 (2) + 0x240| 02 | . | length: 1 0x249-0x249.7 (1) + 0x240| 37 | 7 | data: "7" 0x24a-0x24a.7 (1) + 0x240| 00 01 02 03 04| .....| fixed: raw bits 0x24b-0x25a.7 (16) + 0x250|05 06 07 08 09 0a 0b 0c 0d 0e 0f |........... | + 0x250| 02 | . | date: "1970-01-01" (1) 0x25b-0x25b.7 (1) + 0x250| ce a9 07 | ... | timeMillis: "00:01:00.007" (60007) 0x25c-0x25e.7 (3) + 0x250| d1| .| timeMicros: "23:59:59.994007" (-5993) 0x25f-0x260.7 (2) + 0x260|5d |] | + 0x260| ce e9 e8 ed 91 37 | .....7 | timestampMillis: "2000-01-08T00:01:00.007Z" (947289660007) 0x261-0x266.7 (6) + 0x260| ae a2 db c1 c1 e3 ae 03 | ........ | timestampMicros: "2000-01-07T23:59:59.994007Z" (947289599994007) 0x267-0x26e.7 (8) + | | | [8]{}: data 0x26f-0x2bd.7 (79) + | | | null: null 0x26f-NA (0) + 0x260| 01| .| boolean: true 0x26f-0x26f.7 (1) + 0x270|1e |. | int: 15 0x270-0x270.7 (1) + 0x270| 52 | R | long: 41 0x271-0x271.7 (1) + 0x270| ab aa 2a 40 | ..*@ | float: -1.2090953238619306e-12 0x272-0x275.7 (4) + 0x270| 00 00 00 00 00 00 00 00 | ........ | double: 0 0x276-0x27d.7 (8) + | | | bytes{}: 0x27e-0x27f.7 (2) + 0x270| 02 | . | length: 1 0x27e-0x27e.7 (1) + 0x270| 31| 1| data: raw bits 0x27f-0x27f.7 (1) + | | | string{}: 0x280-0x281.7 (2) + 0x280|02 |. | length: 1 0x280-0x280.7 (1) + 0x280| 32 | 2 | data: "2" 0x281-0x281.7 (1) + 0x280| 04 | . | enum: "C" (2) 0x282-0x282.7 (1) + | | | array[0:2]: 0x283-0x288.7 (6) + | | | [0]{}: block 0x283-0x287.7 (5) + 0x280| 04 | . | count: 2 0x283-0x283.7 (1) + | | | data[0:2]: 0x284-0x287.7 (4) + | | | [0]{}: entry 0x284-0x285.7 (2) + 0x280| 02 | . | length: 1 0x284-0x284.7 (1) + 0x280| 61 | a | data: "a" 0x285-0x285.7 (1) + | | | [1]{}: entry 0x286-0x287.7 (2) + 0x280| 02 | . | length: 1 0x286-0x286.7 (1) + 0x280| 62 | b | data: "b" 0x287-0x287.7 (1) + | | | [1]{}: block 0x288-0x288.7 (1) + 0x280| 00 | . | count: 0 0x288-0x288.7 (1) + | | | data[0:0]: 0x289-NA (0) + | | | map[0:2]: 0x289-0x296.7 (14) + | | | [0]{}: block 0x289-0x295.7 (13) + 0x280| 06 | . | count: 3 0x289-0x289.7 (1) + | | | data[0:3]: 0x28a-0x295.7 (12) + | | | [0]{}: entry 0x28a-0x28d.7 (4) + | | | key{}: 0x28a-0x28b.7 (2) + 0x280| 02 | . | length: 1 0x28a-0x28a.7 (1) + 0x280| 61 | a | data: "a" 0x28b-0x28b.7 (1) + | | | value{}: 0x28c-0x28d.7 (2) + 0x280| 02 | . | length: 1 0x28c-0x28c.7 (1) + 0x280| 41 | A | data: "A" 0x28d-0x28d.7 (1) + | | | [1]{}: entry 0x28e-0x291.7 (4) + | | | key{}: 0x28e-0x28f.7 (2) + 0x280| 02 | . | length: 1 0x28e-0x28e.7 (1) + 0x280| 62| b| data: "b" 0x28f-0x28f.7 (1) + | | | value{}: 0x290-0x291.7 (2) + 0x290|02 |. | length: 1 0x290-0x290.7 (1) + 0x290| 42 | B | data: "B" 0x291-0x291.7 (1) + | | | [2]{}: entry 0x292-0x295.7 (4) + | | | key{}: 0x292-0x293.7 (2) + 0x290| 02 | . | length: 1 0x292-0x292.7 (1) + 0x290| 63 | c | data: "c" 0x293-0x293.7 (1) + | | | value{}: 0x294-0x295.7 (2) + 0x290| 02 | . | length: 1 0x294-0x294.7 (1) + 0x290| 43 | C | data: "C" 0x295-0x295.7 (1) + | | | [1]{}: block 0x296-0x296.7 (1) + 0x290| 00 | . | count: 0 0x296-0x296.7 (1) + | | | data[0:0]: 0x297-NA (0) + | | | union{}: 0x297-0x299.7 (3) + 0x290| 02 | . | type: 1 0x297-0x297.7 (1) + | | | value{}: 0x298-0x299.7 (2) + 0x290| 02 | . | length: 1 0x298-0x298.7 (1) + 0x290| 38 | 8 | data: "8" 0x299-0x299.7 (1) + 0x290| 00 01 02 03 04 05| ......| fixed: raw bits 0x29a-0x2a9.7 (16) + 0x2a0|06 07 08 09 0a 0b 0c 0d 0e 0f |.......... | + 0x2a0| 1c | . | date: "1970-01-14" (14) 0x2aa-0x2aa.7 (1) + 0x2a0| d0 a9 07 | ... | timeMillis: "00:01:00.008" (60008) 0x2ab-0x2ad.7 (3) + 0x2a0| f0 5d| .]| timeMicros: "00:00:00.006008" (6008) 0x2ae-0x2af.7 (2) + 0x2b0|d0 d9 9b c0 92 37 |.....7 | timestampMillis: "2000-01-09T00:01:00.008Z" (947376060008) 0x2b0-0x2b5.7 (6) + 0x2b0| f0 dd 97 9f c5 e8 ae 03 | ........ | timestampMicros: "2000-01-09T00:00:00.006008Z" (947376000006008) 0x2b6-0x2bd.7 (8) + | | | [9]{}: data 0x2be-0x307.7 (74) + | | | null: null 0x2be-NA (0) + 0x2b0| 00 | . | boolean: false 0x2be-0x2be.7 (1) + 0x2b0| 1c| .| int: 14 0x2bf-0x2bf.7 (1) + 0x2c0|50 |P | long: 40 0x2c0-0x2c0.7 (1) + 0x2c0| 00 00 40 40 | ..@@ | float: 2.304855714121459e-41 0x2c1-0x2c4.7 (4) + 0x2c0| 92 24 49 92 24 49 c2 3f | .$I.$I.? | double: -2.80620434202585e-221 0x2c5-0x2cc.7 (8) + | | | bytes{}: 0x2cd-0x2ce.7 (2) + 0x2c0| 02 | . | length: 1 0x2cd-0x2cd.7 (1) + 0x2c0| 30 | 0 | data: raw bits 0x2ce-0x2ce.7 (1) + | | | string{}: 0x2cf-0x2d0.7 (2) + 0x2c0| 02| .| length: 1 0x2cf-0x2cf.7 (1) + 0x2d0|33 |3 | data: "3" 0x2d0-0x2d0.7 (1) + 0x2d0| 00 | . | enum: "A" (0) 0x2d1-0x2d1.7 (1) + | | | array[0:1]: 0x2d2-0x2d2.7 (1) + | | | [0]{}: block 0x2d2-0x2d2.7 (1) + 0x2d0| 00 | . | count: 0 0x2d2-0x2d2.7 (1) + | | | data[0:0]: 0x2d3-NA (0) + | | | map[0:2]: 0x2d3-0x2e0.7 (14) + | | | [0]{}: block 0x2d3-0x2df.7 (13) + 0x2d0| 06 | . | count: 3 0x2d3-0x2d3.7 (1) + | | | data[0:3]: 0x2d4-0x2df.7 (12) + | | | [0]{}: entry 0x2d4-0x2d7.7 (4) + | | | key{}: 0x2d4-0x2d5.7 (2) + 0x2d0| 02 | . | length: 1 0x2d4-0x2d4.7 (1) + 0x2d0| 61 | a | data: "a" 0x2d5-0x2d5.7 (1) + | | | value{}: 0x2d6-0x2d7.7 (2) + 0x2d0| 02 | . | length: 1 0x2d6-0x2d6.7 (1) + 0x2d0| 41 | A | data: "A" 0x2d7-0x2d7.7 (1) + | | | [1]{}: entry 0x2d8-0x2db.7 (4) + | | | key{}: 0x2d8-0x2d9.7 (2) + 0x2d0| 02 | . | length: 1 0x2d8-0x2d8.7 (1) + 0x2d0| 62 | b | data: "b" 0x2d9-0x2d9.7 (1) + | | | value{}: 0x2da-0x2db.7 (2) + 0x2d0| 02 | . | length: 1 0x2da-0x2da.7 (1) + 0x2d0| 42 | B | data: "B" 0x2db-0x2db.7 (1) + | | | [2]{}: entry 0x2dc-0x2df.7 (4) + | | | key{}: 0x2dc-0x2dd.7 (2) + 0x2d0| 02 | . | length: 1 0x2dc-0x2dc.7 (1) + 0x2d0| 63 | c | data: "c" 0x2dd-0x2dd.7 (1) + | | | value{}: 0x2de-0x2df.7 (2) + 0x2d0| 02 | . | length: 1 0x2de-0x2de.7 (1) + 0x2d0| 43| C| data: "C" 0x2df-0x2df.7 (1) + | | | [1]{}: block 0x2e0-0x2e0.7 (1) + 0x2e0|00 |. | count: 0 0x2e0-0x2e0.7 (1) + | | | data[0:0]: 0x2e1-NA (0) + | | | union{}: 0x2e1-0x2e3.7 (3) + 0x2e0| 02 | . | type: 1 0x2e1-0x2e1.7 (1) + | | | value{}: 0x2e2-0x2e3.7 (2) + 0x2e0| 02 | . | length: 1 0x2e2-0x2e2.7 (1) + 0x2e0| 39 | 9 | data: "9" 0x2e3-0x2e3.7 (1) + 0x2e0| 00 01 02 03 04 05 06 07 08 09 0a 0b| ............| fixed: raw bits 0x2e4-0x2f3.7 (16) + 0x2f0|0c 0d 0e 0f |.... | + 0x2f0| 1e | . | date: "1970-01-15" (15) 0x2f4-0x2f4.7 (1) + 0x2f0| d2 a9 07 | ... | timeMillis: "00:01:00.009" (60009) 0x2f5-0x2f7.7 (3) + 0x2f0| cd 5d | .] | timeMicros: "23:59:59.994009" (-5991) 0x2f8-0x2f9.7 (2) + 0x2f0| d2 c9 ce 92 93 37| .....7| timestampMillis: "2000-01-10T00:01:00.009Z" (947462460009) 0x2fa-0x2ff.7 (6) + 0x300|b2 a2 d1 fc c8 ed ae 03| |........| | timestampMicros: "2000-01-09T23:59:59.994009Z" (947462399994009) 0x300-0x307.7 (8) +0x0420|14 |. | count: 10 0x420-0x420.7 (1) +0x0420| 8c 08 | .. | size: 518 0x421-0x422.7 (2) +0x0420| 88 06 f0 52 01 0e 42 00 00 00 00 92 24| ...R..B.....$| compressed: raw bits 0x423-0x624.7 (514) 0x0430|49 92 24 49 f2 3f 02 39 04 31 30 00 00 06 02 61|I.$I.?.9.10....a| * |until 0x624.7 (514) | | -0x0620| 87 b8 fe b6 | .... | crc32: raw bits (valid) -0x0620| cc cc 61 31 fd 14 d0| ..a1...| sync: raw bits (valid) +0x0620| 87 b8 fe b6 | .... | crc: 0x87b8feb6 (valid) 0x625-0x628.7 (4) +0x0620| cc cc 61 31 fd 14 d0| ..a1...| sync: raw bits (valid) 0x629-0x638.7 (16) 0x0630|61 16 b6 0f 9d 30 f4 1b f0| |a....0...| |