1
1
mirror of https://github.com/wader/fq.git synced 2024-12-23 05:13:30 +03:00

changes decoder package name from bookmark to apple_bookmark

This commit is contained in:
David McDonald 2022-11-27 16:43:19 -06:00
parent 81269430fe
commit 4a28e44f44
14 changed files with 367 additions and 367 deletions

View File

@ -39,6 +39,7 @@ adts,
adts_frame,
amf0,
apev2,
[apple_bookmark](doc/formats.md#apple_bookmark),
ar,
[asn1_ber](doc/formats.md#asn1_ber),
av1_ccr,
@ -59,7 +60,6 @@ bitcoin_blkdat,
bitcoin_script,
bitcoin_transaction,
[bits](doc/formats.md#bits),
[bookmark](doc/formats.md#bookmark),
[bplist](doc/formats.md#bplist),
bsd_loopback_frame,
[bson](doc/formats.md#bson),

View File

@ -9,6 +9,7 @@
|`adts_frame` |Audio&nbsp;Data&nbsp;Transport&nbsp;Stream&nbsp;frame |<sub>`aac_frame`</sub>|
|`amf0` |Action&nbsp;Message&nbsp;Format&nbsp;0 |<sub></sub>|
|`apev2` |APEv2&nbsp;metadata&nbsp;tag |<sub>`image`</sub>|
|[`apple_bookmark`](#apple_bookmark) |Apple&nbsp;BookmarkData |<sub></sub>|
|`ar` |Unix&nbsp;archive |<sub>`probe`</sub>|
|[`asn1_ber`](#asn1_ber) |ASN1&nbsp;BER&nbsp;(basic&nbsp;encoding&nbsp;rules,&nbsp;also&nbsp;CER&nbsp;and&nbsp;DER)|<sub></sub>|
|`av1_ccr` |AV1&nbsp;Codec&nbsp;Configuration&nbsp;Record |<sub></sub>|
@ -29,7 +30,6 @@
|`bitcoin_script` |Bitcoin&nbsp;script |<sub></sub>|
|`bitcoin_transaction` |Bitcoin&nbsp;transaction |<sub>`bitcoin_script`</sub>|
|[`bits`](#bits) |Raw&nbsp;bits |<sub></sub>|
|[`bookmark`](#bookmark) |Apple&nbsp;BookmarkData |<sub></sub>|
|[`bplist`](#bplist) |Apple&nbsp;Binary&nbsp;Property&nbsp;List |<sub></sub>|
|`bsd_loopback_frame` |BSD&nbsp;loopback&nbsp;frame |<sub>`inet_packet`</sub>|
|[`bson`](#bson) |Binary&nbsp;JSON |<sub></sub>|
@ -119,7 +119,7 @@
|`inet_packet` |Group |<sub>`ipv4_packet` `ipv6_packet`</sub>|
|`ip_packet` |Group |<sub>`icmp` `icmpv6` `tcp_segment` `udp_datagram`</sub>|
|`link_frame` |Group |<sub>`bsd_loopback_frame` `ether8023_frame` `sll2_packet` `sll_packet`</sub>|
|`probe` |Group |<sub>`adts` `ar` `avi` `avro_ocf` `bitcoin_blkdat` `bookmark` `bplist` `bzip2` `elf` `flac` `gif` `gzip` `jpeg` `json` `jsonl` `macho` `macho_fat` `matroska` `mp3` `mp4` `mpeg_ts` `ogg` `pcap` `pcapng` `png` `tar` `tiff` `toml` `wasm` `wav` `webp` `xml` `yaml` `zip`</sub>|
|`probe` |Group |<sub>`adts` `apple_bookmark` `ar` `avi` `avro_ocf` `bitcoin_blkdat` `bplist` `bzip2` `elf` `flac` `gif` `gzip` `jpeg` `json` `jsonl` `macho` `macho_fat` `matroska` `mp3` `mp4` `mpeg_ts` `ogg` `pcap` `pcapng` `png` `tar` `tiff` `toml` `wasm` `wav` `webp` `xml` `yaml` `zip`</sub>|
|`tcp_stream` |Group |<sub>`dns_tcp` `rtmp`</sub>|
|`udp_payload` |Group |<sub>`dns`</sub>|
@ -158,6 +158,51 @@ Decode value as aac_frame
... | aac_frame({object_type:1})
```
## apple_bookmark
## Apple `bookmarkData` format
Apple's `bookmarkData` format is used to encode information that can be resolved
into a `URL` object for a file even if the user moves or renames it. Can also
contain security scoping information for App Sandbox support.
These `bookmarkData` blobs are often found endcoded in data fields of Binary
Property Lists. Notable examples include:
- `com.apple.finder.plist` - contains an `FXRecentFolders` value, which is an
array of ten objects, each of which consists of a `name` and `file-bookmark`
field, which is a `bookmarkData` object for each recently accessed folder
location.
- `com.apple.LSSharedFileList.RecentApplications.sfl2` - `sfl2` files are
actually `plist` files of the `NSKeyedArchiver` format. They can be parsed the
same as `plist` files, but they have a more complicated tree-like structure
than would typically be found, which can make locating and retrieving specific
values difficult, even once it has been converted to a JSON representation.
For more information about these types of files, see
[Sarah Edwards'](https://www.mac4n6.com/blog/2016/1/1/manual-analysis-of-nskeyedarchiver-formatted-plist-files-a-review-of-the-new-os-x-1011-recent-items)
excellent research on the subject.
Locating `bookmarkData` objects in plist files, especially those of the
`NSKeyedArchiver` type, is a place where `fq`'s recursive searching really
shines. Here, we recursively descend through the decoded tree, probing for and
selecting any `bookmark` blobs, then converting them to readable JSON with
`torepr`:
```
fq '.. | select(format=="bookmark") | .map(. | torepr)' com.apple.LSSharedFileList.RecentApplications.sfl2
```
### Authors
- David McDonald
[@dgmcdona](https://github.com/dgmcdona)
[@river_rat_504](https://twitter.com/river_rat_504)
### References
- https://developer.apple.com/documentation/foundation/url/2143023-bookmarkdata
- https://mac-alias.readthedocs.io/en/latest/bookmark_fmt.html
- https://www.mac4n6.com/blog/2016/1/1/manual-analysis-of-nskeyedarchiver-formatted-plist-files-a-review-of-the-new-os-x-1011-recent-items
- https://michaellynn.github.io/2015/10/24/apples-bookmarkdata-exposed/
## asn1_ber
Supports decoding BER, CER and DER (X.690).
@ -322,51 +367,6 @@ $ echo 'hello' | fq -c -d bits '[.[range(8)]]'
[0,1,1,0,1,0,0,0]
```
## bookmark
## Apple `bookmarkData` format
Apple's `bookmarkData` format is used to encode information that can be resolved
into a `URL` object for a file even if the user moves or renames it. Can also
contain security scoping information for App Sandbox support.
These `bookmarkData` blobs are often found endcoded in data fields of Binary
Property Lists. Notable examples include:
- `com.apple.finder.plist` - contains an `FXRecentFolders` value, which is an
array of ten objects, each of which consists of a `name` and `file-bookmark`
field, which is a `bookmarkData` object for each recently accessed folder
location.
- `com.apple.LSSharedFileList.RecentApplications.sfl2` - `sfl2` files are
actually `plist` files of the `NSKeyedArchiver` format. They can be parsed the
same as `plist` files, but they have a more complicated tree-like structure
than would typically be found, which can make locating and retrieving specific
values difficult, even once it has been converted to a JSON representation.
For more information about these types of files, see
[Sarah Edwards'](https://www.mac4n6.com/blog/2016/1/1/manual-analysis-of-nskeyedarchiver-formatted-plist-files-a-review-of-the-new-os-x-1011-recent-items)
excellent research on the subject.
Locating `bookmarkData` objects in plist files, especially those of the
`NSKeyedArchiver` type, is a place where `fq`'s recursive searching really
shines. Here, we recursively descend through the decoded tree, probing for and
selecting any `bookmark` blobs, then converting them to readable JSON with
`torepr`:
```
fq '.. | select(format=="bookmark") | .map(. | torepr)' com.apple.LSSharedFileList.RecentApplications.sfl2
```
### Authors
- David McDonald
[@dgmcdona](https://github.com/dgmcdona)
[@river_rat_504](https://twitter.com/river_rat_504)
### References
- https://developer.apple.com/documentation/foundation/url/2143023-bookmarkdata
- https://mac-alias.readthedocs.io/en/latest/bookmark_fmt.html
- https://www.mac4n6.com/blog/2016/1/1/manual-analysis-of-nskeyedarchiver-formatted-plist-files-a-review-of-the-new-os-x-1011-recent-items
- https://michaellynn.github.io/2015/10/24/apples-bookmarkdata-exposed/
## bplist
### Show full decoding

View File

@ -5,10 +5,10 @@
-->
<!-- Title: formats Pages: 1 -->
<svg width="4113pt" height="2095pt"
viewBox="0.00 0.00 4113.49 2095.03" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
viewBox="0.00 0.00 4112.87 2095.03" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2091.03)">
<title>formats</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-2091.03 4109.49,-2091.03 4109.49,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-2091.03 4108.87,-2091.03 4108.87,4 -4,4"/>
<!-- adts -->
<g id="node1" class="node">
<title>adts</title>
@ -46,10 +46,10 @@
<!-- apev2 -->
<g id="node4" class="node">
<title>apev2</title>
<polygon fill="paleturquoise" stroke="none" points="2485.89,-1546 2485.89,-1591 2537.89,-1591 2537.89,-1546 2485.89,-1546"/>
<text text-anchor="start" x="2487.89" y="-1572.5" font-family="Times,serif" font-size="20.00">apev2</text>
<polygon fill="lightgrey" stroke="none" points="2485.89,-1545.5 2485.89,-1564.5 2537.89,-1564.5 2537.89,-1545.5 2485.89,-1545.5"/>
<text text-anchor="start" x="2487.89" y="-1551.3" font-family="Times,serif" font-size="14.00">image</text>
<polygon fill="paleturquoise" stroke="none" points="2486.89,-1546 2486.89,-1591 2538.89,-1591 2538.89,-1546 2486.89,-1546"/>
<text text-anchor="start" x="2488.89" y="-1572.5" font-family="Times,serif" font-size="20.00">apev2</text>
<polygon fill="lightgrey" stroke="none" points="2486.89,-1545.5 2486.89,-1564.5 2538.89,-1564.5 2538.89,-1545.5 2486.89,-1545.5"/>
<text text-anchor="start" x="2488.89" y="-1551.3" font-family="Times,serif" font-size="14.00">image</text>
</g>
<!-- image -->
<g id="node5" class="node">
@ -60,8 +60,8 @@
<!-- apev2&#45;&gt;image -->
<g id="edge3" class="edge">
<title>apev2:e&#45;&gt;image:n</title>
<path fill="none" stroke="#5c5d4e" stroke-width="2" d="M2538.89,-1554.5C2606.62,-1554.5 2393.56,-1370.61 2374.28,-1292.32"/>
<polygon fill="#5c5d4e" stroke="#5c5d4e" stroke-width="2" points="2377.69,-1291.45 2372.89,-1282 2370.76,-1292.38 2377.69,-1291.45"/>
<path fill="none" stroke="#5c5d4e" stroke-width="2" d="M2539.89,-1554.5C2607.73,-1554.5 2393.66,-1370.72 2374.29,-1292.33"/>
<polygon fill="#5c5d4e" stroke="#5c5d4e" stroke-width="2" points="2377.7,-1291.44 2372.89,-1282 2370.76,-1292.38 2377.7,-1291.44"/>
</g>
<!-- jpeg -->
<g id="node46" class="node">
@ -222,7 +222,7 @@
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="2315.03,-1935.25 2310.89,-1925.5 2308.05,-1935.7 2315.03,-1935.25"/>
</g>
<!-- probe&#45;&gt;ar -->
<g id="edge125" class="edge">
<g id="edge126" class="edge">
<title>probe&#45;&gt;ar:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2439.64,-2056.47C2197.07,-2056.02 847.12,-2049.81 685.89,-1967 668.37,-1958 657.08,-1951.51 653.85,-1935.86"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="657.3,-1935.14 652.89,-1925.5 650.33,-1935.78 657.3,-1935.14"/>
@ -242,7 +242,7 @@
<text text-anchor="start" x="1280.89" y="-864.8" font-family="Times,serif" font-size="14.00">flac_frame</text>
</g>
<!-- probe&#45;&gt;avi -->
<g id="edge126" class="edge">
<g id="edge127" class="edge">
<title>probe&#45;&gt;avi:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2439.77,-2055.39C2262.54,-2049.85 1507.42,-2023.06 1419.89,-1967 1333.41,-1911.61 1335.84,-1864.24 1305.89,-1766 1280.23,-1681.79 1331,-1439.65 1275.89,-1371 1206.71,-1284.82 1103.76,-1387.74 1037.89,-1299 1018.82,-1273.3 1025.38,-1256.45 1037.89,-1227 1069.8,-1151.95 1294.32,-1054.8 1311.81,-972.02"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="1315.3,-972.32 1312.89,-962 1308.34,-971.57 1315.3,-972.32"/>
@ -256,7 +256,7 @@
<text text-anchor="start" x="703.89" y="-1885.3" font-family="Times,serif" font-size="14.00">bitcoin_block</text>
</g>
<!-- probe&#45;&gt;bitcoin_blkdat -->
<g id="edge128" class="edge">
<g id="edge129" class="edge">
<title>probe&#45;&gt;bitcoin_blkdat:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2439.72,-2056.67C2226.12,-2057.29 1153.52,-2055.86 837.89,-1967 804.13,-1957.49 768.6,-1963.01 761.99,-1935.61"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="765.45,-1935.07 760.89,-1925.5 758.49,-1935.82 765.45,-1935.07"/>
@ -278,18 +278,18 @@
<!-- flac -->
<g id="node29" class="node">
<title>flac</title>
<polygon fill="paleturquoise" stroke="none" points="821.89,-878 821.89,-942 937.89,-942 937.89,-878 821.89,-878"/>
<text text-anchor="start" x="864.89" y="-924" font-family="Times,serif" font-size="20.00">flac</text>
<polygon fill="lightgrey" stroke="none" points="821.89,-897 821.89,-916 937.89,-916 937.89,-897 821.89,-897"/>
<text text-anchor="start" x="823.89" y="-902.8" font-family="Times,serif" font-size="14.00">flac_metadatablocks</text>
<polygon fill="lightgrey" stroke="none" points="821.89,-878 821.89,-897 937.89,-897 937.89,-878 821.89,-878"/>
<text text-anchor="start" x="823.89" y="-883.8" font-family="Times,serif" font-size="14.00">flac_frame</text>
<polygon fill="paleturquoise" stroke="none" points="833.89,-878 833.89,-942 949.89,-942 949.89,-878 833.89,-878"/>
<text text-anchor="start" x="876.89" y="-924" font-family="Times,serif" font-size="20.00">flac</text>
<polygon fill="lightgrey" stroke="none" points="833.89,-897 833.89,-916 949.89,-916 949.89,-897 833.89,-897"/>
<text text-anchor="start" x="835.89" y="-902.8" font-family="Times,serif" font-size="14.00">flac_metadatablocks</text>
<polygon fill="lightgrey" stroke="none" points="833.89,-878 833.89,-897 949.89,-897 949.89,-878 833.89,-878"/>
<text text-anchor="start" x="835.89" y="-883.8" font-family="Times,serif" font-size="14.00">flac_frame</text>
</g>
<!-- probe&#45;&gt;flac -->
<g id="edge137" class="edge">
<title>probe&#45;&gt;flac:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2439.6,-2055.81C2205.7,-2051.34 949.15,-2024.67 893.89,-1967 856.03,-1927.48 878.06,-1069.15 879.79,-953.19"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="883.29,-953.04 879.89,-943 876.29,-952.96 883.29,-953.04"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2439.59,-2055.82C2205.64,-2051.4 948.81,-2025 893.89,-1967 856.27,-1927.27 889.18,-1069.13 891.74,-953.18"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="895.24,-953.05 891.89,-943 888.24,-952.95 895.24,-953.05"/>
</g>
<!-- gzip -->
<g id="node35" class="node">
@ -308,7 +308,7 @@
<!-- probe&#45;&gt;jpeg -->
<g id="edge145" class="edge">
<title>probe&#45;&gt;jpeg:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2474.16,-2039.4C2471.44,-2021.43 2467.44,-1992.31 2465.89,-1967 2462.39,-1909.77 2465.59,-1895.33 2465.89,-1838 2467.01,-1630.44 2456.49,-1578.07 2470.89,-1371 2481.87,-1213.19 2451.44,-778.24 2561.89,-665 2635.66,-589.37 3021.06,-692.02 3046.57,-600.17"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2474.16,-2039.4C2471.44,-2021.43 2467.44,-1992.31 2465.89,-1967 2462.39,-1909.77 2465.53,-1895.33 2465.89,-1838 2467.23,-1630.43 2457.41,-1578.07 2471.89,-1371 2482.93,-1213.23 2451.54,-778.3 2561.89,-665 2635.61,-589.32 3021.05,-692.01 3046.57,-600.17"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3050.07,-600.37 3047.89,-590 3043.13,-599.46 3050.07,-600.37"/>
</g>
<!-- macho_fat -->
@ -418,7 +418,7 @@
<!-- probe&#45;&gt;png -->
<g id="edge159" class="edge">
<title>probe&#45;&gt;png:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2474.56,-2039.25C2470.15,-2001.25 2463.43,-1908.11 2491.89,-1838 2507.67,-1799.14 2535.67,-1804.24 2552.89,-1766 2654.61,-1540.11 2553.99,-841.44 2727.89,-665 2856.06,-534.97 3129.23,-766.98 3139.59,-600.17"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2474.52,-2039.24C2470.03,-2001.2 2463.15,-1907.99 2491.89,-1838 2507.94,-1798.94 2536.45,-1804.46 2553.89,-1766 2656.22,-1540.42 2554.01,-841.41 2727.89,-665 2856.06,-534.97 3129.23,-766.98 3139.59,-600.17"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3143.1,-600.1 3139.89,-590 3136.1,-599.89 3143.1,-600.1"/>
</g>
<!-- ogg -->
@ -440,26 +440,26 @@
<!-- probe&#45;&gt;ogg -->
<g id="edge156" class="edge">
<title>probe&#45;&gt;ogg:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2439.72,-2055.61C2205.13,-2049.86 937.85,-2016.58 873.89,-1967 826.35,-1930.14 853.46,-1894.53 832.89,-1838 756.18,-1627.11 755.54,-1563.92 640.89,-1371 598.77,-1300.11 582.58,-1284.93 523.89,-1227 487.19,-1190.77 463.08,-1196.81 432.89,-1155 384.04,-1087.33 367.27,-1060.27 365.98,-981.41"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2439.77,-2055.6C2205.53,-2049.77 940.11,-2016.07 875.89,-1967 827.87,-1930.31 853.95,-1894.65 832.89,-1838 754.7,-1627.65 755.54,-1563.92 640.89,-1371 598.77,-1300.11 582.58,-1284.93 523.89,-1227 487.19,-1190.77 463.08,-1196.81 432.89,-1155 384.04,-1087.33 367.27,-1060.27 365.98,-981.41"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="369.47,-980.97 365.89,-971 362.47,-981.03 369.47,-980.97"/>
</g>
<!-- pcap -->
<g id="node75" class="node">
<title>pcap</title>
<polygon fill="paleturquoise" stroke="none" points="3281.39,-1861 3281.39,-1944 3352.39,-1944 3352.39,-1861 3281.39,-1861"/>
<text text-anchor="start" x="3298.39" y="-1925.5" font-family="Times,serif" font-size="20.00">pcap</text>
<polygon fill="lightgrey" stroke="none" points="3281.89,-1898.5 3281.89,-1917.5 3352.89,-1917.5 3352.89,-1898.5 3281.89,-1898.5"/>
<text text-anchor="start" x="3283.89" y="-1904.3" font-family="Times,serif" font-size="14.00">link_frame</text>
<polygon fill="lightgrey" stroke="none" points="3281.89,-1879.5 3281.89,-1898.5 3352.89,-1898.5 3352.89,-1879.5 3281.89,-1879.5"/>
<text text-anchor="start" x="3283.89" y="-1885.3" font-family="Times,serif" font-size="14.00">tcp_stream</text>
<polygon fill="lightgrey" stroke="none" points="3281.89,-1860.5 3281.89,-1879.5 3352.89,-1879.5 3352.89,-1860.5 3281.89,-1860.5"/>
<text text-anchor="start" x="3283.89" y="-1866.3" font-family="Times,serif" font-size="14.00">ipv4_packet</text>
<polygon fill="paleturquoise" stroke="none" points="3333.39,-1861 3333.39,-1944 3404.39,-1944 3404.39,-1861 3333.39,-1861"/>
<text text-anchor="start" x="3350.39" y="-1925.5" font-family="Times,serif" font-size="20.00">pcap</text>
<polygon fill="lightgrey" stroke="none" points="3333.89,-1898.5 3333.89,-1917.5 3404.89,-1917.5 3404.89,-1898.5 3333.89,-1898.5"/>
<text text-anchor="start" x="3335.89" y="-1904.3" font-family="Times,serif" font-size="14.00">link_frame</text>
<polygon fill="lightgrey" stroke="none" points="3333.89,-1879.5 3333.89,-1898.5 3404.89,-1898.5 3404.89,-1879.5 3333.89,-1879.5"/>
<text text-anchor="start" x="3335.89" y="-1885.3" font-family="Times,serif" font-size="14.00">tcp_stream</text>
<polygon fill="lightgrey" stroke="none" points="3333.89,-1860.5 3333.89,-1879.5 3404.89,-1879.5 3404.89,-1860.5 3333.89,-1860.5"/>
<text text-anchor="start" x="3335.89" y="-1866.3" font-family="Times,serif" font-size="14.00">ipv4_packet</text>
</g>
<!-- probe&#45;&gt;pcap -->
<g id="edge157" class="edge">
<title>probe&#45;&gt;pcap:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.11,-2040.87C2516.38,-2040.17 2518.66,-2039.54 2520.89,-2039 2844.22,-1960.75 2943.78,-2050.06 3265.89,-1967 3286.28,-1961.74 3308.92,-1967.15 3315.8,-1954.35"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3319.24,-1955.01 3317.89,-1944.5 3312.39,-1953.55 3319.24,-1955.01"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.1,-2040.85C2516.38,-2040.16 2518.66,-2039.53 2520.89,-2039 2866.84,-1956.42 2973.22,-2054.73 3317.89,-1967 3338.29,-1961.81 3360.93,-1967.17 3367.8,-1954.36"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3371.24,-1955.01 3369.89,-1944.5 3364.39,-1953.56 3371.24,-1955.01"/>
</g>
<!-- pcapng -->
<g id="node78" class="node">
@ -537,53 +537,53 @@
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.2,-2041.22C2516.46,-2040.43 2518.7,-2039.69 2520.89,-2039 2672.04,-1991.74 2858.68,-2083.25 2866.63,-1935.58"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="2870.13,-1935.59 2866.89,-1925.5 2863.14,-1935.41 2870.13,-1935.59"/>
</g>
<!-- avro_ocf -->
<!-- apple_bookmark -->
<g id="node91" class="node">
<title>apple_bookmark</title>
<polygon fill="paleturquoise" stroke="none" points="2915.39,-1889.5 2915.39,-1915.5 3052.39,-1915.5 3052.39,-1889.5 2915.39,-1889.5"/>
<text text-anchor="start" x="2917.89" y="-1897.5" font-family="Times,serif" font-size="20.00">apple_bookmark</text>
</g>
<!-- probe&#45;&gt;apple_bookmark -->
<g id="edge125" class="edge">
<title>probe&#45;&gt;apple_bookmark:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.17,-2041.11C2516.43,-2040.35 2518.68,-2039.64 2520.89,-2039 2685.52,-1991.1 2739.54,-2027.71 2899.89,-1967 2937.46,-1952.78 2977.37,-1959.08 2983.95,-1926.71"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="2987.46,-1926.78 2984.89,-1916.5 2980.49,-1926.14 2987.46,-1926.78"/>
</g>
<!-- avro_ocf -->
<g id="node92" class="node">
<title>avro_ocf</title>
<polygon fill="paleturquoise" stroke="none" points="2915.39,-1889.5 2915.39,-1915.5 2990.39,-1915.5 2990.39,-1889.5 2915.39,-1889.5"/>
<text text-anchor="start" x="2917.89" y="-1897.5" font-family="Times,serif" font-size="20.00">avro_ocf</text>
<polygon fill="paleturquoise" stroke="none" points="3082.39,-1889.5 3082.39,-1915.5 3157.39,-1915.5 3157.39,-1889.5 3082.39,-1889.5"/>
<text text-anchor="start" x="3084.89" y="-1897.5" font-family="Times,serif" font-size="20.00">avro_ocf</text>
</g>
<!-- probe&#45;&gt;avro_ocf -->
<g id="edge127" class="edge">
<g id="edge128" class="edge">
<title>probe&#45;&gt;avro_ocf:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.17,-2041.11C2516.43,-2040.35 2518.68,-2039.64 2520.89,-2039 2685.52,-1991.1 2747.02,-2044.62 2899.89,-1967 2925.87,-1953.81 2948.24,-1950.14 2952.97,-1926.57"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="2956.47,-1926.78 2953.89,-1916.5 2949.5,-1926.14 2956.47,-1926.78"/>
</g>
<!-- bookmark -->
<g id="node92" class="node">
<title>bookmark</title>
<polygon fill="paleturquoise" stroke="none" points="3020.39,-1889.5 3020.39,-1915.5 3105.39,-1915.5 3105.39,-1889.5 3020.39,-1889.5"/>
<text text-anchor="start" x="3022.89" y="-1897.5" font-family="Times,serif" font-size="20.00">bookmark</text>
</g>
<!-- probe&#45;&gt;bookmark -->
<g id="edge129" class="edge">
<title>probe&#45;&gt;bookmark:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.14,-2041.01C2516.41,-2040.28 2518.67,-2039.6 2520.89,-2039 2731.32,-1982.35 2807.99,-2058.22 3005.89,-1967 3033.54,-1954.26 3057.95,-1951.27 3062.96,-1926.62"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3066.46,-1926.78 3063.89,-1916.5 3059.49,-1926.13 3066.46,-1926.78"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.13,-2040.96C2516.4,-2040.24 2518.67,-2039.58 2520.89,-2039 2758.19,-1977.22 2846.68,-2072.79 3067.89,-1967 3093.92,-1954.55 3115.46,-1950.06 3120.01,-1926.51"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3123.5,-1926.77 3120.89,-1916.5 3116.53,-1926.15 3123.5,-1926.77"/>
</g>
<!-- bplist -->
<g id="node93" class="node">
<title>bplist</title>
<polygon fill="paleturquoise" stroke="none" points="3135.39,-1889.5 3135.39,-1915.5 3182.39,-1915.5 3182.39,-1889.5 3135.39,-1889.5"/>
<text text-anchor="start" x="3137.89" y="-1897.5" font-family="Times,serif" font-size="20.00">bplist</text>
<polygon fill="paleturquoise" stroke="none" points="3187.39,-1889.5 3187.39,-1915.5 3234.39,-1915.5 3234.39,-1889.5 3187.39,-1889.5"/>
<text text-anchor="start" x="3189.89" y="-1897.5" font-family="Times,serif" font-size="20.00">bplist</text>
</g>
<!-- probe&#45;&gt;bplist -->
<g id="edge130" class="edge">
<title>probe&#45;&gt;bplist:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.12,-2040.93C2516.39,-2040.22 2518.66,-2039.57 2520.89,-2039 2657.6,-2004.24 3135.75,-2058.32 3159.02,-1926.73"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3162.53,-1926.76 3159.89,-1916.5 3155.55,-1926.16 3162.53,-1926.76"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.12,-2040.91C2516.39,-2040.2 2518.66,-2039.56 2520.89,-2039 2668.82,-2002.13 3187.85,-2069.31 3211.09,-1926.67"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3214.59,-1926.75 3211.89,-1916.5 3207.62,-1926.19 3214.59,-1926.75"/>
</g>
<!-- elf -->
<g id="node96" class="node">
<title>elf</title>
<polygon fill="paleturquoise" stroke="none" points="3218.89,-1889.5 3218.89,-1915.5 3244.89,-1915.5 3244.89,-1889.5 3218.89,-1889.5"/>
<text text-anchor="start" x="3220.89" y="-1897.5" font-family="Times,serif" font-size="20.00">elf</text>
<polygon fill="paleturquoise" stroke="none" points="3270.89,-1889.5 3270.89,-1915.5 3296.89,-1915.5 3296.89,-1889.5 3270.89,-1889.5"/>
<text text-anchor="start" x="3272.89" y="-1897.5" font-family="Times,serif" font-size="20.00">elf</text>
</g>
<!-- probe&#45;&gt;elf -->
<g id="edge135" class="edge">
<title>probe&#45;&gt;elf:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.11,-2040.9C2516.39,-2040.19 2518.66,-2039.55 2520.89,-2039 2673.2,-2001.37 3208.22,-2073.6 3231.14,-1926.51"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3234.63,-1926.74 3231.89,-1916.5 3227.65,-1926.21 3234.63,-1926.74"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.11,-2040.88C2516.38,-2040.18 2518.66,-2039.54 2520.89,-2039 2684.34,-1999.26 3259.62,-2084.6 3283.15,-1926.74"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3286.66,-1926.73 3283.89,-1916.5 3279.68,-1926.22 3286.66,-1926.73"/>
</g>
<!-- probe&#45;&gt;gif -->
<g id="edge138" class="edge">
@ -594,86 +594,86 @@
<!-- json -->
<g id="node100" class="node">
<title>json</title>
<polygon fill="paleturquoise" stroke="none" points="3383.39,-1889.5 3383.39,-1915.5 3420.39,-1915.5 3420.39,-1889.5 3383.39,-1889.5"/>
<text text-anchor="start" x="3385.89" y="-1897.5" font-family="Times,serif" font-size="20.00">json</text>
<polygon fill="paleturquoise" stroke="none" points="3435.39,-1889.5 3435.39,-1915.5 3472.39,-1915.5 3472.39,-1889.5 3435.39,-1889.5"/>
<text text-anchor="start" x="3437.89" y="-1897.5" font-family="Times,serif" font-size="20.00">json</text>
</g>
<!-- probe&#45;&gt;json -->
<g id="edge147" class="edge">
<title>probe&#45;&gt;json:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.1,-2040.84C2516.38,-2040.15 2518.65,-2039.53 2520.89,-2039 2710.1,-1994.36 3378.81,-2110.19 3402.26,-1926.64"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3405.77,-1926.7 3402.89,-1916.5 3398.78,-1926.26 3405.77,-1926.7"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.1,-2040.83C2516.38,-2040.14 2518.65,-2039.52 2520.89,-2039 2721.37,-1992.22 3430.8,-2121.42 3454.3,-1926.64"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3457.8,-1926.69 3454.89,-1916.5 3450.81,-1926.28 3457.8,-1926.69"/>
</g>
<!-- jsonl -->
<g id="node101" class="node">
<title>jsonl</title>
<polygon fill="paleturquoise" stroke="none" points="3450.89,-1889.5 3450.89,-1915.5 3492.89,-1915.5 3492.89,-1889.5 3450.89,-1889.5"/>
<text text-anchor="start" x="3452.89" y="-1897.5" font-family="Times,serif" font-size="20.00">jsonl</text>
<polygon fill="paleturquoise" stroke="none" points="3502.89,-1889.5 3502.89,-1915.5 3544.89,-1915.5 3544.89,-1889.5 3502.89,-1889.5"/>
<text text-anchor="start" x="3504.89" y="-1897.5" font-family="Times,serif" font-size="20.00">jsonl</text>
</g>
<!-- probe&#45;&gt;jsonl -->
<g id="edge148" class="edge">
<title>probe&#45;&gt;jsonl:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.1,-2040.82C2516.37,-2040.14 2518.65,-2039.52 2520.89,-2039 2719.55,-1992.79 3258.39,-2067.46 3435.89,-1967 3456.7,-1955.23 3468.49,-1946.62 3471.26,-1926.57"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3474.76,-1926.7 3471.89,-1916.5 3467.77,-1926.26 3474.76,-1926.7"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.09,-2040.81C2516.37,-2040.13 2518.65,-2039.52 2520.89,-2039 2730.88,-1990.62 3300.14,-2072.74 3487.89,-1967 3508.72,-1955.27 3520.5,-1946.64 3523.26,-1926.57"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3526.76,-1926.7 3523.89,-1916.5 3519.77,-1926.26 3526.76,-1926.7"/>
</g>
<!-- mpeg_ts -->
<g id="node102" class="node">
<title>mpeg_ts</title>
<polygon fill="paleturquoise" stroke="none" points="3523.39,-1889.5 3523.39,-1915.5 3594.39,-1915.5 3594.39,-1889.5 3523.39,-1889.5"/>
<text text-anchor="start" x="3525.89" y="-1897.5" font-family="Times,serif" font-size="20.00">mpeg_ts</text>
<polygon fill="paleturquoise" stroke="none" points="3575.39,-1889.5 3575.39,-1915.5 3646.39,-1915.5 3646.39,-1889.5 3575.39,-1889.5"/>
<text text-anchor="start" x="3577.89" y="-1897.5" font-family="Times,serif" font-size="20.00">mpeg_ts</text>
</g>
<!-- probe&#45;&gt;mpeg_ts -->
<g id="edge155" class="edge">
<title>probe&#45;&gt;mpeg_ts:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.09,-2040.81C2516.37,-2040.13 2518.65,-2039.52 2520.89,-2039 2735.23,-1989.79 3307.25,-2057.03 3507.89,-1967 3533.84,-1955.36 3554.5,-1950.02 3558.99,-1926.77"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3562.5,-1926.77 3559.89,-1916.5 3555.53,-1926.15 3562.5,-1926.77"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.09,-2040.8C2516.37,-2040.12 2518.65,-2039.51 2520.89,-2039 2746.56,-1987.62 3348.56,-2061.37 3559.89,-1967 3585.86,-1955.4 3606.51,-1950.03 3610.99,-1926.77"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3614.5,-1926.77 3611.89,-1916.5 3607.53,-1926.15 3614.5,-1926.77"/>
</g>
<!-- toml -->
<g id="node104" class="node">
<title>toml</title>
<polygon fill="paleturquoise" stroke="none" points="3624.39,-1889.5 3624.39,-1915.5 3665.39,-1915.5 3665.39,-1889.5 3624.39,-1889.5"/>
<text text-anchor="start" x="3626.89" y="-1897.5" font-family="Times,serif" font-size="20.00">toml</text>
<polygon fill="paleturquoise" stroke="none" points="3676.39,-1889.5 3676.39,-1915.5 3717.39,-1915.5 3717.39,-1889.5 3676.39,-1889.5"/>
<text text-anchor="start" x="3678.89" y="-1897.5" font-family="Times,serif" font-size="20.00">toml</text>
</g>
<!-- probe&#45;&gt;toml -->
<g id="edge168" class="edge">
<title>probe&#45;&gt;toml:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.09,-2040.79C2516.37,-2040.11 2518.65,-2039.51 2520.89,-2039 2757.46,-1985.53 3398.08,-2085.13 3609.89,-1967 3630.77,-1955.36 3642.51,-1946.66 3645.26,-1926.58"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3648.76,-1926.7 3645.89,-1916.5 3641.78,-1926.26 3648.76,-1926.7"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.09,-2040.78C2516.37,-2040.11 2518.65,-2039.5 2520.89,-2039 2768.79,-1983.36 3439.83,-2090.42 3661.89,-1967 3682.79,-1955.39 3694.52,-1946.67 3697.26,-1926.58"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3700.76,-1926.7 3697.89,-1916.5 3693.78,-1926.26 3700.76,-1926.7"/>
</g>
<!-- wasm -->
<g id="node105" class="node">
<title>wasm</title>
<polygon fill="paleturquoise" stroke="none" points="3695.39,-1889.5 3695.39,-1915.5 3746.39,-1915.5 3746.39,-1889.5 3695.39,-1889.5"/>
<text text-anchor="start" x="3697.89" y="-1897.5" font-family="Times,serif" font-size="20.00">wasm</text>
<polygon fill="paleturquoise" stroke="none" points="3747.39,-1889.5 3747.39,-1915.5 3798.39,-1915.5 3798.39,-1889.5 3747.39,-1889.5"/>
<text text-anchor="start" x="3749.89" y="-1897.5" font-family="Times,serif" font-size="20.00">wasm</text>
</g>
<!-- probe&#45;&gt;wasm -->
<g id="edge170" class="edge">
<title>probe&#45;&gt;wasm:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.09,-2040.78C2516.37,-2040.11 2518.65,-2039.5 2520.89,-2039 2772.93,-1982.57 3451.26,-2085.22 3680.89,-1967 3703.29,-1955.47 3717.78,-1947.65 3721.14,-1926.71"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3724.65,-1926.73 3721.89,-1916.5 3717.67,-1926.22 3724.65,-1926.73"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.08,-2040.77C2516.37,-2040.1 2518.65,-2039.5 2520.89,-2039 2784.26,-1980.4 3492.84,-2090.18 3732.89,-1967 3755.3,-1955.5 3769.78,-1947.65 3773.14,-1926.71"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3776.65,-1926.73 3773.89,-1916.5 3769.67,-1926.22 3776.65,-1926.73"/>
</g>
<!-- xml -->
<g id="node106" class="node">
<title>xml</title>
<polygon fill="paleturquoise" stroke="none" points="3778.39,-1889.5 3778.39,-1915.5 3813.39,-1915.5 3813.39,-1889.5 3778.39,-1889.5"/>
<text text-anchor="start" x="3780.89" y="-1897.5" font-family="Times,serif" font-size="20.00">xml</text>
<polygon fill="paleturquoise" stroke="none" points="3830.39,-1889.5 3830.39,-1915.5 3865.39,-1915.5 3865.39,-1889.5 3830.39,-1889.5"/>
<text text-anchor="start" x="3832.89" y="-1897.5" font-family="Times,serif" font-size="20.00">xml</text>
</g>
<!-- probe&#45;&gt;xml -->
<g id="edge174" class="edge">
<title>probe&#45;&gt;xml:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.08,-2040.77C2516.37,-2040.1 2518.65,-2039.5 2520.89,-2039 2790.58,-1979.19 3520.99,-2102.18 3761.89,-1967 3782.55,-1955.41 3793.7,-1946.48 3796.3,-1926.5"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3799.79,-1926.69 3796.89,-1916.5 3792.81,-1926.27 3799.79,-1926.69"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.08,-2040.76C2516.36,-2040.09 2518.65,-2039.5 2520.89,-2039 2801.92,-1977.02 3562.76,-2107.53 3813.89,-1967 3834.56,-1955.44 3845.7,-1946.49 3848.3,-1926.51"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3851.8,-1926.69 3848.89,-1916.5 3844.81,-1926.27 3851.8,-1926.69"/>
</g>
<!-- yaml -->
<g id="node107" class="node">
<title>yaml</title>
<polygon fill="paleturquoise" stroke="none" points="3844.89,-1889.5 3844.89,-1915.5 3888.89,-1915.5 3888.89,-1889.5 3844.89,-1889.5"/>
<text text-anchor="start" x="3846.89" y="-1897.5" font-family="Times,serif" font-size="20.00">yaml</text>
<polygon fill="paleturquoise" stroke="none" points="3896.89,-1889.5 3896.89,-1915.5 3940.89,-1915.5 3940.89,-1889.5 3896.89,-1889.5"/>
<text text-anchor="start" x="3898.89" y="-1897.5" font-family="Times,serif" font-size="20.00">yaml</text>
</g>
<!-- probe&#45;&gt;yaml -->
<g id="edge175" class="edge">
<title>probe&#45;&gt;yaml:n</title>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.08,-2040.76C2516.36,-2040.09 2518.65,-2039.5 2520.89,-2039 2805.41,-1976.35 3573.77,-2105.83 3829.89,-1967 3851.11,-1955.5 3863.35,-1946.89 3866.23,-1926.66"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3869.74,-1926.71 3866.89,-1916.5 3862.75,-1926.25 3869.74,-1926.71"/>
<path fill="none" stroke="#49647f" stroke-width="2" d="M2514.08,-2040.75C2516.36,-2040.09 2518.65,-2039.49 2520.89,-2039 2816.74,-1974.18 3615.48,-2111.05 3881.89,-1967 3903.12,-1955.52 3915.36,-1946.9 3918.23,-1926.67"/>
<polygon fill="#49647f" stroke="#49647f" stroke-width="2" points="3921.74,-1926.71 3918.89,-1916.5 3914.75,-1926.25 3921.74,-1926.71"/>
</g>
<!-- av1_frame -->
<g id="node8" class="node">
@ -912,42 +912,42 @@
<!-- inet_packet -->
<g id="node26" class="node">
<title>inet_packet</title>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3604.39,-892C3604.39,-892 3713.39,-892 3713.39,-892 3719.39,-892 3725.39,-898 3725.39,-904 3725.39,-904 3725.39,-916 3725.39,-916 3725.39,-922 3719.39,-928 3713.39,-928 3713.39,-928 3604.39,-928 3604.39,-928 3598.39,-928 3592.39,-922 3592.39,-916 3592.39,-916 3592.39,-904 3592.39,-904 3592.39,-898 3598.39,-892 3604.39,-892"/>
<text text-anchor="middle" x="3658.89" y="-904" font-family="Times,serif" font-size="25.00">inet_packet</text>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3617.39,-892C3617.39,-892 3726.39,-892 3726.39,-892 3732.39,-892 3738.39,-898 3738.39,-904 3738.39,-904 3738.39,-916 3738.39,-916 3738.39,-922 3732.39,-928 3726.39,-928 3726.39,-928 3617.39,-928 3617.39,-928 3611.39,-928 3605.39,-922 3605.39,-916 3605.39,-916 3605.39,-904 3605.39,-904 3605.39,-898 3611.39,-892 3617.39,-892"/>
<text text-anchor="middle" x="3671.89" y="-904" font-family="Times,serif" font-size="25.00">inet_packet</text>
</g>
<!-- bsd_loopback_frame&#45;&gt;inet_packet -->
<g id="edge19" class="edge">
<title>bsd_loopback_frame:e&#45;&gt;inet_packet:n</title>
<path fill="none" stroke="#4361a5" stroke-width="2" d="M3885.89,-1249C3926.93,-1249 3689.53,-1004.04 3661.56,-938.96"/>
<polygon fill="#4361a5" stroke="#4361a5" stroke-width="2" points="3664.86,-937.75 3658.89,-929 3658.1,-939.57 3664.86,-937.75"/>
<path fill="none" stroke="#4361a5" stroke-width="2" d="M3885.89,-1249C3926.16,-1249 3700.96,-1003.31 3674.43,-938.83"/>
<polygon fill="#4361a5" stroke="#4361a5" stroke-width="2" points="3677.78,-937.81 3671.89,-929 3671,-939.56 3677.78,-937.81"/>
</g>
<!-- ipv4_packet -->
<g id="node43" class="node">
<title>ipv4_packet</title>
<polygon fill="paleturquoise" stroke="none" points="3435.39,-534.5 3435.39,-579.5 3536.39,-579.5 3536.39,-534.5 3435.39,-534.5"/>
<text text-anchor="start" x="3437.89" y="-561" font-family="Times,serif" font-size="20.00">ipv4_packet</text>
<polygon fill="lightgrey" stroke="none" points="3435.89,-534 3435.89,-553 3536.89,-553 3536.89,-534 3435.89,-534"/>
<text text-anchor="start" x="3437.89" y="-539.8" font-family="Times,serif" font-size="14.00">ip_packet</text>
<polygon fill="paleturquoise" stroke="none" points="3422.39,-534.5 3422.39,-579.5 3523.39,-579.5 3523.39,-534.5 3422.39,-534.5"/>
<text text-anchor="start" x="3424.89" y="-561" font-family="Times,serif" font-size="20.00">ipv4_packet</text>
<polygon fill="lightgrey" stroke="none" points="3422.89,-534 3422.89,-553 3523.89,-553 3523.89,-534 3422.89,-534"/>
<text text-anchor="start" x="3424.89" y="-539.8" font-family="Times,serif" font-size="14.00">ip_packet</text>
</g>
<!-- inet_packet&#45;&gt;ipv4_packet -->
<g id="edge143" class="edge">
<title>inet_packet&#45;&gt;ipv4_packet:n</title>
<path fill="none" stroke="#5a43ab" stroke-width="2" d="M3642.09,-891.78C3599.91,-846.71 3492.53,-719.77 3487.11,-590.14"/>
<polygon fill="#5a43ab" stroke="#5a43ab" stroke-width="2" points="3490.6,-589.92 3486.89,-580 3483.61,-590.07 3490.6,-589.92"/>
<path fill="none" stroke="#5a43ab" stroke-width="2" d="M3652.19,-891.97C3603.33,-847.78 3480.11,-723.59 3474.12,-590.04"/>
<polygon fill="#5a43ab" stroke="#5a43ab" stroke-width="2" points="3477.62,-589.92 3473.89,-580 3470.62,-590.08 3477.62,-589.92"/>
</g>
<!-- ipv6_packet -->
<g id="node45" class="node">
<title>ipv6_packet</title>
<polygon fill="paleturquoise" stroke="none" points="3580.39,-534.5 3580.39,-579.5 3681.39,-579.5 3681.39,-534.5 3580.39,-534.5"/>
<text text-anchor="start" x="3582.89" y="-561" font-family="Times,serif" font-size="20.00">ipv6_packet</text>
<polygon fill="lightgrey" stroke="none" points="3580.89,-534 3580.89,-553 3681.89,-553 3681.89,-534 3580.89,-534"/>
<text text-anchor="start" x="3582.89" y="-539.8" font-family="Times,serif" font-size="14.00">ip_packet</text>
<polygon fill="paleturquoise" stroke="none" points="3606.39,-534.5 3606.39,-579.5 3707.39,-579.5 3707.39,-534.5 3606.39,-534.5"/>
<text text-anchor="start" x="3608.89" y="-561" font-family="Times,serif" font-size="20.00">ipv6_packet</text>
<polygon fill="lightgrey" stroke="none" points="3606.89,-534 3606.89,-553 3707.89,-553 3707.89,-534 3606.89,-534"/>
<text text-anchor="start" x="3608.89" y="-539.8" font-family="Times,serif" font-size="14.00">ip_packet</text>
</g>
<!-- inet_packet&#45;&gt;ipv6_packet -->
<g id="edge144" class="edge">
<title>inet_packet&#45;&gt;ipv6_packet:n</title>
<path fill="none" stroke="#5a43ab" stroke-width="2" d="M3656.5,-891.92C3650.08,-844.64 3632.9,-707.83 3631.94,-590.23"/>
<polygon fill="#5a43ab" stroke="#5a43ab" stroke-width="2" points="3635.44,-589.99 3631.89,-580 3628.44,-590.01 3635.44,-589.99"/>
<path fill="none" stroke="#5a43ab" stroke-width="2" d="M3670.65,-891.89C3667.32,-844.54 3658.42,-707.55 3657.92,-590.21"/>
<polygon fill="#5a43ab" stroke="#5a43ab" stroke-width="2" points="3661.42,-589.99 3657.89,-580 3654.42,-590.01 3661.42,-589.99"/>
</g>
<!-- bzip2&#45;&gt;probe -->
<g id="edge20" class="edge">
@ -966,14 +966,14 @@
<!-- ether8023_frame&#45;&gt;inet_packet -->
<g id="edge21" class="edge">
<title>ether8023_frame:e&#45;&gt;inet_packet:n</title>
<path fill="none" stroke="#b8865e" stroke-width="2" d="M4055.89,-1249C4279.09,-1249 3677.58,-1158.43 3659.32,-939.2"/>
<polygon fill="#b8865e" stroke="#b8865e" stroke-width="2" points="3662.81,-938.85 3658.89,-929 3655.81,-939.14 3662.81,-938.85"/>
<path fill="none" stroke="#b8865e" stroke-width="2" d="M4055.89,-1249C4274.69,-1249 3690.06,-1154.1 3672.31,-939"/>
<polygon fill="#b8865e" stroke="#b8865e" stroke-width="2" points="3675.8,-938.85 3671.89,-929 3668.81,-939.14 3675.8,-938.85"/>
</g>
<!-- flac&#45;&gt;flac_frame -->
<g id="edge23" class="edge">
<title>flac:e&#45;&gt;flac_frame:n</title>
<path fill="none" stroke="#609e78" stroke-width="2" d="M938.89,-887C1054.6,-887 884.19,-747.34 802.89,-665 755.21,-616.71 677.32,-644.32 669.53,-586.11"/>
<polygon fill="#609e78" stroke="#609e78" stroke-width="2" points="673.01,-585.76 668.89,-576 666.03,-586.2 673.01,-585.76"/>
<path fill="none" stroke="#609e78" stroke-width="2" d="M950.89,-887C1066.6,-887 897.77,-745.75 814.89,-665 763.12,-614.56 677.75,-648.31 669.53,-586.33"/>
<polygon fill="#609e78" stroke="#609e78" stroke-width="2" points="673.01,-585.76 668.89,-576 666.02,-586.2 673.01,-585.76"/>
</g>
<!-- flac_metadatablocks -->
<g id="node30" class="node">
@ -986,8 +986,8 @@
<!-- flac&#45;&gt;flac_metadatablocks -->
<g id="edge22" class="edge">
<title>flac:e&#45;&gt;flac_metadatablocks:n</title>
<path fill="none" stroke="#609e78" stroke-width="2" d="M938.89,-906C963.84,-906 977.91,-777.49 802.89,-665 702.58,-600.52 281.6,-701.6 257.02,-595.21"/>
<polygon fill="#609e78" stroke="#609e78" stroke-width="2" points="260.47,-594.56 255.89,-585 253.51,-595.32 260.47,-594.56"/>
<path fill="none" stroke="#609e78" stroke-width="2" d="M950.89,-906C975.91,-906 990.51,-777.49 814.89,-665 712.22,-599.23 281.29,-704.22 256.97,-595.1"/>
<polygon fill="#609e78" stroke="#609e78" stroke-width="2" points="260.43,-594.57 255.89,-585 253.47,-595.31 260.43,-594.57"/>
</g>
<!-- flac_metadatablock -->
<g id="node31" class="node">
@ -1010,54 +1010,54 @@
<!-- flac_streaminfo -->
<g id="node32" class="node">
<title>flac_streaminfo</title>
<polygon fill="paleturquoise" stroke="none" points="397.89,-246.5 397.89,-272.5 525.89,-272.5 525.89,-246.5 397.89,-246.5"/>
<text text-anchor="start" x="399.89" y="-254.5" font-family="Times,serif" font-size="20.00">flac_streaminfo</text>
<polygon fill="paleturquoise" stroke="none" points="402.89,-246.5 402.89,-272.5 530.89,-272.5 530.89,-246.5 402.89,-246.5"/>
<text text-anchor="start" x="404.89" y="-254.5" font-family="Times,serif" font-size="20.00">flac_streaminfo</text>
</g>
<!-- flac_metadatablock&#45;&gt;flac_streaminfo -->
<g id="edge24" class="edge">
<title>flac_metadatablock:e&#45;&gt;flac_streaminfo:n</title>
<path fill="none" stroke="#747787" stroke-width="2" d="M420.89,-409.5C478.57,-409.5 463.84,-346.95 462.06,-288.58"/>
<polygon fill="#747787" stroke="#747787" stroke-width="2" points="465.56,-288.44 461.89,-278.5 458.56,-288.56 465.56,-288.44"/>
<path fill="none" stroke="#747787" stroke-width="2" d="M420.89,-409.5C479.23,-409.5 468.38,-347.58 467.02,-288.68"/>
<polygon fill="#747787" stroke="#747787" stroke-width="2" points="470.52,-288.46 466.89,-278.5 463.52,-288.54 470.52,-288.46"/>
</g>
<!-- flac_picture -->
<g id="node33" class="node">
<title>flac_picture</title>
<polygon fill="paleturquoise" stroke="none" points="644.89,-112 644.89,-157 742.89,-157 742.89,-112 644.89,-112"/>
<text text-anchor="start" x="646.89" y="-138.5" font-family="Times,serif" font-size="20.00">flac_picture</text>
<polygon fill="lightgrey" stroke="none" points="644.89,-111.5 644.89,-130.5 742.89,-130.5 742.89,-111.5 644.89,-111.5"/>
<text text-anchor="start" x="646.89" y="-117.3" font-family="Times,serif" font-size="14.00">image</text>
<polygon fill="paleturquoise" stroke="none" points="649.89,-112 649.89,-157 747.89,-157 747.89,-112 649.89,-112"/>
<text text-anchor="start" x="651.89" y="-138.5" font-family="Times,serif" font-size="20.00">flac_picture</text>
<polygon fill="lightgrey" stroke="none" points="649.89,-111.5 649.89,-130.5 747.89,-130.5 747.89,-111.5 649.89,-111.5"/>
<text text-anchor="start" x="651.89" y="-117.3" font-family="Times,serif" font-size="14.00">image</text>
</g>
<!-- flac_metadatablock&#45;&gt;flac_picture -->
<g id="edge25" class="edge">
<title>flac_metadatablock:e&#45;&gt;flac_picture:n</title>
<path fill="none" stroke="#747787" stroke-width="2" d="M420.89,-389.5C492.47,-389.5 338.35,-289.03 382.89,-233 468.94,-124.76 682.67,-293.88 693.47,-171.19"/>
<polygon fill="#747787" stroke="#747787" stroke-width="2" points="696.98,-171.14 693.89,-161 689.98,-170.85 696.98,-171.14"/>
<path fill="none" stroke="#747787" stroke-width="2" d="M420.89,-389.5C491.98,-389.5 343.66,-288.65 387.89,-233 473.94,-124.76 687.67,-293.88 698.47,-171.19"/>
<polygon fill="#747787" stroke="#747787" stroke-width="2" points="701.98,-171.14 698.89,-161 694.98,-170.85 701.98,-171.14"/>
</g>
<!-- vorbis_comment -->
<g id="node34" class="node">
<title>vorbis_comment</title>
<polygon fill="paleturquoise" stroke="none" points="556.39,-237 556.39,-282 693.39,-282 693.39,-237 556.39,-237"/>
<text text-anchor="start" x="558.89" y="-263.5" font-family="Times,serif" font-size="20.00">vorbis_comment</text>
<polygon fill="lightgrey" stroke="none" points="556.89,-236.5 556.89,-255.5 693.89,-255.5 693.89,-236.5 556.89,-236.5"/>
<text text-anchor="start" x="558.89" y="-242.3" font-family="Times,serif" font-size="14.00">flac_picture</text>
<polygon fill="paleturquoise" stroke="none" points="561.39,-237 561.39,-282 698.39,-282 698.39,-237 561.39,-237"/>
<text text-anchor="start" x="563.89" y="-263.5" font-family="Times,serif" font-size="20.00">vorbis_comment</text>
<polygon fill="lightgrey" stroke="none" points="561.89,-236.5 561.89,-255.5 698.89,-255.5 698.89,-236.5 561.89,-236.5"/>
<text text-anchor="start" x="563.89" y="-242.3" font-family="Times,serif" font-size="14.00">flac_picture</text>
</g>
<!-- flac_metadatablock&#45;&gt;vorbis_comment -->
<g id="edge26" class="edge">
<title>flac_metadatablock:e&#45;&gt;vorbis_comment:n</title>
<path fill="none" stroke="#747787" stroke-width="2" d="M420.89,-370.5C466.61,-370.5 604.21,-339.75 622.81,-295.86"/>
<polygon fill="#747787" stroke="#747787" stroke-width="2" points="626.25,-296.51 624.89,-286 619.4,-295.06 626.25,-296.51"/>
<path fill="none" stroke="#747787" stroke-width="2" d="M420.89,-370.5C467.57,-370.5 608.68,-340.64 627.75,-296.05"/>
<polygon fill="#747787" stroke="#747787" stroke-width="2" points="631.23,-296.51 629.89,-286 624.39,-295.05 631.23,-296.51"/>
</g>
<!-- flac_picture&#45;&gt;image -->
<g id="edge28" class="edge">
<title>flac_picture:e&#45;&gt;image:n</title>
<path fill="none" stroke="#72a899" stroke-width="2" d="M743.89,-120.5C885.71,-120.5 3280.89,-260.69 3280.89,-402.5 3280.89,-558 3280.89,-558 3280.89,-558 3280.89,-682.75 2432.19,-1363.61 2375.83,-1292.08"/>
<path fill="none" stroke="#72a899" stroke-width="2" d="M748.89,-120.5C890.43,-120.5 3280.89,-260.96 3280.89,-402.5 3280.89,-558 3280.89,-558 3280.89,-558 3280.89,-682.75 2432.19,-1363.61 2375.83,-1292.08"/>
<polygon fill="#72a899" stroke="#72a899" stroke-width="2" points="2379.05,-1290.62 2372.89,-1282 2372.33,-1292.58 2379.05,-1290.62"/>
</g>
<!-- vorbis_comment&#45;&gt;flac_picture -->
<g id="edge117" class="edge">
<title>vorbis_comment:e&#45;&gt;flac_picture:n</title>
<path fill="none" stroke="#a79097" stroke-width="2" d="M694.89,-245.5C729.08,-245.5 700.21,-206.61 694.75,-171.31"/>
<polygon fill="#a79097" stroke="#a79097" stroke-width="2" points="698.21,-170.68 693.89,-161 691.23,-171.25 698.21,-170.68"/>
<path fill="none" stroke="#a79097" stroke-width="2" d="M699.89,-245.5C734.08,-245.5 705.21,-206.61 699.75,-171.31"/>
<polygon fill="#a79097" stroke="#a79097" stroke-width="2" points="703.21,-170.68 698.89,-161 696.23,-171.25 703.21,-170.68"/>
</g>
<!-- gzip&#45;&gt;probe -->
<g id="edge29" class="edge">
@ -1146,70 +1146,70 @@
<!-- ip_packet -->
<g id="node44" class="node">
<title>ip_packet</title>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3530.39,-385.5C3530.39,-385.5 3621.39,-385.5 3621.39,-385.5 3627.39,-385.5 3633.39,-391.5 3633.39,-397.5 3633.39,-397.5 3633.39,-409.5 3633.39,-409.5 3633.39,-415.5 3627.39,-421.5 3621.39,-421.5 3621.39,-421.5 3530.39,-421.5 3530.39,-421.5 3524.39,-421.5 3518.39,-415.5 3518.39,-409.5 3518.39,-409.5 3518.39,-397.5 3518.39,-397.5 3518.39,-391.5 3524.39,-385.5 3530.39,-385.5"/>
<text text-anchor="middle" x="3575.89" y="-397.5" font-family="Times,serif" font-size="25.00">ip_packet</text>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3538.39,-385.5C3538.39,-385.5 3629.39,-385.5 3629.39,-385.5 3635.39,-385.5 3641.39,-391.5 3641.39,-397.5 3641.39,-397.5 3641.39,-409.5 3641.39,-409.5 3641.39,-415.5 3635.39,-421.5 3629.39,-421.5 3629.39,-421.5 3538.39,-421.5 3538.39,-421.5 3532.39,-421.5 3526.39,-415.5 3526.39,-409.5 3526.39,-409.5 3526.39,-397.5 3526.39,-397.5 3526.39,-391.5 3532.39,-385.5 3538.39,-385.5"/>
<text text-anchor="middle" x="3583.89" y="-397.5" font-family="Times,serif" font-size="25.00">ip_packet</text>
</g>
<!-- ipv4_packet&#45;&gt;ip_packet -->
<g id="edge37" class="edge">
<title>ipv4_packet:e&#45;&gt;ip_packet:n</title>
<path fill="none" stroke="#b3716f" stroke-width="2" d="M3537.89,-543C3563.12,-543 3573.69,-468.4 3575.58,-432.88"/>
<polygon fill="#b3716f" stroke="#b3716f" stroke-width="2" points="3579.09,-432.6 3575.89,-422.5 3572.09,-432.39 3579.09,-432.6"/>
<path fill="none" stroke="#b3716f" stroke-width="2" d="M3524.89,-543C3581.15,-543 3583.77,-488.83 3583.89,-432.63"/>
<polygon fill="#b3716f" stroke="#b3716f" stroke-width="2" points="3587.39,-432.5 3583.89,-422.5 3580.39,-432.5 3587.39,-432.5"/>
</g>
<!-- udp_datagram -->
<g id="node86" class="node">
<title>udp_datagram</title>
<polygon fill="paleturquoise" stroke="none" points="3566.89,-237 3566.89,-282 3684.89,-282 3684.89,-237 3566.89,-237"/>
<text text-anchor="start" x="3568.89" y="-263.5" font-family="Times,serif" font-size="20.00">udp_datagram</text>
<polygon fill="lightgrey" stroke="none" points="3566.89,-236.5 3566.89,-255.5 3684.89,-255.5 3684.89,-236.5 3566.89,-236.5"/>
<text text-anchor="start" x="3568.89" y="-242.3" font-family="Times,serif" font-size="14.00">udp_payload</text>
<polygon fill="paleturquoise" stroke="none" points="3558.89,-237 3558.89,-282 3676.89,-282 3676.89,-237 3558.89,-237"/>
<text text-anchor="start" x="3560.89" y="-263.5" font-family="Times,serif" font-size="20.00">udp_datagram</text>
<polygon fill="lightgrey" stroke="none" points="3558.89,-236.5 3558.89,-255.5 3676.89,-255.5 3676.89,-236.5 3558.89,-236.5"/>
<text text-anchor="start" x="3560.89" y="-242.3" font-family="Times,serif" font-size="14.00">udp_payload</text>
</g>
<!-- ip_packet&#45;&gt;udp_datagram -->
<g id="edge169" class="edge">
<title>ip_packet&#45;&gt;udp_datagram:n</title>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3588.25,-385.15C3601.79,-364.56 3622.03,-328.47 3625.41,-292.6"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3628.91,-292.66 3625.89,-282.5 3621.92,-292.32 3628.91,-292.66"/>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3591.95,-385.44C3601.1,-364.61 3615.09,-327.81 3617.53,-292.8"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3621.03,-292.62 3617.89,-282.5 3614.04,-292.37 3621.03,-292.62"/>
</g>
<!-- icmp -->
<g id="node98" class="node">
<title>icmp</title>
<polygon fill="paleturquoise" stroke="none" points="3714.89,-246.5 3714.89,-272.5 3758.89,-272.5 3758.89,-246.5 3714.89,-246.5"/>
<text text-anchor="start" x="3716.89" y="-254.5" font-family="Times,serif" font-size="20.00">icmp</text>
<polygon fill="paleturquoise" stroke="none" points="3706.89,-246.5 3706.89,-272.5 3750.89,-272.5 3750.89,-246.5 3706.89,-246.5"/>
<text text-anchor="start" x="3708.89" y="-254.5" font-family="Times,serif" font-size="20.00">icmp</text>
</g>
<!-- ip_packet&#45;&gt;icmp -->
<g id="edge141" class="edge">
<title>ip_packet&#45;&gt;icmp:n</title>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3628.17,-385.32C3672.33,-367.35 3729.48,-334.56 3736.23,-283.58"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3739.73,-283.71 3736.89,-273.5 3732.75,-283.25 3739.73,-283.71"/>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3627.79,-385.36C3667.8,-366.72 3721.65,-332.84 3728.23,-283.56"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3731.73,-283.71 3728.89,-273.5 3724.74,-283.25 3731.73,-283.71"/>
</g>
<!-- icmpv6 -->
<g id="node99" class="node">
<title>icmpv6</title>
<polygon fill="paleturquoise" stroke="none" points="3338.89,-246.5 3338.89,-272.5 3402.89,-272.5 3402.89,-246.5 3338.89,-246.5"/>
<text text-anchor="start" x="3340.89" y="-254.5" font-family="Times,serif" font-size="20.00">icmpv6</text>
<polygon fill="paleturquoise" stroke="none" points="3330.89,-246.5 3330.89,-272.5 3394.89,-272.5 3394.89,-246.5 3330.89,-246.5"/>
<text text-anchor="start" x="3332.89" y="-254.5" font-family="Times,serif" font-size="20.00">icmpv6</text>
</g>
<!-- ip_packet&#45;&gt;icmpv6 -->
<g id="edge142" class="edge">
<title>ip_packet&#45;&gt;icmpv6:n</title>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3518.25,-391.9C3460.57,-377.75 3379.3,-346.74 3371.5,-283.5"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3374.99,-283.27 3370.89,-273.5 3368.01,-283.69 3374.99,-283.27"/>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3526.12,-394.23C3463.71,-381.83 3371.99,-352.1 3363.53,-283.85"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3367,-283.27 3362.89,-273.5 3360.01,-283.69 3367,-283.27"/>
</g>
<!-- tcp_segment -->
<g id="node103" class="node">
<title>tcp_segment</title>
<polygon fill="paleturquoise" stroke="none" points="3432.89,-246.5 3432.89,-272.5 3536.89,-272.5 3536.89,-246.5 3432.89,-246.5"/>
<text text-anchor="start" x="3434.89" y="-254.5" font-family="Times,serif" font-size="20.00">tcp_segment</text>
<polygon fill="paleturquoise" stroke="none" points="3424.89,-246.5 3424.89,-272.5 3528.89,-272.5 3528.89,-246.5 3424.89,-246.5"/>
<text text-anchor="start" x="3426.89" y="-254.5" font-family="Times,serif" font-size="20.00">tcp_segment</text>
</g>
<!-- ip_packet&#45;&gt;tcp_segment -->
<g id="edge165" class="edge">
<title>ip_packet&#45;&gt;tcp_segment:n</title>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3552.93,-385.17C3527.92,-364.3 3490.76,-326.61 3485.52,-283.63"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3489,-283.27 3484.89,-273.5 3482.01,-283.7 3489,-283.27"/>
<path fill="none" stroke="#9940aa" stroke-width="2" d="M3555.78,-385.35C3526.25,-365.11 3483.27,-328.44 3477.54,-283.52"/>
<polygon fill="#9940aa" stroke="#9940aa" stroke-width="2" points="3481.03,-283.26 3476.89,-273.5 3474.04,-283.7 3481.03,-283.26"/>
</g>
<!-- ipv6_packet&#45;&gt;ip_packet -->
<g id="edge38" class="edge">
<title>ipv6_packet:e&#45;&gt;ip_packet:n</title>
<path fill="none" stroke="#583eb2" stroke-width="2" d="M3682.89,-543C3688.47,-543 3684.21,-535.57 3681.89,-530.5 3655.51,-472.65 3584.29,-487.76 3576.57,-432.78"/>
<polygon fill="#583eb2" stroke="#583eb2" stroke-width="2" points="3580.05,-432.25 3575.89,-422.5 3573.06,-432.71 3580.05,-432.25"/>
<path fill="none" stroke="#583eb2" stroke-width="2" d="M3708.89,-543C3714.47,-543 3710.4,-535.48 3707.89,-530.5 3676.6,-468.43 3592.65,-492.85 3584.53,-432.49"/>
<polygon fill="#583eb2" stroke="#583eb2" stroke-width="2" points="3588.02,-432.26 3583.89,-422.5 3581.04,-432.7 3588.02,-432.26"/>
</g>
<!-- exif -->
<g id="node47" class="node">
@ -1292,7 +1292,7 @@
<!-- matroska&#45;&gt;flac_metadatablocks -->
<g id="edge48" class="edge">
<title>matroska:e&#45;&gt;flac_metadatablocks:n</title>
<path fill="none" stroke="#afb66f" stroke-width="2" d="M1437.89,-1612.5C1464.73,-1612.5 1454.29,-1391.43 1436.89,-1371 1309.84,-1221.81 1182.39,-1375.32 1001.89,-1299 653.99,-1151.89 731.85,-899.71 435.89,-665 370.11,-612.83 264.96,-667.66 256.45,-595.04"/>
<path fill="none" stroke="#afb66f" stroke-width="2" d="M1437.89,-1612.5C1464.73,-1612.5 1454.29,-1391.43 1436.89,-1371 1310.15,-1222.12 1181.88,-1377.69 1002.89,-1299 656.84,-1146.85 733.88,-897.61 435.89,-665 369.72,-613.34 264.93,-667.7 256.44,-595.04"/>
<polygon fill="#afb66f" stroke="#afb66f" stroke-width="2" points="259.94,-594.79 255.89,-585 252.95,-595.18 259.94,-594.79"/>
</g>
<!-- matroska&#45;&gt;hevc_dcr -->
@ -1360,8 +1360,8 @@
<!-- matroska&#45;&gt;opus_packet -->
<g id="edge56" class="edge">
<title>matroska:e&#45;&gt;opus_packet:n</title>
<path fill="none" stroke="#afb66f" stroke-width="2" d="M1437.89,-1459.5C1457.56,-1459.5 1449.59,-1386.02 1436.89,-1371 1320.56,-1233.38 1167.01,-1424.7 1037.89,-1299 936.04,-1199.84 1051.51,-767.38 952.89,-665 872.47,-581.5 447.75,-697.14 422.11,-595.2"/>
<polygon fill="#afb66f" stroke="#afb66f" stroke-width="2" points="425.55,-594.52 420.89,-585 418.6,-595.34 425.55,-594.52"/>
<path fill="none" stroke="#afb66f" stroke-width="2" d="M1437.89,-1459.5C1457.56,-1459.5 1449.59,-1386.02 1436.89,-1371 1320.56,-1233.38 1167.01,-1424.7 1037.89,-1299 936.28,-1200.07 1062.2,-768.17 964.89,-665 883.51,-578.71 447.53,-699.7 422.06,-595.1"/>
<polygon fill="#afb66f" stroke="#afb66f" stroke-width="2" points="425.52,-594.53 420.89,-585 418.56,-595.33 425.52,-594.53"/>
</g>
<!-- vorbis_packet -->
<g id="node57" class="node">
@ -1416,20 +1416,20 @@
<!-- opus_packet&#45;&gt;vorbis_comment -->
<g id="edge100" class="edge">
<title>opus_packet:e&#45;&gt;vorbis_comment:n</title>
<path fill="none" stroke="#79624e" stroke-width="2" d="M473.89,-543C473.89,-543 593.15,-340.04 619.7,-294.85"/>
<polygon fill="#79624e" stroke="#79624e" stroke-width="2" points="622.85,-296.39 624.89,-286 616.81,-292.85 622.85,-296.39"/>
<path fill="none" stroke="#79624e" stroke-width="2" d="M473.89,-543C485.25,-543 481.05,-530.74 486.89,-521 547.99,-419.12 625.37,-408.79 629.7,-296.12"/>
<polygon fill="#79624e" stroke="#79624e" stroke-width="2" points="633.21,-296.06 629.89,-286 626.21,-295.93 633.21,-296.06"/>
</g>
<!-- vorbis_packet&#45;&gt;vorbis_comment -->
<g id="edge118" class="edge">
<title>vorbis_packet:e&#45;&gt;vorbis_comment:n</title>
<path fill="none" stroke="#77a776" stroke-width="2" d="M803.89,-389.5C809.47,-389.5 805.99,-381.63 802.89,-377 755.56,-306.15 635.31,-369.21 625.53,-296.14"/>
<polygon fill="#77a776" stroke="#77a776" stroke-width="2" points="629.01,-295.76 624.89,-286 622.03,-296.2 629.01,-295.76"/>
<path fill="none" stroke="#77a776" stroke-width="2" d="M803.89,-389.5C809.47,-389.5 805.96,-381.65 802.89,-377 757.11,-307.6 640.51,-367.26 630.57,-296.36"/>
<polygon fill="#77a776" stroke="#77a776" stroke-width="2" points="634.04,-295.75 629.89,-286 627.05,-296.21 634.04,-295.75"/>
</g>
<!-- mp3&#45;&gt;apev2 -->
<g id="edge64" class="edge">
<title>mp3:e&#45;&gt;apev2:n</title>
<path fill="none" stroke="#6496b9" stroke-width="2" d="M2643.89,-1869.5C2657.9,-1869.5 2646.55,-1851.52 2642.89,-1838 2611.89,-1723.47 2517.45,-1718.79 2512.13,-1606.59"/>
<polygon fill="#6496b9" stroke="#6496b9" stroke-width="2" points="2515.63,-1606.42 2511.89,-1596.5 2508.63,-1606.58 2515.63,-1606.42"/>
<path fill="none" stroke="#6496b9" stroke-width="2" d="M2643.89,-1869.5C2657.9,-1869.5 2646.53,-1851.53 2642.89,-1838 2612.13,-1723.62 2518.41,-1718.6 2513.13,-1606.57"/>
<polygon fill="#6496b9" stroke="#6496b9" stroke-width="2" points="2516.63,-1606.42 2512.89,-1596.5 2509.63,-1606.58 2516.63,-1606.42"/>
</g>
<!-- mp3&#45;&gt;mp3_frame -->
<g id="edge65" class="edge">
@ -1744,8 +1744,8 @@
<!-- pcap&#45;&gt;ipv4_packet -->
<g id="edge103" class="edge">
<title>pcap:e&#45;&gt;ipv4_packet:n</title>
<path fill="none" stroke="#4c9a9c" stroke-width="2" d="M3353.89,-1869.5C3369.22,-1869.5 3361.13,-1851.75 3367.89,-1838 3383.96,-1805.35 3396.78,-1800.96 3406.89,-1766 3442.62,-1642.5 3483.99,-757.58 3485.83,-595.04"/>
<polygon fill="#4c9a9c" stroke="#4c9a9c" stroke-width="2" points="3489.33,-595.02 3485.89,-585 3482.33,-594.98 3489.33,-595.02"/>
<path fill="none" stroke="#4c9a9c" stroke-width="2" d="M3405.89,-1869.5C3440.16,-1869.5 3470.32,-721.07 3472.74,-595.35"/>
<polygon fill="#4c9a9c" stroke="#4c9a9c" stroke-width="2" points="3476.24,-595.05 3472.89,-585 3469.24,-594.95 3476.24,-595.05"/>
</g>
<!-- link_frame -->
<g id="node76" class="node">
@ -1756,20 +1756,20 @@
<!-- pcap&#45;&gt;link_frame -->
<g id="edge101" class="edge">
<title>pcap:e&#45;&gt;link_frame:n</title>
<path fill="none" stroke="#4c9a9c" stroke-width="2" d="M3353.89,-1908.5C3369.87,-1908.5 3359.6,-1851.65 3367.89,-1838 3394.5,-1794.22 3422.5,-1803.03 3457.89,-1766 3523.32,-1697.54 3583.52,-1686.38 3587.67,-1597.53"/>
<polygon fill="#4c9a9c" stroke="#4c9a9c" stroke-width="2" points="3591.17,-1597.58 3587.89,-1587.5 3584.17,-1597.42 3591.17,-1597.58"/>
<path fill="none" stroke="#4c9a9c" stroke-width="2" d="M3405.89,-1908.5C3421.87,-1908.5 3413.77,-1852.75 3419.89,-1838 3469.93,-1717.45 3581.79,-1721.26 3587.65,-1597.81"/>
<polygon fill="#4c9a9c" stroke="#4c9a9c" stroke-width="2" points="3591.16,-1597.58 3587.89,-1587.5 3584.16,-1597.42 3591.16,-1597.58"/>
</g>
<!-- tcp_stream -->
<g id="node77" class="node">
<title>tcp_stream</title>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3284.39,-1550.5C3284.39,-1550.5 3387.39,-1550.5 3387.39,-1550.5 3393.39,-1550.5 3399.39,-1556.5 3399.39,-1562.5 3399.39,-1562.5 3399.39,-1574.5 3399.39,-1574.5 3399.39,-1580.5 3393.39,-1586.5 3387.39,-1586.5 3387.39,-1586.5 3284.39,-1586.5 3284.39,-1586.5 3278.39,-1586.5 3272.39,-1580.5 3272.39,-1574.5 3272.39,-1574.5 3272.39,-1562.5 3272.39,-1562.5 3272.39,-1556.5 3278.39,-1550.5 3284.39,-1550.5"/>
<text text-anchor="middle" x="3335.89" y="-1562.5" font-family="Times,serif" font-size="25.00">tcp_stream</text>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3288.39,-1550.5C3288.39,-1550.5 3391.39,-1550.5 3391.39,-1550.5 3397.39,-1550.5 3403.39,-1556.5 3403.39,-1562.5 3403.39,-1562.5 3403.39,-1574.5 3403.39,-1574.5 3403.39,-1580.5 3397.39,-1586.5 3391.39,-1586.5 3391.39,-1586.5 3288.39,-1586.5 3288.39,-1586.5 3282.39,-1586.5 3276.39,-1580.5 3276.39,-1574.5 3276.39,-1574.5 3276.39,-1562.5 3276.39,-1562.5 3276.39,-1556.5 3282.39,-1550.5 3288.39,-1550.5"/>
<text text-anchor="middle" x="3339.89" y="-1562.5" font-family="Times,serif" font-size="25.00">tcp_stream</text>
</g>
<!-- pcap&#45;&gt;tcp_stream -->
<g id="edge102" class="edge">
<title>pcap:e&#45;&gt;tcp_stream:n</title>
<path fill="none" stroke="#4c9a9c" stroke-width="2" d="M3353.89,-1888.5C3385.11,-1888.5 3342.54,-1656.33 3336.57,-1597.49"/>
<polygon fill="#4c9a9c" stroke="#4c9a9c" stroke-width="2" points="3340.06,-1597.24 3335.89,-1587.5 3333.08,-1597.71 3340.06,-1597.24"/>
<path fill="none" stroke="#4c9a9c" stroke-width="2" d="M3405.89,-1888.5C3419.9,-1888.5 3406.77,-1870.88 3404.89,-1857 3388.88,-1738.35 3342.62,-1712.16 3340.01,-1597.73"/>
<polygon fill="#4c9a9c" stroke="#4c9a9c" stroke-width="2" points="3343.51,-1597.46 3339.89,-1587.5 3336.51,-1597.54 3343.51,-1597.46"/>
</g>
<!-- link_frame&#45;&gt;bsd_loopback_frame -->
<g id="edge131" class="edge">
@ -1824,8 +1824,8 @@
<!-- tcp_stream&#45;&gt;rtmp -->
<g id="edge161" class="edge">
<title>tcp_stream&#45;&gt;rtmp:n</title>
<path fill="none" stroke="#536f9d" stroke-width="2" d="M3331.29,-1550.5C3320.58,-1509.41 3294.74,-1401.1 3292.99,-1306.04"/>
<polygon fill="#536f9d" stroke="#536f9d" stroke-width="2" points="3296.49,-1305.97 3292.89,-1296 3289.49,-1306.03 3296.49,-1305.97"/>
<path fill="none" stroke="#536f9d" stroke-width="2" d="M3334.78,-1550.21C3323.01,-1508.95 3294.9,-1401.07 3293,-1306.04"/>
<polygon fill="#536f9d" stroke="#536f9d" stroke-width="2" points="3296.5,-1305.96 3292.89,-1296 3289.5,-1306.04 3296.5,-1305.96"/>
</g>
<!-- dns_tcp -->
<g id="node95" class="node">
@ -1836,26 +1836,26 @@
<!-- tcp_stream&#45;&gt;dns_tcp -->
<g id="edge134" class="edge">
<title>tcp_stream&#45;&gt;dns_tcp:n</title>
<path fill="none" stroke="#536f9d" stroke-width="2" d="M3340.86,-1550.32C3352.92,-1507.1 3382.88,-1389.99 3384.8,-1287.22"/>
<polygon fill="#536f9d" stroke="#536f9d" stroke-width="2" points="3388.3,-1287.03 3384.89,-1277 3381.3,-1286.97 3388.3,-1287.03"/>
<path fill="none" stroke="#536f9d" stroke-width="2" d="M3344.46,-1550.29C3355.53,-1507.01 3383.04,-1389.77 3384.81,-1287.19"/>
<polygon fill="#536f9d" stroke="#536f9d" stroke-width="2" points="3388.31,-1287.03 3384.89,-1277 3381.31,-1286.97 3388.31,-1287.03"/>
</g>
<!-- pcapng&#45;&gt;ipv4_packet -->
<g id="edge106" class="edge">
<title>pcapng:e&#45;&gt;ipv4_packet:n</title>
<path fill="none" stroke="#53b374" stroke-width="2" d="M2817.89,-1869.5C2833.22,-1869.5 2822.07,-1849.76 2831.89,-1838 2868.42,-1794.3 2899.16,-1807.75 2937.89,-1766 3125.87,-1563.43 3106.94,-1464.7 3247.89,-1227 3267.02,-1194.74 3279.42,-1190.37 3291.89,-1155 3364.97,-947.89 3236.54,-849.37 3355.89,-665 3390.75,-611.16 3475.88,-648.25 3485.08,-595.15"/>
<polygon fill="#53b374" stroke="#53b374" stroke-width="2" points="3488.59,-595.25 3485.89,-585 3481.61,-594.69 3488.59,-595.25"/>
<path fill="none" stroke="#53b374" stroke-width="2" d="M2817.89,-1869.5C2833.22,-1869.5 2822.07,-1849.76 2831.89,-1838 2868.42,-1794.3 2899.16,-1807.75 2937.89,-1766 3125.87,-1563.43 3106.94,-1464.7 3247.89,-1227 3267.02,-1194.74 3279.42,-1190.37 3291.89,-1155 3364.97,-947.89 3241.01,-852.18 3355.89,-665 3386.91,-614.46 3463.22,-644.01 3472.06,-595.08"/>
<polygon fill="#53b374" stroke="#53b374" stroke-width="2" points="3475.55,-595.26 3472.89,-585 3468.58,-594.68 3475.55,-595.26"/>
</g>
<!-- pcapng&#45;&gt;link_frame -->
<g id="edge104" class="edge">
<title>pcapng:e&#45;&gt;link_frame:n</title>
<path fill="none" stroke="#53b374" stroke-width="2" d="M2817.89,-1908.5C2849.84,-1908.5 2808.51,-1859.77 2831.89,-1838 3020.4,-1662.51 3175.15,-1878.38 3406.89,-1766 3505.48,-1718.2 3583.07,-1701.5 3587.68,-1597.5"/>
<path fill="none" stroke="#53b374" stroke-width="2" d="M2817.89,-1908.5C2849.84,-1908.5 2808.5,-1859.76 2831.89,-1838 3021.77,-1661.38 3178.15,-1880.35 3410.89,-1766 3508.04,-1718.27 3583.08,-1700.35 3587.67,-1597.7"/>
<polygon fill="#53b374" stroke="#53b374" stroke-width="2" points="3591.18,-1597.57 3587.89,-1587.5 3584.18,-1597.42 3591.18,-1597.57"/>
</g>
<!-- pcapng&#45;&gt;tcp_stream -->
<g id="edge105" class="edge">
<title>pcapng:e&#45;&gt;tcp_stream:n</title>
<path fill="none" stroke="#53b374" stroke-width="2" d="M2817.89,-1888.5C2841.19,-1888.5 2814.65,-1853.65 2831.89,-1838 2969.23,-1713.38 3093.26,-1875.55 3242.89,-1766 3312.25,-1715.22 3334.19,-1679.81 3335.8,-1597.74"/>
<polygon fill="#53b374" stroke="#53b374" stroke-width="2" points="3339.3,-1597.53 3335.89,-1587.5 3332.3,-1597.47 3339.3,-1597.53"/>
<path fill="none" stroke="#53b374" stroke-width="2" d="M2817.89,-1888.5C2841.19,-1888.5 2814.65,-1853.65 2831.89,-1838 2969.23,-1713.38 3092.31,-1874.24 3242.89,-1766 3313.42,-1715.31 3338.02,-1680.52 3339.79,-1597.58"/>
<polygon fill="#53b374" stroke="#53b374" stroke-width="2" points="3343.29,-1597.54 3339.89,-1587.5 3336.29,-1597.46 3343.29,-1597.54"/>
</g>
<!-- rtmp&#45;&gt;mpeg_asc -->
<g id="edge111" class="edge">
@ -1878,14 +1878,14 @@
<!-- sll2_packet&#45;&gt;inet_packet -->
<g id="edge112" class="edge">
<title>sll2_packet:e&#45;&gt;inet_packet:n</title>
<path fill="none" stroke="#88589a" stroke-width="2" d="M3571.89,-1249C3588.81,-1249 3647.98,-994.87 3657.58,-938.93"/>
<polygon fill="#88589a" stroke="#88589a" stroke-width="2" points="3661.05,-939.37 3658.89,-929 3654.11,-938.45 3661.05,-939.37"/>
<path fill="none" stroke="#88589a" stroke-width="2" d="M3571.89,-1249C3588.99,-1249 3658.97,-995.04 3670.33,-938.97"/>
<polygon fill="#88589a" stroke="#88589a" stroke-width="2" points="3673.8,-939.42 3671.89,-929 3666.89,-938.34 3673.8,-939.42"/>
</g>
<!-- sll_packet&#45;&gt;inet_packet -->
<g id="edge113" class="edge">
<title>sll_packet:e&#45;&gt;inet_packet:n</title>
<path fill="none" stroke="#b95b72" stroke-width="2" d="M3685.89,-1249C3719.21,-1249 3666.79,-1001.19 3659.68,-939.24"/>
<polygon fill="#b95b72" stroke="#b95b72" stroke-width="2" points="3663.15,-938.7 3658.89,-929 3656.17,-939.24 3663.15,-938.7"/>
<path fill="none" stroke="#b95b72" stroke-width="2" d="M3685.89,-1249C3719.12,-1249 3678.11,-1001.11 3672.51,-939.23"/>
<polygon fill="#b95b72" stroke="#b95b72" stroke-width="2" points="3675.99,-938.77 3671.89,-929 3669,-939.19 3675.99,-938.77"/>
</g>
<!-- tar&#45;&gt;probe -->
<g id="edge114" class="edge">
@ -1902,26 +1902,26 @@
<!-- udp_payload -->
<g id="node87" class="node">
<title>udp_payload</title>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3622.89,-116.5C3622.89,-116.5 3746.89,-116.5 3746.89,-116.5 3752.89,-116.5 3758.89,-122.5 3758.89,-128.5 3758.89,-128.5 3758.89,-140.5 3758.89,-140.5 3758.89,-146.5 3752.89,-152.5 3746.89,-152.5 3746.89,-152.5 3622.89,-152.5 3622.89,-152.5 3616.89,-152.5 3610.89,-146.5 3610.89,-140.5 3610.89,-140.5 3610.89,-128.5 3610.89,-128.5 3610.89,-122.5 3616.89,-116.5 3622.89,-116.5"/>
<text text-anchor="middle" x="3684.89" y="-128.5" font-family="Times,serif" font-size="25.00">udp_payload</text>
<path fill="palegreen" stroke="palegreen" stroke-width="2" d="M3614.89,-116.5C3614.89,-116.5 3738.89,-116.5 3738.89,-116.5 3744.89,-116.5 3750.89,-122.5 3750.89,-128.5 3750.89,-128.5 3750.89,-140.5 3750.89,-140.5 3750.89,-146.5 3744.89,-152.5 3738.89,-152.5 3738.89,-152.5 3614.89,-152.5 3614.89,-152.5 3608.89,-152.5 3602.89,-146.5 3602.89,-140.5 3602.89,-140.5 3602.89,-128.5 3602.89,-128.5 3602.89,-122.5 3608.89,-116.5 3614.89,-116.5"/>
<text text-anchor="middle" x="3676.89" y="-128.5" font-family="Times,serif" font-size="25.00">udp_payload</text>
</g>
<!-- udp_datagram&#45;&gt;udp_payload -->
<g id="edge116" class="edge">
<title>udp_datagram:e&#45;&gt;udp_payload:n</title>
<path fill="none" stroke="#90b5ac" stroke-width="2" d="M3685.89,-245.5C3703.7,-245.5 3689.73,-191.2 3685.83,-163.69"/>
<polygon fill="#90b5ac" stroke="#90b5ac" stroke-width="2" points="3689.29,-163.14 3684.89,-153.5 3682.32,-163.78 3689.29,-163.14"/>
<path fill="none" stroke="#90b5ac" stroke-width="2" d="M3677.89,-245.5C3695.7,-245.5 3681.73,-191.2 3677.83,-163.69"/>
<polygon fill="#90b5ac" stroke="#90b5ac" stroke-width="2" points="3681.29,-163.14 3676.89,-153.5 3674.32,-163.78 3681.29,-163.14"/>
</g>
<!-- dns -->
<g id="node94" class="node">
<title>dns</title>
<polygon fill="paleturquoise" stroke="none" points="3668.89,-5 3668.89,-31 3700.89,-31 3700.89,-5 3668.89,-5"/>
<text text-anchor="start" x="3670.89" y="-13" font-family="Times,serif" font-size="20.00">dns</text>
<polygon fill="paleturquoise" stroke="none" points="3660.89,-5 3660.89,-31 3692.89,-31 3692.89,-5 3660.89,-5"/>
<text text-anchor="start" x="3662.89" y="-13" font-family="Times,serif" font-size="20.00">dns</text>
</g>
<!-- udp_payload&#45;&gt;dns -->
<g id="edge133" class="edge">
<title>udp_payload&#45;&gt;dns:n</title>
<path fill="none" stroke="#8c4c79" stroke-width="2" d="M3684.89,-116.26C3684.89,-98.35 3684.89,-69.23 3684.89,-42.22"/>
<polygon fill="#8c4c79" stroke="#8c4c79" stroke-width="2" points="3688.39,-42 3684.89,-32 3681.39,-42 3688.39,-42"/>
<path fill="none" stroke="#8c4c79" stroke-width="2" d="M3676.89,-116.26C3676.89,-98.35 3676.89,-69.23 3676.89,-42.22"/>
<polygon fill="#8c4c79" stroke="#8c4c79" stroke-width="2" points="3680.39,-42 3676.89,-32 3673.39,-42 3680.39,-42"/>
</g>
<!-- wav&#45;&gt;id3v2 -->
<g id="edge119" class="edge">

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

View File

@ -1,11 +1,11 @@
$ fq -n _registry.groups.probe
[
"adts",
"apple_bookmark",
"ar",
"avi",
"avro_ocf",
"bitcoin_blkdat",
"bookmark",
"bplist",
"bzip2",
"elf",
@ -41,6 +41,7 @@ adts Audio Data Transport Stream
adts_frame Audio Data Transport Stream frame
amf0 Action Message Format 0
apev2 APEv2 metadata tag
apple_bookmark Apple BookmarkData
ar Unix archive
asn1_ber ASN1 BER (basic encoding rules, also CER and DER)
av1_ccr AV1 Codec Configuration Record
@ -61,7 +62,6 @@ bitcoin_block Bitcoin block
bitcoin_script Bitcoin script
bitcoin_transaction Bitcoin transaction
bits Raw bits
bookmark Apple BookmarkData
bplist Apple Binary Property List
bsd_loopback_frame BSD loopback frame
bson Binary JSON

View File

@ -5,6 +5,7 @@ package all
import (
_ "github.com/wader/fq/format/ape"
_ "github.com/wader/fq/format/apple_bookmark"
_ "github.com/wader/fq/format/ar"
_ "github.com/wader/fq/format/asn1"
_ "github.com/wader/fq/format/av1"
@ -12,7 +13,6 @@ import (
_ "github.com/wader/fq/format/bencode"
_ "github.com/wader/fq/format/bitcoin"
_ "github.com/wader/fq/format/bits"
_ "github.com/wader/fq/format/bookmark"
_ "github.com/wader/fq/format/bplist"
_ "github.com/wader/fq/format/bson"
_ "github.com/wader/fq/format/bzip2"

View File

@ -1,4 +1,4 @@
package bplist
package apple_bookmark
import (
"embed"
@ -11,12 +11,12 @@ import (
"github.com/wader/fq/pkg/scalar"
)
//go:embed bookmark.jq bookmark.md
//go:embed apple_bookmark.jq apple_bookmark.md
var bookmarkFS embed.FS
func init() {
interp.RegisterFormat(decode.Format{
Name: format.BOOKMARK,
Name: format.APPLE_BOOKMARK,
ProbeOrder: format.ProbeOrderBinUnique,
Description: "Apple BookmarkData",
Groups: []string{format.PROBE},

View File

@ -1,4 +1,4 @@
def _bookmark_torepr:
def _apple_bookmark_torepr:
def _f:
( if .type == "String" then .data | tovalue
elif .type == "Data" then .data | tovalue

View File

@ -1,5 +1,5 @@
$ fq dv sample1.book
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample1.book (bookmark) 0x0-0x22f.7 (560)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample1.book (apple_bookmark) 0x0-0x22f.7 (560)
| | | header{}: 0x0-0x2f.7 (48)
0x000|62 6f 6f 6b |book | magic: "book" (valid) 0x0-0x3.7 (4)
0x000| 30 02 00 00 | 0... | total_size: 560 0x4-0x7.7 (4)
@ -151,7 +151,7 @@ $ fq dv sample1.book
0x180| 00 00 00 00| ....| next_toc_offset: 0 0x18c-0x18f.7 (4)
0x190|0d 00 00 00 |.... | num_entries_in_toc: 13 0x190-0x193.7 (4)
$ fq dv sample2.book
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample2.book (bookmark) 0x0-0x2ab.7 (684)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample2.book (apple_bookmark) 0x0-0x2ab.7 (684)
| | | header{}: 0x0-0x2f.7 (48)
0x000|62 6f 6f 6b |book | magic: "book" (valid) 0x0-0x3.7 (4)
0x000| ac 02 00 00 | .... | total_size: 684 0x4-0x7.7 (4)
@ -356,7 +356,7 @@ $ fq dv sample2.book
0x1c0| 00 00 00 00| ....| next_toc_offset: 0 0x1cc-0x1cf.7 (4)
0x1d0|12 00 00 00 |.... | num_entries_in_toc: 18 0x1d0-0x1d3.7 (4)
$ fq dv sample3.book
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample3.book (bookmark) 0x0-0x333.7 (820)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample3.book (apple_bookmark) 0x0-0x333.7 (820)
| | | header{}: 0x0-0x2f.7 (48)
0x000|62 6f 6f 6b |book | magic: "book" (valid) 0x0-0x3.7 (4)
0x000| 34 03 00 00 | 4... | total_size: 820 0x4-0x7.7 (4)
@ -603,7 +603,7 @@ $ fq dv sample3.book
0x250| 00 00 00 00 | .... | next_toc_offset: 0 0x254-0x257.7 (4)
0x250| 12 00 00 00 | .... | num_entries_in_toc: 18 0x258-0x25b.7 (4)
$ fq dv sample4.book
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample4.book (bookmark) 0x0-0x2f3.7 (756)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: sample4.book (apple_bookmark) 0x0-0x2f3.7 (756)
| | | header{}: 0x0-0x2f.7 (48)
0x000|62 6f 6f 6b |book | magic: "book" (valid) 0x0-0x3.7 (4)
0x000| f4 02 00 00 | .... | total_size: 756 0x4-0x7.7 (4)

View File

@ -30,6 +30,7 @@ const (
ADTS_FRAME = "adts_frame"
AMF0 = "amf0"
APEV2 = "apev2"
APPLE_BOOKMARK = "apple_bookmark"
AR = "ar"
ASN1_BER = "asn1_ber"
AV1_CCR = "av1_ccr"
@ -49,7 +50,6 @@ const (
BITCOIN_BLOCK = "bitcoin_block"
BITCOIN_SCRIPT = "bitcoin_script"
BITCOIN_TRANSACTION = "bitcoin_transaction"
BOOKMARK = "bookmark"
BPLIST = "bplist"
BSD_LOOPBACK_FRAME = "bsd_loopback_frame"
BSON = "bson"