From 3f2a2bcefc878a3677d665b7777e796882cb2588 Mon Sep 17 00:00:00 2001 From: tsuki Date: Tue, 23 Dec 2025 22:04:44 +0800 Subject: [PATCH] sync --- Cargo.lock | 1415 ++++++++++++++++- gen/Cargo.toml | 18 +- gen/src/btable.rs | 109 -- gen/src/fr/btable.rs | 154 ++ gen/src/fr/dtable.rs | 151 ++ gen/src/fr/mod.rs | 61 + gen/src/lib.rs | 499 +++--- gen/src/main.rs | 290 +++- gen/src/prelude.rs | 6 + gen/src/wmo/btable.rs | 179 +++ gen/src/{ => wmo}/dtable.rs | 105 +- gen/src/wmo/mod.rs | 2 + rbufr/Cargo.toml | 2 + .../{tables => rtables}/bufr/bufrtabb_11.csv | 0 .../{tables => rtables}/bufr/bufrtabd_11.csv | 0 rbufr/src/block.rs | 46 +- rbufr/src/errors.rs | 7 +- rbufr/src/lib.rs | 36 +- rbufr/src/parser.rs | 16 - rbufr/src/tables.rs | 102 ++ rbufr/tables/master/BUFR_TableB_en_00.bufrtbl | Bin 0 -> 3832 bytes rbufr/tables/master/BUFR_TableB_en_01.bufrtbl | Bin 0 -> 15361 bytes rbufr/tables/master/BUFR_TableB_en_02.bufrtbl | Bin 0 -> 27334 bytes rbufr/tables/master/BUFR_TableB_en_03.bufrtbl | Bin 0 -> 4585 bytes rbufr/tables/master/BUFR_TableB_en_04.bufrtbl | Bin 0 -> 5021 bytes rbufr/tables/master/BUFR_TableB_en_05.bufrtbl | Bin 0 -> 6661 bytes rbufr/tables/master/BUFR_TableB_en_06.bufrtbl | Bin 0 -> 2724 bytes rbufr/tables/master/BUFR_TableB_en_07.bufrtbl | Bin 0 -> 5425 bytes rbufr/tables/master/BUFR_TableB_en_08.bufrtbl | Bin 0 -> 14001 bytes rbufr/tables/master/BUFR_TableB_en_10.bufrtbl | Bin 0 -> 8989 bytes rbufr/tables/master/BUFR_TableB_en_11.bufrtbl | Bin 0 -> 12405 bytes rbufr/tables/master/BUFR_TableB_en_12.bufrtbl | Bin 0 -> 13258 bytes rbufr/tables/master/BUFR_TableB_en_13.bufrtbl | Bin 0 -> 14441 bytes rbufr/tables/master/BUFR_TableB_en_14.bufrtbl | Bin 0 -> 7729 bytes rbufr/tables/master/BUFR_TableB_en_15.bufrtbl | Bin 0 -> 12193 bytes rbufr/tables/master/BUFR_TableB_en_19.bufrtbl | Bin 0 -> 5401 bytes rbufr/tables/master/BUFR_TableB_en_20.bufrtbl | Bin 0 -> 17494 bytes rbufr/tables/master/BUFR_TableB_en_21.bufrtbl | Bin 0 -> 21358 bytes rbufr/tables/master/BUFR_TableB_en_22.bufrtbl | Bin 0 -> 22238 bytes rbufr/tables/master/BUFR_TableB_en_23.bufrtbl | Bin 0 -> 4149 bytes rbufr/tables/master/BUFR_TableB_en_24.bufrtbl | Bin 0 -> 2128 bytes rbufr/tables/master/BUFR_TableB_en_25.bufrtbl | Bin 0 -> 24082 bytes rbufr/tables/master/BUFR_TableB_en_26.bufrtbl | Bin 0 -> 1436 bytes rbufr/tables/master/BUFR_TableB_en_27.bufrtbl | Bin 0 -> 1832 bytes rbufr/tables/master/BUFR_TableB_en_28.bufrtbl | Bin 0 -> 1112 bytes rbufr/tables/master/BUFR_TableB_en_29.bufrtbl | Bin 0 -> 460 bytes rbufr/tables/master/BUFR_TableB_en_30.bufrtbl | Bin 0 -> 1272 bytes rbufr/tables/master/BUFR_TableB_en_31.bufrtbl | Bin 0 -> 1312 bytes rbufr/tables/master/BUFR_TableB_en_33.bufrtbl | Bin 0 -> 15445 bytes rbufr/tables/master/BUFR_TableB_en_35.bufrtbl | Bin 0 -> 2256 bytes rbufr/tables/master/BUFR_TableB_en_40.bufrtbl | Bin 0 -> 12441 bytes rbufr/tables/master/BUFR_TableB_en_41.bufrtbl | Bin 0 -> 1080 bytes rbufr/tables/master/BUFR_TableB_en_42.bufrtbl | Bin 0 -> 2996 bytes rbufr/tables/master/BUFR_TableD_en_00.bufrtbl | Bin 0 -> 1104 bytes rbufr/tables/master/BUFR_TableD_en_01.bufrtbl | Bin 0 -> 17365 bytes rbufr/tables/master/BUFR_TableD_en_02.bufrtbl | Bin 0 -> 17429 bytes rbufr/tables/master/BUFR_TableD_en_03.bufrtbl | Bin 0 -> 7025 bytes rbufr/tables/master/BUFR_TableD_en_04.bufrtbl | Bin 0 -> 4076 bytes rbufr/tables/master/BUFR_TableD_en_05.bufrtbl | Bin 0 -> 3272 bytes rbufr/tables/master/BUFR_TableD_en_06.bufrtbl | Bin 0 -> 12597 bytes rbufr/tables/master/BUFR_TableD_en_07.bufrtbl | Bin 0 -> 21497 bytes rbufr/tables/master/BUFR_TableD_en_08.bufrtbl | Bin 0 -> 6052 bytes rbufr/tables/master/BUFR_TableD_en_09.bufrtbl | Bin 0 -> 16513 bytes rbufr/tables/master/BUFR_TableD_en_10.bufrtbl | Bin 0 -> 29061 bytes rbufr/tables/master/BUFR_TableD_en_11.bufrtbl | Bin 0 -> 4728 bytes rbufr/tables/master/BUFR_TableD_en_12.bufrtbl | Bin 0 -> 13889 bytes rbufr/tables/master/BUFR_TableD_en_13.bufrtbl | Bin 0 -> 1664 bytes rbufr/tables/master/BUFR_TableD_en_15.bufrtbl | Bin 0 -> 5820 bytes rbufr/tables/master/BUFR_TableD_en_16.bufrtbl | Bin 0 -> 10441 bytes rbufr/tables/master/BUFR_TableD_en_18.bufrtbl | Bin 0 -> 508 bytes rbufr/tables/master/BUFR_TableD_en_21.bufrtbl | Bin 0 -> 4720 bytes rbufr/tables/master/BUFR_TableD_en_22.bufrtbl | Bin 0 -> 780 bytes rbufr/tables/master/BUFR_TableD_en_40.bufrtbl | Bin 0 -> 11105 bytes tables/master/BUFR_TableB_en_00.bufrtbl | Bin 0 -> 3832 bytes tables/master/BUFR_TableB_en_01.bufrtbl | Bin 0 -> 15361 bytes tables/master/BUFR_TableB_en_02.bufrtbl | Bin 0 -> 27334 bytes tables/master/BUFR_TableB_en_03.bufrtbl | Bin 0 -> 4585 bytes tables/master/BUFR_TableB_en_04.bufrtbl | Bin 0 -> 5021 bytes tables/master/BUFR_TableB_en_05.bufrtbl | Bin 0 -> 6661 bytes tables/master/BUFR_TableB_en_06.bufrtbl | Bin 0 -> 2724 bytes tables/master/BUFR_TableB_en_07.bufrtbl | Bin 0 -> 5425 bytes tables/master/BUFR_TableB_en_08.bufrtbl | Bin 0 -> 14001 bytes tables/master/BUFR_TableB_en_10.bufrtbl | Bin 0 -> 8989 bytes tables/master/BUFR_TableB_en_11.bufrtbl | Bin 0 -> 12405 bytes tables/master/BUFR_TableB_en_12.bufrtbl | Bin 0 -> 13258 bytes tables/master/BUFR_TableB_en_13.bufrtbl | Bin 0 -> 14441 bytes tables/master/BUFR_TableB_en_14.bufrtbl | Bin 0 -> 7729 bytes tables/master/BUFR_TableB_en_15.bufrtbl | Bin 0 -> 12193 bytes tables/master/BUFR_TableB_en_19.bufrtbl | Bin 0 -> 5401 bytes tables/master/BUFR_TableB_en_20.bufrtbl | Bin 0 -> 17494 bytes tables/master/BUFR_TableB_en_21.bufrtbl | Bin 0 -> 21358 bytes tables/master/BUFR_TableB_en_22.bufrtbl | Bin 0 -> 22238 bytes tables/master/BUFR_TableB_en_23.bufrtbl | Bin 0 -> 4149 bytes tables/master/BUFR_TableB_en_24.bufrtbl | Bin 0 -> 2128 bytes tables/master/BUFR_TableB_en_25.bufrtbl | Bin 0 -> 24082 bytes tables/master/BUFR_TableB_en_26.bufrtbl | Bin 0 -> 1436 bytes tables/master/BUFR_TableB_en_27.bufrtbl | Bin 0 -> 1832 bytes tables/master/BUFR_TableB_en_28.bufrtbl | Bin 0 -> 1112 bytes tables/master/BUFR_TableB_en_29.bufrtbl | Bin 0 -> 460 bytes tables/master/BUFR_TableB_en_30.bufrtbl | Bin 0 -> 1272 bytes tables/master/BUFR_TableB_en_31.bufrtbl | Bin 0 -> 1312 bytes tables/master/BUFR_TableB_en_33.bufrtbl | Bin 0 -> 15445 bytes tables/master/BUFR_TableB_en_35.bufrtbl | Bin 0 -> 2256 bytes tables/master/BUFR_TableB_en_40.bufrtbl | Bin 0 -> 12441 bytes tables/master/BUFR_TableB_en_41.bufrtbl | Bin 0 -> 1080 bytes tables/master/BUFR_TableB_en_42.bufrtbl | Bin 0 -> 2996 bytes tables/master/BUFR_TableD_en_00.bufrtbl | Bin 0 -> 1104 bytes tables/master/BUFR_TableD_en_01.bufrtbl | Bin 0 -> 17365 bytes tables/master/BUFR_TableD_en_02.bufrtbl | Bin 0 -> 17429 bytes tables/master/BUFR_TableD_en_03.bufrtbl | Bin 0 -> 7025 bytes tables/master/BUFR_TableD_en_04.bufrtbl | Bin 0 -> 4076 bytes tables/master/BUFR_TableD_en_05.bufrtbl | Bin 0 -> 3272 bytes tables/master/BUFR_TableD_en_06.bufrtbl | Bin 0 -> 12597 bytes tables/master/BUFR_TableD_en_07.bufrtbl | Bin 0 -> 21497 bytes tables/master/BUFR_TableD_en_08.bufrtbl | Bin 0 -> 6052 bytes tables/master/BUFR_TableD_en_09.bufrtbl | Bin 0 -> 16513 bytes tables/master/BUFR_TableD_en_10.bufrtbl | Bin 0 -> 29061 bytes tables/master/BUFR_TableD_en_11.bufrtbl | Bin 0 -> 4728 bytes tables/master/BUFR_TableD_en_12.bufrtbl | Bin 0 -> 13889 bytes tables/master/BUFR_TableD_en_13.bufrtbl | Bin 0 -> 1664 bytes tables/master/BUFR_TableD_en_15.bufrtbl | Bin 0 -> 5820 bytes tables/master/BUFR_TableD_en_16.bufrtbl | Bin 0 -> 10441 bytes tables/master/BUFR_TableD_en_18.bufrtbl | Bin 0 -> 508 bytes tables/master/BUFR_TableD_en_21.bufrtbl | Bin 0 -> 4720 bytes tables/master/BUFR_TableD_en_22.bufrtbl | Bin 0 -> 780 bytes tables/master/BUFR_TableD_en_40.bufrtbl | Bin 0 -> 11105 bytes 126 files changed, 2767 insertions(+), 431 deletions(-) delete mode 100644 gen/src/btable.rs create mode 100644 gen/src/fr/btable.rs create mode 100644 gen/src/fr/dtable.rs create mode 100644 gen/src/fr/mod.rs create mode 100644 gen/src/prelude.rs create mode 100644 gen/src/wmo/btable.rs rename gen/src/{ => wmo}/dtable.rs (52%) create mode 100644 gen/src/wmo/mod.rs rename rbufr/{tables => rtables}/bufr/bufrtabb_11.csv (100%) rename rbufr/{tables => rtables}/bufr/bufrtabd_11.csv (100%) create mode 100644 rbufr/src/tables.rs create mode 100644 rbufr/tables/master/BUFR_TableB_en_00.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_01.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_02.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_03.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_04.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_05.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_06.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_07.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_08.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_10.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_11.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_12.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_13.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_14.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_15.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_19.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_20.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_21.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_22.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_23.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_24.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_25.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_26.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_27.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_28.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_29.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_30.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_31.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_33.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_35.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_40.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_41.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableB_en_42.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_00.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_01.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_02.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_03.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_04.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_05.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_06.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_07.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_08.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_09.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_10.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_11.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_12.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_13.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_15.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_16.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_18.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_21.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_22.bufrtbl create mode 100644 rbufr/tables/master/BUFR_TableD_en_40.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_00.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_01.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_02.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_03.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_04.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_05.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_06.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_07.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_08.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_10.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_11.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_12.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_13.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_14.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_15.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_19.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_20.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_21.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_22.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_23.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_24.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_25.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_26.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_27.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_28.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_29.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_30.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_31.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_33.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_35.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_40.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_41.bufrtbl create mode 100644 tables/master/BUFR_TableB_en_42.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_00.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_01.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_02.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_03.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_04.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_05.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_06.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_07.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_08.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_09.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_10.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_11.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_12.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_13.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_15.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_16.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_18.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_21.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_22.bufrtbl create mode 100644 tables/master/BUFR_TableD_en_40.bufrtbl diff --git a/Cargo.lock b/Cargo.lock index 1b37fe6..23b4779 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,42 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + +[[package]] +name = "ambassador" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e68de4cdc6006162265d0957edb4a860fe4e711b1dc17a5746fd95f952f08285" +dependencies = [ + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + [[package]] name = "anstream" version = "0.6.21" @@ -65,16 +101,67 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] -name = "boomphf" -version = "0.6.0" +name = "arbitrary-chunks" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617e2d952880a00583ddb9237ac3965732e8df6a92a8e7bcc054100ec467ec3b" +checksum = "2ad8689a486416c401ea15715a4694de30054248ec627edbf31f49cb64ee4086" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "crossbeam-utils", - "log", - "rayon", "serde", - "wyhash", +] + +[[package]] +name = "binout" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222fb4925a15bea6a68075021910e03d6aa2d04951d71ff1d956190a551d738f" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "bitm" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31468ea4a856000d83cb61960dfdc2980ecd96b15b61321c8c76cc96aea6e688" +dependencies = [ + "dyn_size_of", +] + +[[package]] +name = "block-pseudorand" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2097358495d244a0643746f4d13eedba4608137008cf9dec54e53a3b700115a6" +dependencies = [ + "chiapos-chacha8", + "nanorand", ] [[package]] @@ -103,9 +190,15 @@ checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" + [[package]] name = "byteorder" version = "1.5.0" @@ -118,12 +211,66 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.2.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "chiapos-chacha8" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33f8be573a85f6c2bc1b8e43834c07e32f95e489b914bf856c0549c3c269cd0a" +dependencies = [ + "rayon", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "clap" version = "4.5.53" @@ -131,6 +278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", + "clap_derive", ] [[package]] @@ -145,6 +293,18 @@ dependencies = [ "strsim", ] +[[package]] +name = "clap_derive" +version = "4.5.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "clap_lex" version = "0.7.6" @@ -157,6 +317,38 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "common_traits" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af10ce0d9d58d055a641bb3c496cff570c4585b657807474621e91d85e0a082a" +dependencies = [ + "anyhow", + "half", + "impl-tools", +] + +[[package]] +name = "core_affinity" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a034b3a7b624016c6e13f5df875747cc25f884156aad2abd12b6c46797971342" +dependencies = [ + "libc", + "num_cpus", + "winapi", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -166,6 +358,42 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "is-terminal", + "itertools", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -191,6 +419,12 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "csv" version = "1.4.0" @@ -212,6 +446,24 @@ dependencies = [ "memchr", ] +[[package]] +name = "dsi-progress-logger" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2f08728b2005dd95f078e2d775a91b5339839833057b6404b58f47e6ee6ac5" +dependencies = [ + "log", + "num-format", + "pluralizer", + "sysinfo", +] + +[[package]] +name = "dyn_size_of" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a742b95783b1f45b900129082cbc47717b6a77ee8d17eea70a8ea62462f5de3" + [[package]] name = "either" version = "1.15.0" @@ -227,12 +479,118 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "env_filter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "epserde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c40d342ff20a2ce62d9a85ce406e672dfa137f902ac9670034533184f1533976" +dependencies = [ + "anyhow", + "bitflags 2.10.0", + "common_traits", + "epserde-derive", + "maligned", + "mem_dbg", + "mmap-rs", + "sealed", + "thiserror 2.0.17", + "xxhash-rust", +] + +[[package]] +name = "epserde-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac80cc78b69765703f48ad93f33b8919cf5d907cda7459ad6ba2919cbbe605dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "equivalent" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + [[package]] name = "flate2" version = "1.1.5" @@ -244,18 +602,51 @@ dependencies = [ ] [[package]] -name = "gen" +name = "gentools" version = "0.1.0" dependencies = [ "anyhow", - "boomphf", + "bincode", + "binout", "byteorder", "clap", "csv", + "glob", + "memmap2", + "ph", "rkyv", "serde", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + [[package]] name = "hashbrown" version = "0.15.5" @@ -268,6 +659,42 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "impl-tools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae95c9095c2f1126d7db785955c73cdc5fc33e7c3fa911bd4a42931672029a7" +dependencies = [ + "autocfg", + "impl-tools-lib", + "proc-macro-error2", + "syn 2.0.111", +] + +[[package]] +name = "impl-tools-lib" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab699036df31c1f7d3561bfa6e9cb9bc3bb0fd2e2cd9bf121c31cb961d049ddf" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "indexmap" version = "2.12.1" @@ -278,18 +705,72 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "is-terminal" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" +[[package]] +name = "jiff" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom", + "libc", +] + [[package]] name = "js-sys" version = "0.3.83" @@ -300,18 +781,107 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "lender" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d82d5a5c23e4d70f79c4cdfaa1d0beb6b3c660080c05dafd236f0514ce51ba6" +dependencies = [ + "lender-derive", + "stable_try_trait_v2", +] + +[[package]] +name = "lender-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556faf0c9adb22669a5f9f6b4ed804c8048d205dcd00fadd463affbb02931d26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "libc" +version = "0.2.178" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + [[package]] name = "log" version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "mach2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +dependencies = [ + "libc", +] + +[[package]] +name = "maligned" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e88c3cbe8288f77f293e48a28b3232e3defd203a6d839fa7f68ea4329e83464" + +[[package]] +name = "mem_dbg" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "256baafaaed96f2358e588047add018b8e5f1fc58e1cb58deb026528dd42488e" +dependencies = [ + "bitflags 2.10.0", + "maligned", + "mem_dbg-derive", + "mmap-rs", +] + +[[package]] +name = "mem_dbg-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f266c6ba1558dee16c56363c3dc6093a97a2451ddf29f928d5da042ee330537b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "memchr" version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +[[package]] +name = "memmap2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -322,6 +892,23 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "mmap-rs" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86968d85441db75203c34deefd0c88032f275aaa85cee19a1dcfff6ae9df56da" +dependencies = [ + "bitflags 1.3.2", + "combine", + "libc", + "mach2", + "nix", + "sysctl", + "thiserror 1.0.69", + "widestring", + "windows 0.48.0", +] + [[package]] name = "munge" version = "0.4.7" @@ -339,7 +926,26 @@ checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", +] + +[[package]] +name = "nanorand" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "729eb334247daa1803e0a094d0a5c55711b85571179f5ec6e53eccfdf7008958" + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", + "pin-utils", ] [[package]] @@ -351,6 +957,63 @@ dependencies = [ "memchr", ] +[[package]] +name = "ntapi" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" +dependencies = [ + "winapi", +] + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -363,6 +1026,131 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + +[[package]] +name = "partition" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "947f833aaa585cf12b8ec7c0476c98784c49f33b861376ffc84ed92adebf2aba" + +[[package]] +name = "ph" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f26b18647c1926dde1e041b99f69ea73bf88f8681341dcb7d9c61970c999dc" +dependencies = [ + "aligned-vec", + "arrayvec", + "binout", + "bitm", + "dyn_size_of", + "mem_dbg", + "rayon", + "seedable_hash", + "sux", + "voracious_radix_sort", +] + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "pluralizer" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b3eba432a00a1f6c16f39147847a870e94e2e9b992759b503e330efec778cbe" +dependencies = [ + "once_cell", + "regex", +] + +[[package]] +name = "portable-atomic" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", +] + [[package]] name = "proc-macro2" version = "1.0.103" @@ -389,7 +1177,7 @@ checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] [[package]] @@ -401,6 +1189,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rancor" version = "0.1.1" @@ -411,10 +1205,33 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] [[package]] name = "rayon" @@ -440,14 +1257,60 @@ dependencies = [ name = "rbufr" version = "0.1.0" dependencies = [ + "anyhow", "csv", "encoding_rs", "flate2", + "gentools", "nom", "serde", - "thiserror", + "thiserror 2.0.17", ] +[[package]] +name = "rdst" +version = "0.20.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e7970b4e577b76a96d5e56b5f6662b66d1a4e1f5bb026ee118fc31b373c2752" +dependencies = [ + "arbitrary-chunks", + "block-pseudorand", + "criterion", + "partition", + "rayon", + "tikv-jemallocator", + "voracious_radix_sort", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + [[package]] name = "rend" version = "0.5.3" @@ -484,7 +1347,20 @@ checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", ] [[package]] @@ -499,6 +1375,32 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "sealed" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "seedable_hash" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c8d98ed920f49590f063255962141de2122465004835b7032de3d21cac8cc9" + [[package]] name = "serde" version = "1.0.228" @@ -526,9 +1428,28 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", ] +[[package]] +name = "serde_json" +version = "1.0.146" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "simd-adler32" version = "0.3.8" @@ -541,12 +1462,60 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +[[package]] +name = "stable_try_trait_v2" +version = "1.75.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c4e48411f4db8ccca0470bfb67e3bb821af4227d455aa147917d8d109be0d13" + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "sux" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "495d3e5ad72523bb98a967e56aea75c8c6bcc2bfa9b8fa50b450dc9c8a8ce007" +dependencies = [ + "ambassador", + "anyhow", + "bitflags 2.10.0", + "bytemuck", + "common_traits", + "core_affinity", + "dsi-progress-logger", + "env_logger", + "epserde", + "flate2", + "impl-tools", + "lender", + "libc", + "log", + "mem_dbg", + "mmap-rs", + "num-traits", + "num_cpus", + "rand", + "rayon", + "rdst", + "tempfile", + "zstd", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.111" @@ -558,13 +1527,74 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sysctl" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" +dependencies = [ + "bitflags 2.10.0", + "byteorder", + "enum-as-inner", + "libc", + "thiserror 1.0.69", + "walkdir", +] + +[[package]] +name = "sysinfo" +version = "0.35.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3ffa3e4ff2b324a57f7aeb3c349656c7b127c3c189520251a648102a92496e" +dependencies = [ + "libc", + "memchr", + "ntapi", + "objc2-core-foundation", + "objc2-io-kit", + "windows 0.61.3", +] + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix", + "windows-sys", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + [[package]] name = "thiserror" version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -575,7 +1605,37 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.111", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.5.4+5.3.0-patched" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965fe0c26be5c56c94e38ba547249074803efd52adfb66de62107d95aab3eaca" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", ] [[package]] @@ -615,6 +1675,34 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "voracious_radix_sort" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446e7ffcb6c27a71d05af7e51ef2ee5b71c48424b122a832f2439651e1914899" +dependencies = [ + "rayon", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.106" @@ -647,7 +1735,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.111", "wasm-bindgen-shared", ] @@ -660,26 +1748,301 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "web-sys" +version = "0.3.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows-sys" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] -name = "wyhash" -version = "0.5.0" +name = "windows-targets" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf6e163c25e3fac820b4b453185ea2dea3b6a3e0a721d4d23d75bd33734c295" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "rand_core", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "zerocopy" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", ] diff --git a/gen/Cargo.toml b/gen/Cargo.toml index 1b200fa..3c066c8 100644 --- a/gen/Cargo.toml +++ b/gen/Cargo.toml @@ -1,13 +1,25 @@ [package] -name = "gen" +name = "gentools" version = "0.1.0" edition = "2024" +[lib] +name = "genlib" +path = "src/lib.rs" + +[[bin]] +name = "gen-ctl" +path = "src/main.rs" + [dependencies] anyhow = "1.0.100" -boomphf = { version = "0.6.0", features = ["serde"] } +bincode = "1.3.3" +ph = "0.10.0" byteorder = "1.5.0" -clap = "4.5.53" +clap = { version = "4.5.53", features = ["derive"] } csv = "1.4.0" +glob = "0.3" +memmap2 = "0.9" rkyv = { version = "0.8.12" } serde = { version = "1.0.228", features = ["derive"] } +binout = "0.3.1" diff --git a/gen/src/btable.rs b/gen/src/btable.rs deleted file mode 100644 index c4e4930..0000000 --- a/gen/src/btable.rs +++ /dev/null @@ -1,109 +0,0 @@ -use crate::{FXY, TableEntryLoader}; -use anyhow::{Context, Result}; -use std::path::Path; - -pub struct BTableCsvLoader { - entries: Vec, -} - -#[derive(Debug, serde::Deserialize)] -pub struct RawBTableEntry { - #[serde(rename = "ClassNo")] - pub class_no: String, - #[serde(rename = "ClassName_en")] - pub class_name_en: String, - #[serde(rename = "FXY")] - pub fxy: String, - #[serde(rename = "ElementName_en")] - pub element_name_en: String, - #[serde(rename = "BUFR_Unit")] - pub bufr_unit: String, - #[serde(rename = "BUFR_Scale")] - pub bufr_scale: u32, - #[serde(rename = "BUFR_ReferenceValue")] - pub bufr_reference_value: u32, - #[serde(rename = "BUFR_DataWidth_Bits")] - pub bufr_datawidth_bits: u32, - #[serde(rename = "CREX_Unit")] - pub crex_unit: String, - #[serde(rename = "CREX_Scale")] - pub crex_scale: u32, - #[serde(rename = "CREX_DataWidth_Char")] - pub crex_datawidth_char: u32, - #[serde(rename = "Note_en")] - pub note_en: Option, - #[serde(rename = "noteIDs")] - pub note_ids: Option, - #[serde(rename = "Status")] - pub status: String, -} - -pub struct BTableEntry { - fxy: FXY, - class_name_en: String, - element_name_en: String, - bufr_unit: String, - bufr_scale: u32, - bufr_reference_value: u32, - bufr_datawidth_bits: u32, - note_en: Option, - note_ids: Option, - status: String, -} - -impl BTableCsvLoader { - pub fn new() -> Self { - BTableCsvLoader { - entries: Vec::new(), - } - } - - pub fn from_wmo_csv>(path: P) -> Result { - let mut loader = Self::new(); - let table_loader = crate::TableLoader::new(); - table_loader.load_table(path, &mut loader)?; - Ok(loader) - } - - pub fn entries(&self) -> &[BTableEntry] { - &self.entries - } -} - -impl TableEntryLoader for BTableCsvLoader { - type RawEntry = RawBTableEntry; - - fn process_entry(&mut self, raw: Self::RawEntry) -> anyhow::Result<()> { - // Parse FXY string (e.g., "001001") to u32 - let fxy = FXY::from_str(&raw.fxy)?; - - let entry = BTableEntry { - fxy, - class_name_en: raw.class_name_en, - element_name_en: raw.element_name_en, - bufr_unit: raw.bufr_unit, - bufr_scale: raw.bufr_scale, - bufr_reference_value: raw.bufr_reference_value, - bufr_datawidth_bits: raw.bufr_datawidth_bits, - note_en: raw.note_en, - note_ids: raw.note_ids, - status: raw.status, - }; - - self.entries.push(entry); - Ok(()) - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn test_btable_csv_loader() { - let _loader = BTableCsvLoader::from_wmo_csv( - "/Users/tsuki/projects/rbufr/BUFR4/BUFRCREX_TableB_en_00.csv", - ) - .unwrap(); - } -} diff --git a/gen/src/fr/btable.rs b/gen/src/fr/btable.rs new file mode 100644 index 0000000..f3d4dec --- /dev/null +++ b/gen/src/fr/btable.rs @@ -0,0 +1,154 @@ +use crate::{FXY, TableEntry, TableEntryLoader}; +use rkyv::Archive; + +pub struct BTableCsvLoader; + +#[derive(Debug)] +pub struct RawBTableEntry { + pub f: u16, + pub x: u16, + pub y: u16, +} + +// Helper function to deserialize empty strings as None +fn deserialize_optional_string<'de, D>(deserializer: D) -> Result, D::Error> +where + D: serde::Deserializer<'de>, +{ + let s: String = serde::Deserialize::deserialize(deserializer)?; + if s.is_empty() { Ok(None) } else { Ok(Some(s)) } +} + +// Helper function to deserialize empty strings as None for u32 +fn deserialize_optional_u32<'de, D>(deserializer: D) -> Result, D::Error> +where + D: serde::Deserializer<'de>, +{ + let s: String = serde::Deserialize::deserialize(deserializer)?; + if s.is_empty() { + Ok(None) + } else { + s.parse::().map(Some).map_err(serde::de::Error::custom) + } +} + +#[derive( + Debug, Clone, serde::Deserialize, serde::Serialize, Archive, rkyv::Serialize, rkyv::Deserialize, +)] +#[rkyv(compare(PartialEq), derive(Debug))] +pub struct BTableEntry { + fxy: FXY, + class_name_en: String, + element_name_en: String, + bufr_unit: String, + bufr_scale: i32, + bufr_reference_value: i32, + bufr_datawidth_bits: u32, + note_en: Option, + note_ids: Option, + status: String, +} + +impl BTableEntry { + pub fn fxy(&self) -> FXY { + self.fxy + } + + pub fn class_name_en(&self) -> &str { + &self.class_name_en + } + + pub fn element_name_en(&self) -> &str { + &self.element_name_en + } + + pub fn bufr_unit(&self) -> &str { + &self.bufr_unit + } + + pub fn bufr_scale(&self) -> i32 { + self.bufr_scale + } + + pub fn bufr_reference_value(&self) -> i32 { + self.bufr_reference_value + } + + pub fn bufr_datawidth_bits(&self) -> u32 { + self.bufr_datawidth_bits + } + + pub fn note_en(&self) -> Option<&str> { + self.note_en.as_deref() + } + + pub fn note_ids(&self) -> Option<&str> { + self.note_ids.as_deref() + } + + pub fn status(&self) -> &str { + &self.status + } +} + +impl std::fmt::Display for BTableEntry { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let element_name = if self.element_name_en.len() > 40 { + format!("{}...", &self.element_name_en[..37]) + } else { + self.element_name_en.clone() + }; + + let unit = if self.bufr_unit.len() > 15 { + format!("{}...", &self.bufr_unit[..12]) + } else { + self.bufr_unit.clone() + }; + + write!( + f, + "{:02}{:02}{:03} | {:<40} | {:<15} | {:>5} | {:>8} | {:>8} | {}", + self.fxy.f, + self.fxy.x, + self.fxy.y, + element_name, + unit, + self.bufr_scale, + self.bufr_reference_value, + self.bufr_datawidth_bits, + self.status + ) + } +} + +impl TableEntryLoader for BTableCsvLoader { + type RawEntry = RawBTableEntry; + type TableEntry = BTableEntry; + const TABLE_TYPE: crate::TableType = crate::TableType::B; + + fn process_entry(&mut self, raw: Self::RawEntry) -> anyhow::Result> { + // Parse FXY string (e.g., "001001") to u32 + let fxy = FXY::from_str(&raw.fxy)?; + + let entry = BTableEntry { + fxy, + class_name_en: raw.class_name_en, + element_name_en: raw.element_name_en, + bufr_unit: raw.bufr_unit, + bufr_scale: raw.bufr_scale, + bufr_reference_value: raw.bufr_reference_value, + bufr_datawidth_bits: raw.bufr_datawidth_bits, + note_en: raw.note_en, + note_ids: raw.note_ids, + status: raw.status, + }; + + Ok(Some(entry)) + } +} + +impl TableEntry for BTableEntry { + fn fxy(&self) -> FXY { + self.fxy + } +} diff --git a/gen/src/fr/dtable.rs b/gen/src/fr/dtable.rs new file mode 100644 index 0000000..10f6489 --- /dev/null +++ b/gen/src/fr/dtable.rs @@ -0,0 +1,151 @@ +use super::TableEntryLoader; +use csv::StringRecord; +use rkyv::Archive; + +#[derive(Debug, Clone, Default)] +pub struct DTableCsvLoader { + current_chain: Option, +} + +impl TableEntryLoader for DTableCsvLoader { + type TableEntry = DTableEntry; + const TABLE_TYPE: crate::TableType = crate::TableType::D; + + fn process_entry(&mut self, raw: &StringRecord) -> anyhow::Result> { + // Process the raw entry as needed + if self.current_chain.is_none() { + let entry = DTableEntry { + fxy: FXY::from_str(&raw.fxy1)?, + fxy_chain: vec![FXY::from_str(&raw.fxy2)?], + category: raw.category, + category_of_sequences_en: raw.category_of_sequences_en, + title_en: raw.title_en, + subtitle_en: raw.subtitle_en, + note_en: raw.note_en, + note_ids: raw.note_ids, + status: raw.status, + }; + self.current_chain = Some(entry); + return Ok(None); + } else { + let fxy = FXY::from_str(&raw.fxy1)?; + if self.current_chain.as_ref().unwrap().fxy != fxy { + // First take out the old completed chain + let finished = self.current_chain.take(); + + // Then create and save the new chain + let entry = DTableEntry { + fxy, + fxy_chain: vec![FXY::from_str(&raw.fxy2)?], + category: raw.category, + category_of_sequences_en: raw.category_of_sequences_en, + title_en: raw.title_en, + subtitle_en: raw.subtitle_en, + note_en: raw.note_en, + note_ids: raw.note_ids, + status: raw.status, + }; + self.current_chain = Some(entry); + + // Return the old completed chain + return Ok(finished); + } else { + self.current_chain + .as_mut() + .unwrap() + .fxy_chain + .push(FXY::from_str(&raw.fxy2)?); + + return Ok(None); + } + } + } + + fn finish(&mut self) -> anyhow::Result> { + Ok(self.current_chain.take()) + } +} + +#[derive( + Debug, Clone, serde::Deserialize, serde::Serialize, Archive, rkyv::Serialize, rkyv::Deserialize, +)] +#[rkyv(compare(PartialEq), derive(Debug))] +pub struct DTableEntry { + fxy: FXY, + fxy_chain: Vec, + category: String, + category_of_sequences_en: String, + title_en: Option, + subtitle_en: Option, + note_en: Option, + note_ids: String, + status: String, +} + +impl DTableEntry { + pub fn fxy(&self) -> FXY { + self.fxy + } + + pub fn fxy_chain(&self) -> &[FXY] { + &self.fxy_chain + } + + pub fn category(&self) -> &str { + &self.category + } + + pub fn category_of_sequences_en(&self) -> &str { + &self.category_of_sequences_en + } + + pub fn title_en(&self) -> Option<&str> { + self.title_en.as_deref() + } + + pub fn subtitle_en(&self) -> Option<&str> { + self.subtitle_en.as_deref() + } + + pub fn note_en(&self) -> Option<&str> { + self.note_en.as_deref() + } + + pub fn note_ids(&self) -> &str { + &self.note_ids + } + + pub fn status(&self) -> &str { + &self.status + } +} + +impl std::fmt::Display for DTableEntry { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let fxy_chain_str: String = self + .fxy_chain + .iter() + .map(|fxy| format!("{:02}{:02}{:03}", fxy.f, fxy.x, fxy.y)) + .collect::>() + .join(", "); + + let title = self.title_en.as_deref().unwrap_or("N/A"); + let truncated_title = if title.len() > 50 { + format!("{}...", &title[..47]) + } else { + title.to_string() + }; + + write!( + f, + "{:02}{:02}{:03} | {:<50} | {:<12} | [{}]", + self.fxy.f, self.fxy.x, self.fxy.y, truncated_title, self.status, fxy_chain_str + ) + } +} + +impl TableEntry for DTableEntry { + fn fxy(&self) -> FXY { + self.fxy + } +} diff --git a/gen/src/fr/mod.rs b/gen/src/fr/mod.rs new file mode 100644 index 0000000..57c0dd6 --- /dev/null +++ b/gen/src/fr/mod.rs @@ -0,0 +1,61 @@ +use csv::{ReaderBuilder, StringRecord}; +use std::path::Path; +pub mod btable; +pub mod dtable; + +pub struct TableLoader; + +impl TableLoader { + pub fn load_table, T: TableEntryLoader>( + &self, + path: P, + loader: &mut T, + ) -> anyhow::Result> { + let mut entries = vec![]; + let mut rdr = ReaderBuilder::new() + .has_headers(false) + .delimiter(b';') + .flexible(false) // Allow variable number of fields + .from_path(path.as_ref())?; + + let mut line_num = 1; // Start at 1 for header + for result in rdr.records() { + line_num += 1; + match result { + Ok(record) => { + if let Some(processed_entry) = loader.process_entry(record)? { + entries.push(processed_entry); + } + } + Err(e) => { + // Log the error but continue processing + eprintln!( + "Warning: Skipping line {} in {}: {}", + line_num, + path.as_ref().display(), + e + ); + } + } + } + + if let Some(processed_entry) = loader.finish()? { + entries.push(processed_entry); + } + + Ok(entries) + } +} + +pub trait TableEntryLoader: Sized { + type TableEntry: TableEntry; + + const TABLE_TYPE: TableType; + + /// Process a single entry from the CSV file + fn process_entry(&mut self, raw: &StringRecord) -> anyhow::Result>; + + fn finish(&mut self) -> anyhow::Result> { + Ok(None) + } +} diff --git a/gen/src/lib.rs b/gen/src/lib.rs index 21c4437..ad68205 100644 --- a/gen/src/lib.rs +++ b/gen/src/lib.rs @@ -1,19 +1,20 @@ -mod btable; -mod dtable; +// pub mod fr; +pub mod prelude; mod utils; +pub mod wmo; use anyhow::Context; -use boomphf::Mphf; -use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use memmap2::Mmap; +use ph::fmph::GOFunction; use rkyv::Archive; -use rkyv::ser::serializers::AllocSerializer; +use rkyv::api::high::{HighDeserializer, HighSerializer}; +use rkyv::rancor::Error; use serde::de::DeserializeOwned; -use serde::{Deserialize, Serialize}; +use serde::{Deserialize as SerdeDeserialize, Serialize as SerdeSerialize}; use std::fmt::Debug; -use std::fs::File; -use std::io::{Read, Seek, SeekFrom, Write}; +use std::io::Write; use std::path::Path; -use csv::{DeserializeRecordsIter, ReaderBuilder}; +use csv::ReaderBuilder; pub struct TableLoader; @@ -22,187 +23,265 @@ impl TableLoader { &self, path: P, loader: &mut T, - ) -> anyhow::Result<()> { + ) -> anyhow::Result> { + let mut entries = vec![]; let mut rdr = ReaderBuilder::new() .has_headers(true) .delimiter(b',') - .from_path(path)?; + .flexible(true) // Allow variable number of fields + .from_path(path.as_ref())?; + let mut line_num = 1; // Start at 1 for header for result in rdr.deserialize() { - let record: T::RawEntry = result?; - loader.process_entry(record)?; + line_num += 1; + match result { + Ok(record) => { + let record: T::RawEntry = record; + if let Some(processed_entry) = loader.process_entry(record)? { + entries.push(processed_entry); + } + } + Err(e) => { + // Log the error but continue processing + eprintln!( + "Warning: Skipping line {} in {}: {}", + line_num, + path.as_ref().display(), + e + ); + } + } } - Ok(()) + if let Some(processed_entry) = loader.finish()? { + entries.push(processed_entry); + } + + Ok(entries) } } -pub trait TableEntryLoader: Sized { +pub trait TableEntryLoader: Sized +where + Self::TableEntry: for<'a> rkyv::Serialize< + HighSerializer, Error>, + >, + ::Archived: + rkyv::Deserialize>, +{ /// The raw CSV entry type that will be deserialized type RawEntry: for<'de> serde::Deserialize<'de> + Debug; type TableEntry: TableEntry; - /// Process a single entry from the CSV file - fn process_entry(&mut self, raw: Self::RawEntry) -> anyhow::Result<()>; + const TABLE_TYPE: TableType; - fn finish(&mut self) -> anyhow::Result<()> { - Ok(()) + /// Process a single entry from the CSV file + fn process_entry(&mut self, raw: Self::RawEntry) -> anyhow::Result>; + + fn finish(&mut self) -> anyhow::Result> { + Ok(None) } } -pub trait TableEntry: Serialize + DeserializeOwned + Debug + Clone { +pub trait TableEntry: SerdeSerialize + DeserializeOwned + Debug + Clone + Archive { fn fxy(&self) -> FXY; } -#[derive(Serialize, Deserialize)] -struct MphMetadata { - mphf: Mphf, - offsets: Vec, -} - struct BufrTableMph { - mphf: Mphf, + mphf: GOFunction, offsets: Vec, - data_file: File, + mmap: Mmap, _marker: std::marker::PhantomData, } -impl BufrTableMph { - /// 构建 MPH 表 - fn build(entries: &Vec, output_path: &str) -> std::io::Result { +struct BUFRTableM { + mphf: GOFunction, +} + +impl BufrTableMph +where + for<'a> T::TableEntry: rkyv::Serialize< + HighSerializer, Error>, + >, + ::Archived: rkyv::Deserialize>, +{ + fn build(entries: Vec, output_path: &str) -> std::io::Result { + println!("Building MPH table with {} entries...", entries.len()); + let keys: Vec = entries.iter().map(|e| e.fxy()).collect(); - - let mphf = Mphf::new(2.0, &keys); - + let mphf = GOFunction::from_slice(&keys); let mut sorted_entries: Vec<(usize, T::TableEntry)> = entries .into_iter() - .map(|e| { - let hash = mphf.hash(&e.fxy()) as usize; - (hash, e) - }) + .map(|e| (mphf.get(&(e.fxy())).unwrap() as usize, e)) .collect(); sorted_entries.sort_by_key(|(hash, _)| *hash); - let data_path = format!("{}.data", output_path); - let mut data_file = File::create(&data_path)?; + // Serialize MPHF to bytes + let mut mphf_bytes = Vec::new(); + mphf.write(&mut mphf_bytes) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, format!("{:?}", e)))?; + + // Prepare data entries + let mut data_bytes = Vec::new(); let mut offsets = Vec::with_capacity(sorted_entries.len()); for (_, entry) in sorted_entries { - let offset = data_file.stream_position()?; + let offset = data_bytes.len() as u64; offsets.push(offset); - // rkyv 序列化 - let mut serializer = AllocSerializer::<256>::default(); - serializer.serialize_value(&entry).unwrap(); - let bytes = serializer.into_serializer().into_inner(); + let bytes = rkyv::to_bytes::(&entry) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, format!("{:?}", e)))?; - // 写入长度 + 数据 - data_file.write_u32::(bytes.len() as u32)?; - data_file.write_all(&bytes)?; + let len = bytes.len() as u32; + data_bytes.write_all(&len.to_le_bytes())?; + data_bytes.write_all(&bytes)?; } - // 5. 保存元数据 - let meta_path = format!("{}.meta", output_path); - let meta = MphMetadata { - mphf: mphf.clone(), - offsets: offsets.clone(), - }; + // Serialize offsets as raw bytes + let offsets_count = offsets.len() as u32; + let mut offsets_bytes = Vec::with_capacity(offsets.len() * 8); + for offset in &offsets { + offsets_bytes.extend_from_slice(&offset.to_le_bytes()); + } - // 元数据仍然用 bincode 或者也可以用 rkyv - let mut meta_serializer = AllocSerializer::<4096>::default(); - meta_serializer.serialize_value(&meta).unwrap(); - let meta_bytes = meta_serializer.into_serializer().into_inner(); - std::fs::write(meta_path, meta_bytes)?; + // Write merged file + let merged_path = format!("{}.bufrtbl", output_path); + let mut merged_file = std::fs::File::create(&merged_path)?; + + // Write header: mphf_size (u32) + offsets_count (u32) + merged_file.write_all(&(mphf_bytes.len() as u32).to_le_bytes())?; + merged_file.write_all(&offsets_count.to_le_bytes())?; + + // Write MPHF data + merged_file.write_all(&mphf_bytes)?; + + // Write offsets (already 8-byte aligned since each offset is u64) + merged_file.write_all(&offsets_bytes)?; + + // Write table entries data + merged_file.write_all(&data_bytes)?; + + println!("Built successfully!"); + println!( + " Merged file: {} bytes", + std::fs::metadata(&merged_path)?.len() + ); + + Self::load(output_path) + } + + fn load>(path: P) -> std::io::Result { + let mut path = path.as_ref().to_path_buf(); + path.set_extension("bufrtbl"); + let merged_file = std::fs::File::open(&path)?; + let mmap = unsafe { Mmap::map(&merged_file)? }; + + // Read header + let mphf_size = u32::from_le_bytes(mmap[0..4].try_into().unwrap()) as usize; + let offsets_count = u32::from_le_bytes(mmap[4..8].try_into().unwrap()) as usize; + + // Calculate section positions + let mphf_start = 8; + let mphf_end = mphf_start + mphf_size; + let offsets_start = mphf_end; + let offsets_size = offsets_count * 8; // each offset is u64 (8 bytes) + let offsets_end = offsets_start + offsets_size; + let data_start = offsets_end; + + // Load MPHF + let mphf_bytes = &mmap[mphf_start..mphf_end]; + let mphf: GOFunction = GOFunction::read(&mut &mphf_bytes[..]) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, format!("{:?}", e)))?; + + // Load offsets + let offsets_bytes = &mmap[offsets_start..offsets_end]; + let mut offsets = Vec::with_capacity(offsets_count); + for i in 0..offsets_count { + let offset_bytes = &offsets_bytes[i * 8..(i + 1) * 8]; + let offset = u64::from_le_bytes(offset_bytes.try_into().unwrap()); + offsets.push(offset + data_start as u64); // Adjust offset for data section + } Ok(Self { mphf, offsets, - data_file: File::open(data_path)?, + mmap, _marker: std::marker::PhantomData, }) } - /// 从磁盘加载 - fn load(path: &str) -> std::io::Result { - let meta_bytes = std::fs::read(format!("{}.meta", path))?; + /// 获取拥有的版本 + fn get(&self, fxy: FXY) -> Option { + let hash = self.mphf.get(&fxy)? as usize; + let offset = *self.offsets.get(hash)? as usize; - // rkyv 反序列化元数据(零拷贝) - let archived = unsafe { rkyv::archived_root::(&meta_bytes) }; + let len_bytes = self.mmap.get(offset..offset + 4)?; + let len = u32::from_le_bytes(len_bytes.try_into().ok()?) as usize; - // 如果需要拥有的版本,可以 deserialize - let meta: MphMetadata = archived.deserialize(&mut rkyv::Infallible).unwrap(); + let data = self.mmap.get(offset + 4..offset + 4 + len)?; - let data_file = File::open(format!("{}.data", path))?; - - Ok(Self { - mphf: meta.mphf, - offsets: meta.offsets, - data_file, - _marker: std::marker::PhantomData, - }) + let archived = + unsafe { rkyv::access_unchecked::<::Archived>(data) }; + rkyv::deserialize::(archived).ok() } - /// 查找条目(零拷贝读取) - fn get(&mut self, fxy: FXY) -> std::io::Result> { - let hash = self.mphf.hash(&fxy) as usize; - let offset = match self.offsets.get(hash) { - Some(&off) => off, - None => return Ok(None), - }; - - // 读取数据 - self.data_file.seek(SeekFrom::Start(offset))?; - let len = self.data_file.read_u32::()? as usize; - let mut buffer = vec![0u8; len]; - self.data_file.read_exact(&mut buffer)?; - - // rkyv 零拷贝访问 - let archived = unsafe { rkyv::archived_root::(&buffer) }; - - // 校验归档数据(可选,生产环境推荐) - #[cfg(feature = "validation")] - { - use rkyv::validation::validators::DefaultValidator; - rkyv::check_archived_root::(&buffer) - .map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e))?; + /// 获取所有条目 + fn get_all(&self) -> Vec { + let mut entries = Vec::new(); + for offset in &self.offsets { + let offset = *offset as usize; + if let Some(len_bytes) = self.mmap.get(offset..offset + 4) { + if let Ok(len_bytes_array) = len_bytes.try_into() { + let len = u32::from_le_bytes(len_bytes_array) as usize; + if let Some(data) = self.mmap.get(offset + 4..offset + 4 + len) { + let archived = unsafe { + rkyv::access_unchecked::<::Archived>(data) + }; + if let Ok(entry) = rkyv::deserialize::(archived) { + entries.push(entry); + } + } + } + } } - - // 反序列化为拥有的类型 - let entry: T::TableEntry = archived.deserialize(&mut rkyv::Infallible).unwrap(); - - if entry.fxy == fxy { - Ok(Some(entry)) - } else { - Ok(None) - } - } - - /// 零拷贝引用访问(更快!) - fn get_archived(&mut self, fxy: u32) -> std::io::Result>> { - let hash = self.mphf.hash(&fxy) as usize; - let offset = match self.offsets.get(hash) { - Some(&off) => off, - None => return Ok(None), - }; - - self.data_file.seek(SeekFrom::Start(offset))?; - let len = self.data_file.read_u32::()? as usize; - let mut buffer = vec![0u8; len]; - self.data_file.read_exact(&mut buffer)?; - - Ok(Some(buffer)) + entries } } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone, Copy)] +#[derive( + Archive, + SerdeSerialize, + SerdeDeserialize, + rkyv::Serialize, + rkyv::Deserialize, + Debug, + PartialEq, + Eq, + Clone, + Copy, + std::hash::Hash, +)] +#[rkyv(compare(PartialEq), derive(Debug))] pub struct FXY { pub f: u16, pub x: u16, pub y: u16, } +// // Custom Hash implementation to work around boomphf's overflow bug +// // We implement Hash by converting to u32 first +// impl std::hash::Hash for FXY { +// fn hash(&self, state: &mut H) { +// // Convert FXY to a simple u32 value to avoid complex hashing +// self.to_u32().hash(state); +// } +// } + impl FXY { + pub fn new(f: u16, x: u16, y: u16) -> Self { + FXY { f, x, y } + } pub fn from_str(fxy_str: &str) -> anyhow::Result { // let bytes = fxy_str.as_bytes(); @@ -223,142 +302,72 @@ impl FXY { Ok(FXY { f, x, y }) } + + /// Convert FXY to u32 for use as hash key + /// Format: F (2 bits) | X (6 bits) | Y (8 bits) = 16 bits total + pub fn to_u32(&self) -> u32 { + ((self.f as u32) << 14) | ((self.x as u32) << 8) | (self.y as u32) + } + + /// Convert u32 back to FXY + pub fn from_u32(value: u32) -> Self { + FXY { + f: ((value >> 14) & 0x3) as u16, + x: ((value >> 8) & 0x3F) as u16, + y: (value & 0xFF) as u16, + } + } } -pub struct BUFRTableMPH {} +pub struct BUFRTableMPH { + inner: BufrTableMph, +} -impl BUFRTableMPH { - pub fn build_from_csv, T: TableEntryLoader>( +impl BUFRTableMPH { + pub fn build_from_csv>( mut loader: T, csv_path: P, output_path: P, ) -> anyhow::Result { - TableLoader.load_table(csv_path, &mut loader)?; - loader.finish()?; + let entries = TableLoader.load_table(csv_path, &mut loader)?; + let bhm = BufrTableMph::::build(entries, output_path.as_ref().to_str().unwrap())?; - Ok(BUFRTableMPH {}) + Ok(BUFRTableMPH { inner: bhm }) } pub fn load_from_disk>(path: P) -> anyhow::Result { - // Placeholder for loading MPH table from disk - Ok(BUFRTableMPH {}) + let bhm: BufrTableMph = BufrTableMph::load(path)?; + Ok(BUFRTableMPH { inner: bhm }) } - pub fn lookup(&self, fxy: FXY) -> anyhow::Result> { - // Placeholder for looking up an entry by FXY - Ok(None) + pub fn lookup(&self, fxy: FXY) -> anyhow::Result> { + Ok(self.inner.get(fxy)) + } + + pub fn get_all_entries(&self) -> Vec { + self.inner.get_all() } } -// #[derive(Serialize, Deserialize, Debug)] -// struct TableEntry { -// fxy: u32, // F-X-Y descriptor (e.g., 001001) -// name: String, // "WMO Block Number" -// unit: String, // "Numeric" -// scale: i8, -// reference: i32, -// data_width: u8, -// } +#[repr(C)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum TableType { + B, + D, +} -// struct BufrTableMph { -// mphf: Mphf, // The MPH function -// offsets: Vec, // Byte offsets into the data file -// data_file: File, // Memory-mapped or regular file -// } +#[cfg(test)] +mod test { + use crate::{BUFRTableMPH, dtable::DTableCsvLoader}; -// impl BufrTableMph { -// /// Build MPH table from entries -// fn build(entries: Vec, output_path: &str) -> std::io::Result { -// // 1. Extract keys (FXY descriptors) -// let keys: Vec = entries.iter().map(|e| e.fxy).collect(); - -// // 2. Build MPH function with gamma=2.0 (space/time tradeoff) -// let mphf = Mphf::new(2.0, &keys); - -// // 3. Create sorted entries by MPH hash -// let mut sorted_entries: Vec<(usize, TableEntry)> = entries -// .into_iter() -// .map(|e| { -// let hash = mphf.hash(&e.fxy) as usize; -// (hash, e) -// }) -// .collect(); -// sorted_entries.sort_by_key(|(hash, _)| *hash); - -// // 4. Write binary data file and collect offsets -// let data_path = format!("{}.data", output_path); -// let mut data_file = File::create(&data_path)?; -// let mut offsets = Vec::with_capacity(sorted_entries.len()); - -// for (_, entry) in sorted_entries { -// let offset = data_file.stream_position()?; -// offsets.push(offset); - -// // Write entry in compact binary format -// let serialized = bincode::serialize(&entry).unwrap(); -// data_file.write_u32::(serialized.len() as u32)?; -// data_file.write_all(&serialized)?; -// } - -// // 5. Write MPH metadata -// let meta_path = format!("{}.meta", output_path); -// let meta = MphMetadata { mphf, offsets }; -// let meta_bytes = bincode::serialize(&meta).unwrap(); -// std::fs::write(meta_path, meta_bytes)?; - -// Ok(Self { -// mphf: meta.mphf, -// offsets: meta.offsets, -// data_file: File::open(data_path)?, -// }) -// } - -// /// Load from disk -// fn load(path: &str) -> std::io::Result { -// let meta_bytes = std::fs::read(format!("{}.meta", path))?; -// let meta: MphMetadata = bincode::deserialize(&meta_bytes).unwrap(); -// let data_file = File::open(format!("{}.data", path))?; - -// Ok(Self { -// mphf: meta.mphf, -// offsets: meta.offsets, -// data_file, -// }) -// } - -// /// Lookup entry by FXY descriptor -// fn get(&mut self, fxy: u32) -> std::io::Result> { -// // 1. Hash the key to get index -// let hash = self.mphf.hash(&fxy) as usize; - -// // 2. Get offset from array -// let offset = match self.offsets.get(hash) { -// Some(&off) => off, -// None => return Ok(None), -// }; - -// // 3. Seek and read -// self.data_file.seek(SeekFrom::Start(offset))?; -// let len = self.data_file.read_u32::()? as usize; -// let mut buffer = vec![0u8; len]; -// self.data_file.read_exact(&mut buffer)?; - -// // 4. Deserialize -// let entry: TableEntry = bincode::deserialize(&buffer).unwrap(); - -// // Verify key matches (MPH guarantees unique index, but verify correctness) -// if entry.fxy == fxy { -// Ok(Some(entry)) -// } else { -// Ok(None) -// } -// } -// } - -// #[derive(Serialize, Deserialize)] -// struct MphMetadata { -// mphf: Mphf, -// offsets: Vec, -// } - -// use byteorder::{ReadBytesExt, WriteBytesExt}; + #[test] + fn test() { + let d_loader = DTableCsvLoader::default(); + BUFRTableMPH::build_from_csv( + d_loader, + "/Users/xiang.li1/projects/rbufr/BUFR4/BUFR_TableD_en_00.csv", + "test_table_d", + ) + .unwrap(); + } +} diff --git a/gen/src/main.rs b/gen/src/main.rs index e7a11a9..dd3d079 100644 --- a/gen/src/main.rs +++ b/gen/src/main.rs @@ -1,3 +1,289 @@ -fn main() { - println!("Hello, world!"); +use anyhow::{Context, Result}; +use clap::{Parser, Subcommand}; +use genlib::{BUFRTableMPH, btable::BTableCsvLoader, dtable::DTableCsvLoader}; +use std::path::{Path, PathBuf}; + +#[derive(Parser)] +#[command(name = "gen-ctl")] +#[command(about = "BUFR Table conversion tool", long_about = None)] +struct Cli { + #[command(subcommand)] + command: Commands, +} + +#[derive(Subcommand)] +enum Commands { + /// Scan a directory and convert all BUFR tables to MPH format + Scan { + /// Input directory containing BUFR CSV files + #[arg(short, long)] + input: PathBuf, + + /// Output directory for generated .bufrtbl files + #[arg(short, long)] + output: PathBuf, + + /// Table type to process: "d", "b", or "all" + #[arg(short, long, default_value = "all")] + table_type: String, + }, + /// Convert a single BUFR table file + Convert { + /// Input CSV file + #[arg(short, long)] + input: PathBuf, + + /// Output path (without extension) + #[arg(short, long)] + output: PathBuf, + + /// Table type: "d" for Table D, "b" for Table B + #[arg(short, long)] + table_type: String, + }, + /// Print a BUFR table in formatted output + Print { + /// Path to .bufrtbl file (without extension) + #[arg(short, long)] + input: PathBuf, + + /// Table type: "d" for Table D, "b" for Table B + #[arg(short, long)] + table_type: String, + + /// Maximum number of entries to print (optional) + #[arg(short, long)] + limit: Option, + }, +} + +fn main() -> Result<()> { + let cli = Cli::parse(); + + match cli.command { + Commands::Scan { + input, + output, + table_type, + } => { + scan_and_convert(&input, &output, &table_type)?; + } + Commands::Convert { + input, + output, + table_type, + } => { + convert_single_file(&input, &output, &table_type)?; + } + Commands::Print { + input, + table_type, + limit, + } => { + print_table(&input, &table_type, limit)?; + } + } + + Ok(()) +} + +fn scan_and_convert(input_dir: &Path, output_dir: &Path, table_type: &str) -> Result<()> { + // Create output directory if it doesn't exist + std::fs::create_dir_all(output_dir).context("Failed to create output directory")?; + + println!("Scanning directory: {}", input_dir.display()); + println!("Output directory: {}", output_dir.display()); + println!("Table type: {}", table_type); + println!(); + + let mut processed_count = 0; + let mut error_count = 0; + + // Scan for BUFR_TableD files + if table_type == "d" || table_type == "all" { + println!("Processing Table D files..."); + let pattern = input_dir.join("BUFR_TableD_*.csv"); + for entry in glob::glob(pattern.to_str().unwrap()).context("Failed to read glob pattern")? { + match entry { + Ok(path) => { + let mut filename = path.file_stem().unwrap().to_str().unwrap().to_string(); + if filename.contains("BUFRCREX") { + filename = filename.replace("BUFRCREX_", "BUFR_"); + } + let output_path = output_dir.join(filename); + + print!(" Converting {} ... ", path.display()); + match convert_table_d(&path, &output_path) { + Ok(_) => { + println!("OK"); + processed_count += 1; + } + Err(e) => { + println!("ERROR: {}", e); + error_count += 1; + } + } + } + Err(e) => { + println!("Error reading file: {}", e); + error_count += 1; + } + } + } + println!(); + } + + // Scan for BUFRCREX_TableB files + if table_type == "b" || table_type == "all" { + println!("Processing Table B files..."); + let pattern = input_dir.join("BUFRCREX_TableB_*.csv"); + + for entry in glob::glob(pattern.to_str().unwrap()).context("Failed to read glob pattern")? { + match entry { + Ok(path) => { + let mut filename = path.file_stem().unwrap().to_str().unwrap().to_string(); + if filename.contains("BUFRCREX") { + filename = filename.replace("BUFRCREX_", "BUFR_"); + } + let output_path = output_dir.join(filename); + + print!(" Converting {} ... ", path.display()); + match convert_table_b(&path, &output_path) { + Ok(_) => { + println!("OK"); + processed_count += 1; + } + Err(e) => { + eprintln!("ERROR: {}", e); + error_count += 1; + } + } + } + Err(e) => { + eprintln!("Error reading file: {}", e); + error_count += 1; + } + } + } + println!(); + } + + println!("Summary:"); + println!(" Successfully processed: {}", processed_count); + println!(" Errors: {}", error_count); + + if error_count > 0 { + anyhow::bail!("Conversion completed with {} errors", error_count); + } + + Ok(()) +} + +fn convert_single_file(input_path: &Path, output_path: &Path, table_type: &str) -> Result<()> { + println!( + "Converting {} to {}", + input_path.display(), + output_path.display() + ); + + match table_type.to_lowercase().as_str() { + "d" => convert_table_d(input_path, output_path)?, + "b" => convert_table_b(input_path, output_path)?, + _ => anyhow::bail!("Invalid table type: {}. Use 'd' or 'b'", table_type), + } + + println!("Conversion completed successfully!"); + Ok(()) +} + +fn convert_table_d(input_path: &Path, output_path: &Path) -> Result<()> { + let loader = DTableCsvLoader::default(); + BUFRTableMPH::build_from_csv(loader, input_path, output_path)?; + Ok(()) +} + +fn convert_table_b(input_path: &Path, output_path: &Path) -> Result<()> { + let loader = BTableCsvLoader; + BUFRTableMPH::build_from_csv(loader, input_path, output_path)?; + Ok(()) +} + +fn print_table(input_path: &Path, table_type: &str, limit: Option) -> Result<()> { + match table_type.to_lowercase().as_str() { + "d" => print_table_d(input_path, limit)?, + "b" => print_table_b(input_path, limit)?, + _ => anyhow::bail!("Invalid table type: {}. Use 'd' or 'b'", table_type), + } + + Ok(()) +} + +fn print_table_d(input_path: &Path, limit: Option) -> Result<()> { + use genlib::dtable::DTableEntry; + + println!("Loading Table D from: {}", input_path.display()); + + let table: BUFRTableMPH = BUFRTableMPH::load_from_disk(input_path)?; + let entries = table.get_all_entries(); + + println!("\nTable D Entries (Total: {})", entries.len()); + println!("{}", "=".repeat(140)); + println!( + "{:<7} | {:<50} | {:<12} | {}", + "FXY", "Title", "Status", "FXY Chain" + ); + println!("{}", "-".repeat(140)); + + let display_entries = if let Some(max) = limit { + &entries[..entries.len().min(max)] + } else { + &entries[..] + }; + + for entry in display_entries { + println!("{}", entry); + } + + if let Some(max) = limit { + if entries.len() > max { + println!("\n... ({} more entries omitted)", entries.len() - max); + } + } + + Ok(()) +} + +fn print_table_b(input_path: &Path, limit: Option) -> Result<()> { + use genlib::btable::BTableEntry; + + println!("Loading Table B from: {}", input_path.display()); + + let table: BUFRTableMPH = BUFRTableMPH::load_from_disk(input_path)?; + let entries = table.get_all_entries(); + + println!("\nTable B Entries (Total: {})", entries.len()); + println!("{}", "=".repeat(120)); + println!( + "{:<7} | {:<40} | {:<15} | {:<5} | {:<8} | {:<8} | {}", + "FXY", "Element Name", "Unit", "Scale", "Ref Val", "Width", "Status" + ); + println!("{}", "-".repeat(120)); + + let display_entries = if let Some(max) = limit { + &entries[..entries.len().min(max)] + } else { + &entries[..] + }; + + for entry in display_entries { + println!("{}", entry); + } + + if let Some(max) = limit { + if entries.len() > max { + println!("\n... ({} more entries omitted)", entries.len() - max); + } + } + + Ok(()) } diff --git a/gen/src/prelude.rs b/gen/src/prelude.rs new file mode 100644 index 0000000..7cdc85f --- /dev/null +++ b/gen/src/prelude.rs @@ -0,0 +1,6 @@ +pub use crate::wmo; +// pub type BUFRTableD = crate::BUFRTableMPH; +// pub type BUFRTableB = crate::BUFRTableMPH; +pub use crate::BUFRTableMPH; +pub use crate::FXY; +pub use crate::TableType; diff --git a/gen/src/wmo/btable.rs b/gen/src/wmo/btable.rs new file mode 100644 index 0000000..701e7b4 --- /dev/null +++ b/gen/src/wmo/btable.rs @@ -0,0 +1,179 @@ +use crate::{FXY, TableEntry, TableEntryLoader}; +use rkyv::Archive; + +pub struct BTableCsvLoader; + +#[derive(Debug, serde::Deserialize)] +pub struct RawBTableEntry { + #[serde(rename = "ClassNo")] + pub class_no: String, + #[serde(rename = "ClassName_en")] + pub class_name_en: String, + #[serde(rename = "FXY")] + pub fxy: String, + #[serde(rename = "ElementName_en")] + pub element_name_en: String, + #[serde(rename = "BUFR_Unit")] + pub bufr_unit: String, + #[serde(rename = "BUFR_Scale")] + pub bufr_scale: i32, + #[serde(rename = "BUFR_ReferenceValue")] + pub bufr_reference_value: i32, + #[serde(rename = "BUFR_DataWidth_Bits")] + pub bufr_datawidth_bits: u32, + #[serde(rename = "CREX_Unit")] + pub crex_unit: Option, + #[serde(rename = "CREX_Scale")] + pub crex_scale: Option, + #[serde(rename = "CREX_DataWidth_Char")] + pub crex_datawidth_char: Option, + #[serde(rename = "Note_en")] + pub note_en: Option, + #[serde(rename = "noteIDs")] + pub note_ids: Option, + #[serde(rename = "Status")] + pub status: String, +} + +// Helper function to deserialize empty strings as None +fn deserialize_optional_string<'de, D>(deserializer: D) -> Result, D::Error> +where + D: serde::Deserializer<'de>, +{ + let s: String = serde::Deserialize::deserialize(deserializer)?; + if s.is_empty() { Ok(None) } else { Ok(Some(s)) } +} + +// Helper function to deserialize empty strings as None for u32 +fn deserialize_optional_u32<'de, D>(deserializer: D) -> Result, D::Error> +where + D: serde::Deserializer<'de>, +{ + let s: String = serde::Deserialize::deserialize(deserializer)?; + if s.is_empty() { + Ok(None) + } else { + s.parse::().map(Some).map_err(serde::de::Error::custom) + } +} + +#[derive( + Debug, Clone, serde::Deserialize, serde::Serialize, Archive, rkyv::Serialize, rkyv::Deserialize, +)] +#[rkyv(compare(PartialEq), derive(Debug))] +pub struct BTableEntry { + fxy: FXY, + class_name_en: String, + element_name_en: String, + bufr_unit: String, + bufr_scale: i32, + bufr_reference_value: i32, + bufr_datawidth_bits: u32, + note_en: Option, + note_ids: Option, + status: String, +} + +impl BTableEntry { + pub fn fxy(&self) -> FXY { + self.fxy + } + + pub fn class_name_en(&self) -> &str { + &self.class_name_en + } + + pub fn element_name_en(&self) -> &str { + &self.element_name_en + } + + pub fn bufr_unit(&self) -> &str { + &self.bufr_unit + } + + pub fn bufr_scale(&self) -> i32 { + self.bufr_scale + } + + pub fn bufr_reference_value(&self) -> i32 { + self.bufr_reference_value + } + + pub fn bufr_datawidth_bits(&self) -> u32 { + self.bufr_datawidth_bits + } + + pub fn note_en(&self) -> Option<&str> { + self.note_en.as_deref() + } + + pub fn note_ids(&self) -> Option<&str> { + self.note_ids.as_deref() + } + + pub fn status(&self) -> &str { + &self.status + } +} + +impl std::fmt::Display for BTableEntry { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let element_name = if self.element_name_en.len() > 40 { + format!("{}...", &self.element_name_en[..37]) + } else { + self.element_name_en.clone() + }; + + let unit = if self.bufr_unit.len() > 15 { + format!("{}...", &self.bufr_unit[..12]) + } else { + self.bufr_unit.clone() + }; + + write!( + f, + "{:02}{:02}{:03} | {:<40} | {:<15} | {:>5} | {:>8} | {:>8} | {}", + self.fxy.f, + self.fxy.x, + self.fxy.y, + element_name, + unit, + self.bufr_scale, + self.bufr_reference_value, + self.bufr_datawidth_bits, + self.status + ) + } +} + +impl TableEntryLoader for BTableCsvLoader { + type RawEntry = RawBTableEntry; + type TableEntry = BTableEntry; + const TABLE_TYPE: crate::TableType = crate::TableType::B; + + fn process_entry(&mut self, raw: Self::RawEntry) -> anyhow::Result> { + // Parse FXY string (e.g., "001001") to u32 + let fxy = FXY::from_str(&raw.fxy)?; + + let entry = BTableEntry { + fxy, + class_name_en: raw.class_name_en, + element_name_en: raw.element_name_en, + bufr_unit: raw.bufr_unit, + bufr_scale: raw.bufr_scale, + bufr_reference_value: raw.bufr_reference_value, + bufr_datawidth_bits: raw.bufr_datawidth_bits, + note_en: raw.note_en, + note_ids: raw.note_ids, + status: raw.status, + }; + + Ok(Some(entry)) + } +} + +impl TableEntry for BTableEntry { + fn fxy(&self) -> FXY { + self.fxy + } +} diff --git a/gen/src/dtable.rs b/gen/src/wmo/dtable.rs similarity index 52% rename from gen/src/dtable.rs rename to gen/src/wmo/dtable.rs index b49425e..d9af9f8 100644 --- a/gen/src/dtable.rs +++ b/gen/src/wmo/dtable.rs @@ -1,11 +1,11 @@ -use crate::{FXY, TableEntryLoader}; +use crate::{FXY, TableEntry, TableEntryLoader}; +use rkyv::Archive; +#[derive(Debug, Clone, Default)] pub struct DTableCsvLoader { current_chain: Option, - entries: Vec, } -// Category,CategoryOfSequences_en,FXY1,Title_en,SubTitle_en,FXY2,ElementName_en,ElementDescription_en,Note_en,noteIDs,Status #[derive(Debug, serde::Deserialize)] pub struct RawDTableEntry { #[serde(rename = "Category")] @@ -21,9 +21,9 @@ pub struct RawDTableEntry { #[serde(rename = "FXY2")] pub fxy2: String, #[serde(rename = "ElementName_en")] - pub element_name_en: Option, + pub _element_name_en: Option, #[serde(rename = "ElementDescription_en")] - pub element_description_en: Option, + pub _element_description_en: Option, #[serde(rename = "Note_en")] pub note_en: Option, #[serde(rename = "noteIDs")] @@ -34,8 +34,10 @@ pub struct RawDTableEntry { impl TableEntryLoader for DTableCsvLoader { type RawEntry = RawDTableEntry; + type TableEntry = DTableEntry; + const TABLE_TYPE: crate::TableType = crate::TableType::D; - fn process_entry(&mut self, raw: Self::RawEntry) -> anyhow::Result<()> { + fn process_entry(&mut self, raw: Self::RawEntry) -> anyhow::Result> { // Process the raw entry as needed if self.current_chain.is_none() { let entry = DTableEntry { @@ -50,10 +52,14 @@ impl TableEntryLoader for DTableCsvLoader { status: raw.status, }; self.current_chain = Some(entry); + return Ok(None); } else { let fxy = FXY::from_str(&raw.fxy1)?; if self.current_chain.as_ref().unwrap().fxy != fxy { - self.entries.push(self.current_chain.take().unwrap()); + // First take out the old completed chain + let finished = self.current_chain.take(); + + // Then create and save the new chain let entry = DTableEntry { fxy, fxy_chain: vec![FXY::from_str(&raw.fxy2)?], @@ -66,25 +72,30 @@ impl TableEntryLoader for DTableCsvLoader { status: raw.status, }; self.current_chain = Some(entry); + + // Return the old completed chain + return Ok(finished); } else { self.current_chain .as_mut() .unwrap() .fxy_chain .push(FXY::from_str(&raw.fxy2)?); + + return Ok(None); } } - Ok(()) } - fn finish(&mut self) -> anyhow::Result<()> { - if let Some(entry) = self.current_chain.take() { - self.entries.push(entry); - } - Ok(()) + fn finish(&mut self) -> anyhow::Result> { + Ok(self.current_chain.take()) } } +#[derive( + Debug, Clone, serde::Deserialize, serde::Serialize, Archive, rkyv::Serialize, rkyv::Deserialize, +)] +#[rkyv(compare(PartialEq), derive(Debug))] pub struct DTableEntry { fxy: FXY, fxy_chain: Vec, @@ -96,3 +107,71 @@ pub struct DTableEntry { note_ids: String, status: String, } + +impl DTableEntry { + pub fn fxy(&self) -> FXY { + self.fxy + } + + pub fn fxy_chain(&self) -> &[FXY] { + &self.fxy_chain + } + + pub fn category(&self) -> &str { + &self.category + } + + pub fn category_of_sequences_en(&self) -> &str { + &self.category_of_sequences_en + } + + pub fn title_en(&self) -> Option<&str> { + self.title_en.as_deref() + } + + pub fn subtitle_en(&self) -> Option<&str> { + self.subtitle_en.as_deref() + } + + pub fn note_en(&self) -> Option<&str> { + self.note_en.as_deref() + } + + pub fn note_ids(&self) -> &str { + &self.note_ids + } + + pub fn status(&self) -> &str { + &self.status + } +} + +impl std::fmt::Display for DTableEntry { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let fxy_chain_str: String = self + .fxy_chain + .iter() + .map(|fxy| format!("{:02}{:02}{:03}", fxy.f, fxy.x, fxy.y)) + .collect::>() + .join(", "); + + let title = self.title_en.as_deref().unwrap_or("N/A"); + let truncated_title = if title.len() > 50 { + format!("{}...", &title[..47]) + } else { + title.to_string() + }; + + write!( + f, + "{:02}{:02}{:03} | {:<50} | {:<12} | [{}]", + self.fxy.f, self.fxy.x, self.fxy.y, truncated_title, self.status, fxy_chain_str + ) + } +} + +impl TableEntry for DTableEntry { + fn fxy(&self) -> FXY { + self.fxy + } +} diff --git a/gen/src/wmo/mod.rs b/gen/src/wmo/mod.rs new file mode 100644 index 0000000..2b2c7b1 --- /dev/null +++ b/gen/src/wmo/mod.rs @@ -0,0 +1,2 @@ +pub mod btable; +pub mod dtable; diff --git a/rbufr/Cargo.toml b/rbufr/Cargo.toml index b2545e2..8804f60 100644 --- a/rbufr/Cargo.toml +++ b/rbufr/Cargo.toml @@ -14,3 +14,5 @@ flate2 = "1.1.5" nom = "8.0.0" serde = { version = "1.0.228", features = ["derive"] } thiserror = "2.0.17" +gentools = { path = "../gen" } +anyhow = "1.0.100" diff --git a/rbufr/tables/bufr/bufrtabb_11.csv b/rbufr/rtables/bufr/bufrtabb_11.csv similarity index 100% rename from rbufr/tables/bufr/bufrtabb_11.csv rename to rbufr/rtables/bufr/bufrtabb_11.csv diff --git a/rbufr/tables/bufr/bufrtabd_11.csv b/rbufr/rtables/bufr/bufrtabd_11.csv similarity index 100% rename from rbufr/tables/bufr/bufrtabd_11.csv rename to rbufr/rtables/bufr/bufrtabd_11.csv diff --git a/rbufr/src/block.rs b/rbufr/src/block.rs index 1a7e51d..02c13db 100644 --- a/rbufr/src/block.rs +++ b/rbufr/src/block.rs @@ -1,5 +1,8 @@ +use genlib::{BUFRTableMPH, TableEntryLoader}; + use crate::errors::Result; -use crate::{discriptor_table::*, structs::versions::BUFRMessage}; +use crate::structs::versions::BUFRMessage; +use crate::tables::*; pub struct MessageBlock { message: BUFRMessage, @@ -18,32 +21,47 @@ impl MessageBlock { pub fn load_data(&self) -> Result<()> { let table_info = self.message.table_info(); + let master_table_version = table_info.master_table_version; - let mut b_table_loader = TableLoader::::new(); - let master_b_sequences = - b_table_loader.load_table(TT::Standard, table_info.master_table_version)?; - - let mut d_table_loader = TableLoader::::new(); - let master_d_sequences = - d_table_loader.load_table(TT::Standard, table_info.master_table_version)?; + let master_b: BUFRTableB = self.load_first_validable_table(master_table_version)?; + let master_d: BUFRTableD = self.load_first_validable_table(master_table_version)?; let local_table_version = table_info.local_table_version as u32; if local_table_version > 0 { - let local_b_sequences = b_table_loader.load_table( - TT::Localized(local_table_version), + let local_b: BUFRTableB = TableLoader.load_table(LocalTable::new( + Some(table_info.subcenter_id), table_info.local_table_version, - )?; + ))?; - let local_d_sequences = d_table_loader.load_table( - TT::Localized(local_table_version), + let local_d: BUFRTableD = TableLoader.load_table(LocalTable::new( + Some(table_info.subcenter_id), table_info.local_table_version, - )?; + ))?; } Ok(()) // master_b_table.load_table(TT::Standard); } + + fn load_first_validable_table( + &self, + table_version: u8, + ) -> Result> { + (0..=table_version) + .rev() + .find_map(|version| { + TableLoader + .load_table(MasterTable::new(version)) + .ok() + .inspect(|_| { + if version != table_version { + eprintln!("Falling back to Master Table version {}", version); + } + }) + }) + .ok_or(crate::errors::Error::TableNotFoundEmpty) + } } pub struct BUFRFile { diff --git a/rbufr/src/errors.rs b/rbufr/src/errors.rs index a8b04d6..90e23b4 100644 --- a/rbufr/src/errors.rs +++ b/rbufr/src/errors.rs @@ -9,8 +9,11 @@ pub enum Error { #[error("CSV Error: {0}")] Csv(#[from] csv::Error), - #[error("Table not found for type {0:?}, sub_center {1:?}, version {2}")] - TableNotFound(crate::discriptor_table::TableType, Option, u8), + #[error("Table not found: {0}")] + TableNotFound(#[from] anyhow::Error), + + #[error("Table not found")] + TableNotFoundEmpty, #[error("Parse Error: {0}")] ParseError(String), diff --git a/rbufr/src/lib.rs b/rbufr/src/lib.rs index e00d30f..4558b27 100644 --- a/rbufr/src/lib.rs +++ b/rbufr/src/lib.rs @@ -1,5 +1,39 @@ mod block; -mod discriptor_table; +mod tables; +// mod discriptor_table; mod errors; pub mod parser; pub mod structs; + +#[cfg(test)] +mod test { + + #[test] + fn test() { + use genlib::prelude::*; + let bufr = BUFRTableB::load_from_disk( + "/Users/xiang.li1/projects/rbufr/tables/BUFRCREX_TableB_en_00.bufrtbl", + ) + .unwrap(); + + let entry = bufr.lookup(FXY::new(0, 0, 1)).unwrap().unwrap(); + + println!("{:#?}", entry); + } + + #[test] + fn test_rb() { + use crate::parser::Parser; + + let mut parser = Parser::new(); + let parsed_file = parser + .parse("/Users/xiang.li1/Downloads/36_2025-12-22T11_00_00.bufr") + .unwrap(); + + for msg in parsed_file.messages() { + println!("{}", msg); + + msg.load_data().unwrap(); + } + } +} diff --git a/rbufr/src/parser.rs b/rbufr/src/parser.rs index 10494c9..5c1b828 100644 --- a/rbufr/src/parser.rs +++ b/rbufr/src/parser.rs @@ -147,19 +147,3 @@ impl Parser { Ok(file_block) } } - -#[cfg(test)] -mod tests { - - use super::Parser; - - #[test] - fn test() { - let mut parser = Parser::new(); - if let Ok(file) = parser.parse("/Users/xiang.li1/Downloads/36_2025-12-22T11_00_00.bufr") { - for message in file.messages() { - println!("{}", message); - } - } - } -} diff --git a/rbufr/src/tables.rs b/rbufr/src/tables.rs new file mode 100644 index 0000000..6489f5b --- /dev/null +++ b/rbufr/src/tables.rs @@ -0,0 +1,102 @@ +use crate::errors::Result; +pub use genlib::prelude::{BUFRTableB, BUFRTableD, TableType}; +use genlib::{TableEntryLoader, prelude::*}; +use std::path::PathBuf; + +pub trait TableTrait { + fn file_path(&self, table_type: TableType) -> PathBuf; +} + +#[derive(Debug, Clone, Copy)] +pub struct MasterTable { + version: u8, +} + +impl MasterTable { + pub fn new(version: u8) -> Self { + MasterTable { version } + } +} +#[derive(Debug, Clone, Copy)] +pub struct LocalTable { + sub_center: Option, + version: u8, +} + +impl LocalTable { + pub fn new(sub_center: Option, version: u8) -> Self { + LocalTable { + sub_center, + version, + } + } +} +impl TableTrait for MasterTable { + fn file_path(&self, table_type: TableType) -> PathBuf { + match table_type { + TableType::B => { + let mut base_dir = PathBuf::new(); + base_dir.push("tables/master"); + let file_name = format!("BUFR_TableB_en_{:0>2}.bufrtbl", self.version); + base_dir.join(file_name) + } + TableType::D => { + let mut base_dir = PathBuf::new(); + base_dir.push("tables/master"); + let file_name = format!("BUFR_TableD_en_{:0>2}.bufrtbl", self.version); + base_dir.join(file_name) + } + _ => { + unreachable!("Table type not supported for MasterTable") + } + } + } +} + +impl TableTrait for LocalTable { + fn file_path(&self, table_type: TableType) -> PathBuf { + match table_type { + TableType::B => { + let mut base_dir = PathBuf::new(); + base_dir.push("tables/local"); + let sub_center_str = match self.sub_center { + Some(sc) => format!("sc{:0>2}", sc), + None => "sc00".to_string(), + }; + let file_name = format!( + "BUFR_TableB_{}_en_{:0>2}.bufrtbl", + sub_center_str, self.version + ); + base_dir.join(file_name) + } + TableType::D => { + let mut base_dir = PathBuf::new(); + base_dir.push("tables/local"); + let sub_center_str = match self.sub_center { + Some(sc) => format!("sc{:0>2}", sc), + None => "sc00".to_string(), + }; + let file_name = format!( + "BUFR_TableD_{}_en_{:0>2}.bufrtbl", + sub_center_str, self.version + ); + base_dir.join(file_name) + } + _ => { + unreachable!("Table type not supported for LocalTable") + } + } + } +} + +pub struct TableLoader; + +impl TableLoader { + pub fn load_table(&self, table_type: impl TableTrait) -> Result> + where + T: TableEntryLoader, + { + let path = table_type.file_path(T::TABLE_TYPE); + BUFRTableMPH::::load_from_disk(path).map_err(|e| e.into()) + } +} diff --git a/rbufr/tables/master/BUFR_TableB_en_00.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_00.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..babfa11394cfae54da222e80e693096dcefc7596 GIT binary patch literal 3832 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_02.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_02.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..bb156f2d563eddf0bc7593b9e796fe0dff60cf43 GIT binary patch literal 27334 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_03.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_03.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..14bee965b993d8d3559486065bc3e55b1a345411 GIT binary patch literal 4585 zcmbtX-)kI29A9hHnpTa!e>7c3pH67G3cmT05G@f223quax;uBfxVIB$cavP`Lmqr6 zDq2M_V$gsO77Vt!Tx^Utl;xe-kHW(d}!Swm*HF>FijXIbg=uEuO#KjE_wiykzmY zJIwfZi{YJSJaL!74U5wU&3MP+3wN9GKNiDDGyd1&*+XW0-Qwn9Gd^*T!EK9;d(HTY z#hLre_^QRlDKp*xyp(3SDmo&~c^=F3bazQG*Daq>y z_}&AUNBdvJ8t(vqv-|(mx4$(Do(?zK|1#dK&}J^;X(|$ShNt059Olt6)+&;O={}2i z(qbLH8h45gYn*&-e&Lz2Hcw)0r_E*bNt+Hn)T~K8YnowV_{M4TCi*39=DTerI|8<1 zk$^qYcAbe}qlYn{c>IWcKLGv$Bpdw!1n6d6+zkhicwEH0+rSc!IhnTNc41tC94V2- zvQQaoNyYL=sE%RTjCzEPuZ`gQDE1+~8`$$(;Ag-xUmJ>eI@}yzit7^J1rEt#o{Zub z$s!vesP8?5b&1~v@cI%++LV2M96$2;3ZGjLc_c#}k%Bi@h%E~Wr4X;IBY0LQL9tsW zp6^XsZnqkb>sY6x-E5kRH03Nq>L{{03h*~dyrj?1_>J!ZuUUQi{cW5+r0F{5mN+bC z-5}DQui}6OQnXre5JQo2>^+9Lj>E^6!^_8?#j3lzHa%;t@Tju6*sHM7Y)2L_2b>*F z9*B@FWB)iY`I6@>k2^Z2DuFDTwg;I}&ZKlt+{i{3fjTcVGtJE&J^GzWV)&A{eTBEr z155hMOBJt4B=>}cVkwV$xt$>(O)_VVZYfoP6KO)6u3+5@!0&)AS2XIH#B)SNvlG&^0LrpBZJXhym?%|1n+G%M$+ac5tR zpZCnlI0UEG?S_>EBX4IB`)8C1I6@D6*pT3wgrNNDQs;3catPaN<)g{hgOzO6JJU=`3V0F}CSBIJ4r1$&<+Fn|KSBQoVEK$4SF_L=TTwf?nm3TT z77oadYKZvWgO&%?P9LK0YNvi5-izNXVQxv6+C7ijJ^#j@r;siq``i2X+)GT8PnGuU z4Yg-9P1xvaD2%gACd=>{x!P@ubZ_;>Vas(B9KS*TbIWzV^?yZNy(*A^;4G+c<94JE z+;Zw+jkR)E!FTAo<>HF&BsX)G(fPWHxjn&j-Wj?R44&@3_mtiHSImDOeX`m78vddE zhY!B;o}hm<&7D&t_Fm!30taV1j|MjPy{EAz{chTu>U`SUo#FP1IrhFmFr7;*aBQ`M8i!@^TIpH{8$52gP(Im0pYpBaf}wW~fi*>)nnpU%*;v74Hj!z2 zKU_#}m;1NSzgaFLa!D)EE~?^D_pl?D$EbVQxLiV-RPZ=es1^@|uFdIKq_kg~U#P|; wJx1lUz1*4Cu|`dN1Sss3U@e6@PozP2z*DIPW|&JHsBWS2nCh1O#tCWhKX@EC6aWAK literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_04.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_04.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..8989c533b7c1b3fcfc25d549d2b06ae62d4fedea GIT binary patch literal 5021 zcmcIo&x;&I6fWbct5J8w_>%++yv(8=#3%v1#4HkZH(8QZ2zao!r#90t-97g7Y<3|B z4<3RB&0$X_hZO{K2yq2}!ioU}_Yg4PL6AN84+tJb0`2#8Rbh3_tkbirwM>6qRo(So zy?XC^ulIlu;&J>Y_l%7lxc}(y8^0buA;cbxjNwlLowjW5$8OO#XASP-^JwP{?z>g@ zuNa&k)BWoPr*G5!b%XnF*ZoTd$M4Yn3kGi*Tpicr;!cfg1{-(j{^tf?*sJ?L7<}Vy z-JiTi;{}8J@74VcgNG(`f79UHr0#DSoWD=^uNlnIok_zWkJ3ao@+ekQ^SH<;2{RR| zBtPC!SvecDg=h$h{Q$okMNzyD`~}#=j}2WRZWe`6x$OFv_b~7oo;?Tj50k9>w@}&7RGu_L#teefDt9LHt=1#(f8hwsPOWtY?qX7wdQfeUp2m9@ntn zi@+a&cK_%K@kddZuqnI#g?e1YI|I&T8U`;zBwf@VnyEGhlG8FzCyo_&t>;supSXw?i>wA;u|royNb;Imfej z&fAy6(StJt{ryEFe-m;UOFsc!yVl`l`g@(dGJV^D=E*NT7_G)$Fk823=tZn@_H zNTMDt_f+(#kr&B5b@t2>#qN1FO>)LcCI4XFlqtCDZxDK>C==`EUL;JSWnQ zyYlMdD*5}ep$!7=QFJ5x-3`Hg|5n$bcxdIBA!s8 zglXJiv75J)%v1+o0~n7L%9XON>b}$tP;d1S52Q52^SCnJR-yB^z>7d~&kZ1;Y{U3~ zw%lpXI}8bwzlk+$&U4SQj&GAA2E^G+$}-cTqJRA?f-PP*x-ibxaL?}|H~)&?iedue z+ckTB1GsT6L)woztSG5aS$9V56&zR4WY)ky94tq1FP6EAK?_0N%ltg?3T~R{7+~D&Fh-+fNQ@pd`dx;M-NfkMa+T@v literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_05.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_05.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..080a03cdb013e3c305f75e2bcde347009fea522b GIT binary patch literal 6661 zcmcIpPmI)594@#j3JNMJCa6U{EV`RWgNB1f1;j;x-7p@+c%a*Pv-4u7oxGV@b_s`# z(S#`Ymk|FDV-ytwQ8XMdVuFb#crXT|i6$Jp>cJS}fr}ZxZ~8jhcBZcb#usM3zINO9 z&G-BBe!p_FWmzNmEL%7?cW;bu8FQMxi-Q>8i%io=0`M+ERW{L zG>%*!%};1tcSAJ)QKNrjH2+iMK1{cSp4*gRU=LSAC3lBG)Aj99d(GmLA8gR+>y_q-Odo8WTKAdgS+w|juOJhq3s@^rWr_i_C* zcm{3o3oxrg(fYK-A=COhY&V!{`L43-VMBHVsi?4Kdm?BmVTToaO1aarIhzs(PjsyN z@J)V4u*OHg&w;T%opAi)x%LX2&l}X|W8AYBn5)kgxM#Bke;uyMsjBUIUQ4;&Y}Qsx zBjj=l&wCyCU4jc!#p$Ed?VEskBeoTNK9|dS;VKzS*`c!C-LlqdR`GL{KrE?NHk6*b}4f?)>_RasZZ9IbV|iv_KsK| zqc4?0`jM6fRPe6>X-LObq9T+CJYiRqTg#~BSX;1U>`O;+ob;tZwK@)6jj^`g4a$9k z&9TPy`iwRH)_$?3w-{XQ9lVF@9|q?7Pf0TG!hN5HGG#H-aU?&4NBM3OiP+Z{Renx* z3eTrb?_jOZfXpvRJ7U__TPCjd4)SD9Fy_YXq7nM7PA*VxS+*J}XTlR4YXaZo!QA)? zkh!sj563_F;FMLQSD|m0po;Iyrm($PFMq!n!CK@(-#!Rr>?bwBDQhvmaz?BPb9}Dt zx_PJ@VaAL^jkqRx(J$Tweg%y4BmbFQW}}`T6thcG2EOU7721Z3ZVmeZf6UZ}H4Ynj3o8AZx|gzX#<*-!j^;RF!q6#h`&AE#Bo&1%#^1 ztr%`s8XuoXS&-cB(A;Rl4{+SihPp+-)!q^31Y@2|_?PDfwl4#bPL+~R;>fqxkw}KKN^!>D< z9P0txOAgFWF9BKW#~kQG97Qz}^MJ92+$4oxW*Sgp%2oYK0O&D_waCS^j}*l{{n;2_ zrPk!=e4?y}619=9YuuDLj{mrHuI|Ay)QC0h+d$T|S${67BdL)wuKIDxXmgk5@n7T0XsZc1BYe9dccTvq>~vF| z;j>EfN!lu|hwyVd^-z%?bI&mP@#ap^h&>GHa7yIvUyo`ordq$qkIBVY>pyw%edGO_ z-~ZY-rg{-%l)i16WASxL9P|5e%-WH0^8;|u{8MPR@yUiz)6u&bv;aXtkC!r*+Y zjj=x*3ssQQA8ym@oBBiM(?W%!1=sE4HzrN^@kgHpRz4P&v$S39gmIs`TM#44s7R@hG@n) zR>$gTzB6P0Kz@9Oz~eRR*5W9NYp!qHdrD0u>ovD-=LM=`J%VSF2lt-WfMC|h~hjrzLz+_!XI}OsOP#NT1?qpZ+M}s}l?f#CW@l0d?rlh~5(b$~yS2W(}O!~hyPIV>yo-GN^X*|6( z=`U)$(4F*GHP*K2`G6tU6oGObUaGmCnsl8&SiHKtU7CR>tmc3i>;U$l_g}((4}f2Ro~R5EA1$AjT;5=AVLUF1 zab<@#_tm82?iimaR}=)}LsuEsFoPY@d>Z319NN-TW`v>GNJDu>zM*(b0dsv*@}=a% zZXo%YtVaySv5x$)f<3N->zFTtG&VZzmJec_Qj*>oa*e2c;_NB3qNuIdoEKhDYIBQ%8l8zaJ1};04x+VTz3^} zua(y0EF%U^$FLXqXAzv90zU)Oc+pj{Ji8k01?CxXqMADc%;j`dR8;6wcAKsqxuX2KB~V)9tEouR@X;>pN!;jOdI@a2 zm)g}d)xpBL(@>K$uEF{H_4!nH$lpJKaS;YmeIaWVBg&~_-PGZZ0o%oO-lF*6G=m+* zvspLI^+$hF5WO{)>gK=VRro1kFv{mNUh`--#;e`$2+H|stj*QZplgM;vu>u7f9M_{ n4xg~kUEmL3vwvFMRU7%1DU>kykWPpX)j`6>Z<%&AOnm+V76l-L literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_07.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_07.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..3324feda6b20b899418d88e431766d2382dc4dfc GIT binary patch literal 5425 zcmbVQ%a0UA9ByG%6jXc$P1I5`84g5wF9|9nYXiFAMiRZ!%+$_y?CGBL^zM=khdFTY zL3~F|P_mLeV2p~AD2X0OAkjn;O(c;-4j%Xeh$jzd`+Z$iPEU9B%tB>ne^vdc-&f!7 zQNQX39mjbbzm-cyMvfmlaqP1dN6$LW2(I|uk@laExpr9hYd5IQyq02#8lTg0`%*PN zqvdwahjvEGu^ZL+vX;qBdaUK4o7MPlEt6$xd{xVZThzFAtC9;^KDk_tPiwhtg&JSb za_lxWKBwix?P`2U%c(om__CJsE7f@Qol2h9a^fyEzMy5}ZZ+;gj7N1Z@uN`GW@McB zbuU=6Gxi&z9r4tovE#vGlFUVeX9YTB$zjJAtQvL$j!jFx#p4^tE_dr&) zH*n)iJUb6*!LUpE&8b90lj49EM=hDiSa=7b87W%Q3q?nIB9JpOsCA?id!s~(jcW=Z zUFTuUO>7I$a{}@!NQ05Cu>VS$k|Oqx;P)Nwvp>2K9W-L(I|-x(r^j`6 z;d$!)74NUmW=&+iec8YiX83n+DzfKZE4;&|!lQNcJ zU5d%rYxNU^SzYHj{5Q5ag+6({R*vXD2kjWg;;1<-MMJiesS-b~)_orD)9$}R8o$6W zYdS>DuumF(D(q9>r=T8dzYnt+`@Drd?Q=bAAEiu59WI+fwcax?MK#VwnEdWj4IA30$F2dnTdF))990LlDytu`PB zAKNh)4knSR!cJt8*DRpLqB9*&dUe^$U7O3f>k*Cb1avH*e+trY#2m%O7%t_m&3F*a z_$d9`!qFH5LmZGnG|OcAL?19wtGD_Qxz00~hkTvJ+{Yo$LK-}J8+C@|d-4_7@f3o@ zb-0yMAALcQ+0%#1&Z?^_ce8J6X8rHure*yl`^+*}V%cfSdLoiYbdoH&m2mCBe8hDU zxVWc$pW^{Tr~Pl5(k@la;Ht=5ZjkMJ+1^&t&74Htm3a%C42v7)*$Uk|Wz@z_8YaFM zlytL{Dd}D>I&0Ub*`9I*h8kvn>OPElEcVFzW8j4i6C))YPiY)yFxN-u|D5CB_@OS3 zaJSqH|BNXMju&McP5=&IeH0s0|Cb?sVXU2_7r>+a;es5$9rKf~dEom3^79-{46`Pz|%AsRk{g!LaPR24ft3vDe@16+@4T;%yE`uV)dxL&oS zzgGVi&t>tlbpv`TUWjY4`wL@_>*xM50i$70mJ=RlQVqA9#pIES8ch3yAJ${Zg1BG^ z*Wpo;`tvn<(I*$Pk5t6R?pE8wM%MONeWT{+k-w!#zU$O97RCq93;FmU$KB=MEM?7V z;=`PiwiM1u6dobIrN64IlRD zAYS{C@Qm_U4hwyfyj<%!YQP!g<*XRwenaQ$Q|~%Ev~KS8Z=%mLit*2X(8r~rJTP~k z#&ecjk;|X?`ZU1TfIu|kXc}8^4P|RX)?Z-=x4hU7rD$WdFKM~T6<_c8YOkNuV23t82Of&48%4(3no zKZdlyA1O8z$a0;BFh6nH>ICvr{6=Bwgi%!{WLyoX6P`7v^q#@imoShA!_{l(SDl57 zy$puUqnWveVbH#&n5n9(`644+cTf{Qv*} literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_08.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_08.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..5e20f5ccf23a0852e1dd648fcfc3f5a447efc0d0 GIT binary patch literal 14001 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 bKgFsnhU)4Q2AAu*_%%|2sK58~sq6h85!5ld literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_11.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_11.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..eb500a05e31379dbe33a246b05e126efb3553aac GIT binary patch literal 12405 zcmcIqTWlOx8Q!#}ggAhqr410^6dK~tn8dlXc>yVk8ycFFG;u?PDv{aUu|4wcj+vSD z+T7%aJQNyGprHgBXi!TV)Tp#1q7)E`R3sub5(!kI0v>qafrmcikq5-`edn@1vwMzb z?TDjn{&Qw$=Y0O}|9@sfsZ@FhpP`#p4}AUT;Q5VrKKF&{SDriiwZFc8t+X~SJuXfR z4OI5t^3zpAxJ!?dnyz1^CYLpRZWU8~kZ?^N`Xru*Ne*8kG<=)2YW-YB`aZQDx?RyTnhxKg@6&Y0I<>x}>8|&y^<_=RKA_fb zXgc#jwZ5+DiS=r|?n8=R&~(>_)%udAM?a$0C86kors7VuKC9`jkE-=mO&|T3TK`ki z>RoF6cTH;>)cP$=vyZFw=8cM8&~$8At*>ZW-K5sHeL~R_nhxEq)@L*w-mKQ=G~GI) z?+5vO)ToL8pRAdbo3*e}31>$taeXFkgpEwZ6C#@mMLn*DHPPa|vtcERlh4hBNsvWx zBdC>1t4eE1NAavD@VU@#x1R;Q2wLBg;{SGg71pKe?Y34Mu6oAfxbkz{dkoZpNnWZ( z2{y;3)o?NiLy;xT&;~*r+>1Ca;aT4XeI1m~z6J^+hgN&D%u(L^67D?<>cDZ|T$Y6O zP*iGhWx5rmp<+r085tIc*&vC6a!q~d21~3o2Vy;q{mz3vud)7V8CYM&y~o{H4+L{j zy;&DgBh7*a{)KTfRd~~xFs$0FlQR6I#`7yY^9<&%f#zh0YisfG4I{%7xWU0YgQrC` znrx<-=&;Stqr34eqgPL1ei4|s&vJQm+Jh+!8Wu~$M4X7UnM?$gP>hICv2*KIQ5VBI z#a2uv!Z6!pag8#hDG}dU;Q9sV`4#YtGF-rK9XvY{CRtPoYKmX8A=EC)=DRS^%@D)y z@th|?|JaS;KkfD)uKNc0Neqlf4h*}?XQ00Jm_z_ap78#KD~(FoWgw$T!+FMT+nQf2@V6CQm7Q>I3db$%a)qL#?VM? z=kWYm>b*uVKh0V+-E!^y=ce1TEfF`sY47K#PVA_k2?Mb&^kV5 zyorgGHsFr@p!~=ukMGRuP*ACaHSN4DD8#|=L>%;;KLn-ktc!GH8>mc0{?TshP>*kW zM}Z#Y>|c5yF+93;q#iY>TyeL8qInc z238KLFu9p#mRcf%?hKZU9#dvN04B=p!Dc;7qDm*;>GTla_72L7_UX}`1B-!QNi4|3 zC|sfqL+bD$Jjdt`?N#cIj{j13aIHvpD5E*t=dktGqKtA|%e|TIa_=knJ^!A+fSR}^ z_wFP2p#6Akc}!&+Ooci|ya#*{8DqQ!hc?6%kyvQU^ry7tZ-V|A6hw{zGjUL3Lmoa@ zx@v8V=Wy?vL4ADaHwPmhJbNDugK2>PB=bIdck1D4YwvGiP8k?IlzZb^(cit49_n1C z)yW-tQy9sEBN_+o;rp0V52rKyhk>OW#OfR5KY75I;Lt;Psgt&dAWadFgDk8fiO8nx zOrkXvRi=sx8Yhp zyra)|$k|}2A|TB|^};VTBM6(NC1h=-w%z7TY&Bn1FT47Qig*HJlTue&cS3L2T==6S3L(bWT>+`>X#8 z>$FAZOZT8Ev=Omg7HD<1(GlN08XxO4)*`IaR^n$p`1Zz09X_my_DPZj@M-fbk)#E7 z0K35f3-Rr=@I7ncV=ZU$C*4-Vx4py2)}!lVu)buH-5tx-bKl$XsBT@?=HFI6sNL3W zyWUN4#n{*}%pErNaGoKSYUOYY0*S(rt37N#)QA4ihri^;(dpa7O~#uWZr@0mu_hz$ zPGa9*gFX#Pek|9Id;Elzdv|n5==^(0U3y64qMx9?(oYbVtxLr28%CE-;0A|G7vrG{ zE)F}igo|fT&+Y{!uUIcV19}lO=O1vb$fq(dqir}ajWb_BmJ?Sh%_O0ob2Y<^)tNy! z-7Imk^-7#)uordd1yK4}JAW^#r0JVNIZiY5BrEuV*VQFO6=v?tFRPl5^%Oo~bjm18d|Zpci#yFhp5#kN(8Ni^EwMR3VL&EjJnWhEsItAB@r2 zxySD45X-F^3wiNf%$aj;z=s1%IoQ`=jz^t*71uc*-EptHhq^>wcw(Jok1MY`jNg$5 zvVn-)7Q z9k1^bo#f9b_9Q;$){M_4w`RU!;1tP@{PFmEQ$tEb^4!QHr-wC;T<>R@_Dvif9WwQi zWzqfDM?8u)I&=>69v$k#)~VkM_^rd%JHCf!q9TZrZWd9GIEcY}PK57@^qBt7BPSD= zk$XXR!Z~k_#ba*bpq!XvGA?)LSVeU#ad`CE=!@^%Q{b=)l_R>?^5h}cQkVL?MdPDB zGY6zT=ln9R74eC(^5Bzw)Wue^?0_{=9P5c;XRd08Pl<28h3{p9Z`+pb$ZSSUt+*Q3 zeS`jhal_+}I_GLE`6I`9BVWs){A_=;lA6)OA6Z}A2!9^X_$a>{;g3hpyJ}i@n5Df@ zM~t3#&eJrbq@4P&`DN!DZaC1J!Or=BH{a+Z=2LGx^=k1saT({=Ei1TzKa8)R(tP5x z*_&C(`5yhYCpTR@i!BFuVFUT;qH^WH5R1@Qn43~RWj_>iGv35x2-kgswnf|b=#F&V zDlwc$;ySw7)hMoqXh~Q|h@*_>EU7#AzQ_krcRV&eW_8qisweLMS-rn) z{>#nL$MwEf@mt0O_Fk8JezRcv+6{9^nkSOK7utDrm-b@`!j(0q>2RBYS!YZpVQA$SbqA-Al;nb|1chy6y3i zNAz27Vg}u$Mi%9ctGWLj`ftzq$Zg6=BBenM+TR(5$F@veV;x!65wjZ^-mRRdHRpPK z&Sx~9oNejY$zIW!; literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_12.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_12.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..5fe1d6a41c0581020c3a369a8e5c012047bcc02e GIT binary patch literal 13258 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 q0MQ*4?g&SRg~-Z^*Lwe^vrbn z40@_2|2aK9eZKwg|9?8$EXz8G&(K91*FSXV;A@M{-hZDzH}b^a{&CqOkFI;*#)r3T zJiGou>&jcLci=8LPD(nlPE7tJ>9LE%Ixp`%CuwQD{K3V7J}c?W2C;rq(v$BL>*o+7lx=pNyt`hW| zq(`n6>nro}x}^2(Vtx5Ff}WA|wrj=ubxDuy5bLcw1#L+>ah+H{FKIL))>}peJuB(m z1+jih(i3B1ogWwUc}Xi1@;*sVU^%l|3WIX!)GJ=mc4{TN!V7*-_KJ>gyS`g>YfF2oj6sQ@deYMC1@W?IMhhumvPCaObcFC64VUeLM=E9F!iXCZ@8{~dl0#HVfXd~uAD{FA+FPS_PwAlfL8J0 zpnLe|t7~gCNAmDKe9quH=Y`3M_#TDp46d2sns>a~vg7+Bf@|(qo8F4!L&|orY&Qrx z@2o(~WiXcP-7eTL z(o5p|57tBRy^ufXudpUh$97?Yq41gWZr&+*LDi+Bku2=TymeO2`V{t2y!#&J-Mo7Y z;5OlU+8{Rin$w_$a`lQ~u+$8pX(eaXuEUmVkq1@uY9;rGou8ea+qYda^Xn5FCFWbO z7crm2zE6Pu0(Ad~@Q~!&DXi&-IH#Te8f(rAlLgEKKj|aPefB~fR~k@$b7a{E`S>*MGvni&(|~dK{?5JL@^TQC>_+4)c|O3|MYx)B z5Ux%ICD+DPzcr~0zTqhTlfEN}Qb@`6>$ae}G zDV?PJsFQm9yZo)SwavKRBj4S-ac4)q=DeH@N)Ruc^g<;#?D({s4mV@H>?q_7U3iBr zrV@&mk6}(;D!f=)=dj)YO1!l1cH9}8B;44(sgEsuXD0gtN4%2o*z<0wS&V)6T-%WH z2j=H=kn}-!;@QObIQF5ue-C;P9}dPwjx7BgEN0(XZ$zQ%RAoltyDP5W>$~@2U*h85 z&wN0S*@O6QbN@3{aYCm^5i>>e7*m+zFk&ZyVSnQxFLz7K^gmBxPX9yOVV(vOk1X36 zOy23SdMpmsjRa$fk>!Ds_oJ9o-YO1yLC?43%>3d^w)#w z+-*U*FiNW^`a!c~2X!Dtl#Wo`9ICmEq{@Le!`2tEhr-yxoEUF!R^8Am#y)2B&1{`x z9(ESLHRB`emj2dj=PO>hVmrlR6V|?}CEguXNE8s*lextWp!^%|0gk6YACr8h4`&<) z>7T2K(9_P<=;zJ;hJ&Kig70ZGlGPx2Ni+{8m^IUA!t9jLC)egJ; zWDn2SCL=c1R;oTwz7dz>AzNu`nV>39G_S3++9lD8=&fLAAD_c+#Fti=5=<8F2D1-% zv?U}DaE!~o(|{V<`KZ!F?ShIX2&=krU~gjlBq%X5_iBOaei6%fWbtsY`t%m|Z_sc+ zO+Vst9)(V=QTN0pUC6|D1rR76K7zU4&tc5t$l{^WT|*z!440jvOAeOPV_qKn5*MFM zf6CnOUeH1FEOTEh?Unfb?CVEI?aG|fDfAllc${!gBn^c6cdf+Ce46?f*YlWj zU}>EP-2h4+KZpNE8jyIJ$1 zSVs6N(>GIg<~~qUrk+|UXYG-AsMm{k2!mI>4(d#IZ-%`PUN20JVkUHHuv%%+4MViq z?P#^`+IdK9gnifT{liAgv#TXW#@p{=u4<*1u*NbTs^_8BI#qHr=h>`x#H*Fr;`f4H z8L}>;49PP-lW}9v-XLXYor%TlH!QE(`Kg=cZs|lfyHH3v zUi#geB=+Or&C{6kOy^e75^n3E?swa^vU?Zq?AVGqU-!YEwF~r)Ay4*V<2jh(tLm{T z-=_KqJoBOLQfF1qL$+AkG1uJR_Vi>DhC)50O%jvtZ&iMU%kjv{lj&Q`Wjz}pcWKtx z>xGa}VHitZ2Txgl8t90fvVIOUP1f-r(dQr95c3-I9A;05<3_huT(!$#(5&xBns|zP zjQ!&{_99k2hhbj*BK8M~hpIc(TBpQHe`H<fCiL2Z9wYdCp2Jl~ zgheVo(Pq#yg@=F3 zX*|cw*UmX%(e>YM2Zflgk(f_n-xlUs{S$sqf2a3Pn7^B2Ht@#|&VFNWJl5llDR&O? znV5e9N=%d`YcyhGUq$&CEPDp;C7;dnr9M50ktlu#>Ox9N{%*!z#L9f>DbVho4=!h( zr4p-o{nn@F)5+!&p^f+l5a|I|D3fK`zl^Oj5&F!*F@|eY{GTo(|b{c$uZn1bcDXq{H!Sbj8OQQ zu9xxRy@%W9fIKVuKCbbs=w8qlK~-*?6<>(cT;@VQV~uQx#IqyvLYK^Q*3H18WX_zB zGFSebyyMXM$Xt!r3%hT?Oz@F1KY?pze(J9H#ZU-6e&J-L>m?}a;T?DuG3mL?!ieym zDlg26d$bet7&Dc5G)-Jzkhu74RadBUX?zurELoCQE!=6wt3JL)yjwXo(We1QjF;ir z#J}qdN_*`O&Wrdn-1J)eO=hFt`DgBjs3^2$6QtHPd_9FlEcp9e)sM?h8GKu}> zegb{55na<^j8P?_Y?P~d4~RP3or@~}McJnf@{l%o8q`eR7rm;>qn#zU?A2;)AqS!D zqGB|98I68p5_^%C%%fP-GLK@MdIc0D9x7g`wN8ndzRkQ2627g-a=Vr&h`RVWY<&sO zCboVxn!>~$W7<&sG>@SR-q&J&YTa(|RQ}J49(B_G=?9>C-lXtl>EU2LcTT-+ z&vs*+cIu!g&moDapU=ft@yNn7SPY#G4x<5jp*J;&YX&=$SA6z&Kv}1$x=6(Wlh|%9 z%RNCEy=>r$da|LOGvu5#E%8y7^ncy?5Pc0}JpBvv%66~4>s-nl-#qdm+9}TvancgH zOn+rcS?T)!9l7@Z?;t+<7UENOs(jvNTu&RyPWiW)`4-g^5YwE;qtE|)%C+k(=Bktt&&lK~^le{e;(z}OqCDsF literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_14.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_14.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..704b366dce7e9c29d2787cd0d37ce3582c640056 GIT binary patch literal 7729 zcmb_hU2GIp6dthtf{K5L2r~X9pj4nO1$;0-QL8c4P{9`-9CoMOiL*O(X134-6CN-@ zMdbla#RgYHl$gq25P=v)5)CoY@IZXR#77@^=$kw!>-WvQm(K3qyFV>AY`=SEXXbvK zbM86ko?U2J)-rtN%xr6WF7W-6vlN#f4zF~%#{3UVMOd+@3 zAaG1#SDTP8O5Am$kk{TM@Uq11Hw*c(TLhk$*n6vxFG<{Sn~>XP3EU@f!E7O)m6*F- z$P*Gr?+|kDodPdO+%iYV7bNbvOUSeD7Fd$F1k@di9M`!X&huXB9Mnqe)rsIrgo87r5|r-5Gs zU$pb>9l-zav8-}gss-QHj`wis2=3bl)N}36I6mm)U8i8L+uXZx-`~kQJcp>403C1D;+P~z*XGej0UOhRdP;h-6n@oOjGZ{L9BNacpRwg`Y-0VWXWy7Y0V(V!?`(!-oT6GURqvVg)Munf;1;AXK}f*7G&0Aus-)m0x{@IsK|a zFK5f;MtV7hXUx2$zbDkNRntyB=~dlnuOhFfQoKHtyy!bWOMPv>TrM+ADW5ux>zsG2 z!32Z)BCj!^-d=ry7rD0kX3-nQhAhN(*7ajY@BV3Pia4dBcjJ&^!JK1u7n+CZvCfCm& zQ7#DMX(bTqnW>drnLo||r;5V>?)>|v_xrAr+dSiTS&c>Qh znQ&zJM2^fM$ARe_(rj%&+fFryJS^8w=a6c9%F+;b)(+Z}>oZ5|btLobrp>k&hANj# zM(Ne*C@t*Pi+52cC-B~nfXw+Su0XV`f6kRz_Nh3na{ua1+=!uk%p9lto7$Hqo3ZpJ zKgQ|9K*njsuN9l^!n1mv^(RG%gAF#V=xSgIC}ZTyjQ46JBhwlOCD*P z_Ta?BLlnMBhCE6tu>zG%&H9oxWrVz!b;2x4w_$lIZ0SjP8i(r- z;T`(;kzP^w4cif1^CF&Gm#}KRuA;A*Yia#?cbcVivNsnw(& z`;l|{JpGjO?o=<0G1q)XYpQ-V+LvpQAJ1st0H<=HW;hU{R# z&iFwwn{Kx=rp%XI*mwFA^QrWm7*p!h|4sD->Xl7)-8XSg-nbsaDRQr8-<$HZ?w^Xt!~q&v}xg&Ig<2NE?{-sjrJ$ SRA<7Ky>6vX)@@VmH~tUC;AuVp literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_15.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_15.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..f2975dbf74af6b6366a92be2c543b12c75ec4826 GIT binary patch literal 12193 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_19.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_19.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..fc3743c475e7d98d5f3a59848e02a68b71956e8f GIT binary patch literal 5401 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_21.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_21.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..dfdf41a2f4b782ebf93bbc5ba6beace5a1962205 GIT binary patch literal 21358 zcmbtcU634CbslU1VpkA>1ufV{mW;B_{?uDOD;(T$G%+C|9DSoGL%~!4H1$gDNrE zeBZtIY~R~I>R#zq?Vdh8(|t~#d;ah3xvkM?Jcz&bSFc;M<{$oG{$IvV{Pdj{p7_ee zFa6*T|LeyO?b-Vu;eY?n(wX1?`8V$T*7R0zhq$V*ED|7zz5cAeC^vcTr}{aflKeu=QmxW z;Zp`qZZNokJKw4C7Y)4YT^c`c;N8Ej@s|y3U#sy82DaX<@z)Jpc#pE!S)OF#~V$G=9dwTRx!ia|Yh^L5;s?VDcf2ufIXV#|+&0 zVU0g);K7e*{DOgZebnFv&W&jNqJfJWHNNI!8lE)J`?$u>7`SDV#?Kpg*Qmx{HgNG1 z8ee~-hD!$S->mUh4V=44<1ZQ5x>@6|8F>FEHGb_D4VMhu{2Lm7*1*=MH2#W#_x`5F zH{7D(2?N*tmc~ySxaqewe#XE}pVs(k1Gn6&@#hUZ_!*7AX5iv&8sG3)4VMhux>e&( z8MuE;UwhjK&FrW%mev$*~Q;4c984mv>`HkaQ3yz%Pt z@>>Z@25J8g*O2d&_V#`fcKjr0c|jaUu@`o|emL9lM>l(Z;%(XNwSw6=2>SS-8MXp& z=K0-OS2CJEsyq2R4H{TyDf>GJ4#*$%`$@o@enYA1%%Q8_P?fINj-sCMMJF^e7lgBO$tX-SP#ZEDdBY3+(D!hx^c%+d)g7w$SrO5My7+rw^>l~cr&i0 zJkH@h-v<0AK$$O@rz&}HzV35)I22-v<}p7|pJvc*d-n{WRmstEpUiMcKAyq79tQkJ zK;pJ;Ukki!h;AqNLMn?Xtt`F3KOA<0e&3n^e2;VRdw`^K9`tBaq$kfWb5QmCd4D$< z_4^*8jyLFriPsLgv&kGS%uhN|zc&}efj8&}EsGu64pRd1V(UX|+l?Ktv^<3K942kl zNanxj!vfByG8k_UR7~ndVL$K!6DcgxN)B6b4QVqj{TZMgmw>7v`XIOsMgAGuQM(0S z7S9HW*MtU4>o{x?=NyPllJ=kDrbV=?=74s<7?D2rfw8G6M!~M%_9Xt$ha~Z!<88)# zbfONt{3b6BW)L-*MI@1DU1f2pb>%MHpE5cHT3<%6{tlq{f1GZd1YRX0`hVAVjIVgI zy1|IL!n8l}x!+#}%^eF!x zU`p=*GNHhmRw>glCu1W`mSv>*Jg)l_z+VCiO`vMLO%4j6JmVrhOKI*NXvgFak_dSl zq&(|`fo9ZA;;3ya9_M-#*OCWY&e^%H${F)>oyL9RsQu1#I6DZFFmOe$;skS3;eoN) zjuSxD5PvDS4JiluN!LH@3HyB-Ue9kHri+LMU8K+M^A9yxvXFL}Z~8LsTV;3o7&Wzh z?9i^g6Us-ZOt~^fu{A(GE)}Ed==%e>M_w0JpV3e^SZ0%_GmydKfIk6rbfZQ-L*MD< zq+?U#V+R?c7_|CFyUAQYC1uHFO%CbbYUnd3{U(l?lV;=R5YCqk>ILb$HaW=@ZzlHh zg#l@@WaTr{CjS_aHo01w^aCewZ8{HAPJY>iI)>dog9U;FLP+WcRZ={5`?w_uT|3=j z_@b`;2**zVI&*Pxd3hbqmksexZhVl~m8+eOU8;7XKcI}5OI%6qJpsy-O z*X>C*q$bl+r%k+-rT^Wf6m7OM(JRb;x_u_-ftikwOJLEM~lC4T-N zj!CbM?>>$1rE(sxl{0xG-C!2cbw1EJ9<_GkNIwX?y-^Z4rI6BzJ3)goVjlPRfZqmm z?APdo#KI@>Igf9;2?rQrzpl+pwWA)|Ej8OP)R8TQ58BLkaZH;*9e^H=?!i#+Shtl8 z(Gj=rG1gAPWPsj+<;g~@q#Wnr@BD7!2!?aGAA~3u_B|d2WZy&PP-6aY88bLfe#o=S z&$v#3R_SOdpPjg0mLF%HYWP|5R=EMK4^xelTKK z>8^BNq+tg?-yg&Q!%jgSMtPGL+plMNd1C<&a*Dh#4?6*v+S3$zhi!N*=qa?M6R?MA zs|NHU8T5;*cU>FFoKUW;N9a$<=XpQ?HL7y+e15o+qwU?dLwQrg!<3P&_Yv0!LM>&)dWu@KAArsG+-~ z^FR<{)B06frNY(&I3g=2YnOUN&-IT z;?p2NKIpqx%S*g}&eDUbc+cEy5!a^rxi^YCXdfIyyDwJF|7MI1%VvB&*$b6lF0rW zI2PIe8}1EMjVjrb57#&7SxEgtFOFJ+CX2Q1j9E)yT~Oj2D4z*XCSTNd_Bq8j*g8>V zpVSGrc2qTjs+hy+fm-!Z&85uTyw}h!@(tpTs&s)eacLXh0Lw%&9HGIM>5gcde78lL zGG$*Y>m#b3n?7+7*QT~mTn~)EE<(SZi`{&-tS!hIitGiC-ZB|ti?8Ch&vn9~^DPYlhR-N3>^&f})xKrI1pE9(I zd>1}aqlz|tSAuV*^2yYSZW}}CiI4B|na|_e2LLa(Ry^*|JrL;50a8h>j-fmjRYk+G zB&H2DCJislcWE>1bCWkard8Q(-hc0mV5(@gmU}P8E&3Co z^54Y_R`t~ax=o}sN7B`@jL#Uxd}tn+%ZSg&=KEF8Prv2PMQS6xa3N@OUx3%b5}h|6 z21hn|J`ztj6`L8#6^1R{6pNAyiZqG~-VpVR3LIdyk)(B@?Sgxe>B zATWfFI`PrXEf4IO@>aJ#_X#5p^6?!U>wcYLV}*~Zyo&nb=5B(9&UWf&@aldMGjRu!TE6MZ(l$n*@DN}d*|ox*fn)pcN=?^&zgyaQq3+yJPu%=rLN*Yp96>gCbbRDkU2hKS z69`agmF~^PVRqk*XZW)72dUGAFUG5~A+dWAUr6Jm)alZ*GbI|5tRrD7nX^=vxs}Wh zWh41R)`qHlNIrkidmF5$M;g@x+J~a7=#G?*7DrlVK8WX`&M<#qjAs52`z^I0sjgh| zeno7Fi(^<8fs+}iiohYSboS$hzFn_o;>mP%Be#JhA#E`>o~T1H{!Fa;ymdt z;M!C!^aX0)WTF-=gKiMdW_!KEjrSYc?3es0j(-6t&n)#4=dEne#`5t(b741`y%}r_ zikxj?%EsA?q0H?()b>3uT&P|HBYoG#O^zeY2QP}Jv8R_wD1w(>Q8(F_YvaQ!>q12~ zE^{$dCJdaXJZR$?Ux>XgqKvDLUewKx;J%a-?=AfjTTYD{v5UFJaoi)-k)24juxBf{ zXMpa+QN0JUR=WeZMS&&CXS`oX#2ma`J(=~ zyht9H+rM@6Qv0{oS-dP6UL+p`$|vN;l{Y(gSFOQ;+VD8hw;ZD0->)e8zLXq4`ucS#A+S9$}K9t z$T&<~vk%+;VcxB8q6Gj8H~*hM_JjJ_>xN#;xZP*#s5Zs4oAK{?S6xqS;0FHl{~ z_;~X~78%@drQ~u0t|xuFz7QLe`Jo+_4brELxiNYrRw0pZHhGCtCyQ{P*H=l^*BwDYgDo z(hMk0?kFpX$LEud;t#X#oEZoQqxz@oKFe@2O~blsBlIDf3S9|yG8=M+Qu zC-FdV8&ZGralq6oYL@&s_K&V?&`});EP8h^z3fj|rmyt*v$!Amxzc*Y?YA8W(DJ+z zRZ_ft$neIT^9+s|cO_S-t4qAb^@*xxsa)T<#?ZFwTCp?k5#Xq@bLz3HJ6D$L?f^~E z9a-D8ePf*(j{5A%W5xH_d8Mr;Dn8M-khU!kp^ekE_C@67k=jyGK3Qc;%+o|3S7J+x zxKBaclKlv!9W?qo)~V!yJ$&{*xCel^y{64Rf7uXwcH_Y$-dwKUVMZS(`(7CjSif?A zmpv~}1Fz#x+`P%E%W5Q)l*8vho6l|6Kf(ufhoep((ak4UatLd?O!dp<7?bot7CVRzYLvje$j`do)bcu?(g`|A| zHzjS_vE+KLPp$5~}M~gNWQFrZi1IhJ-7kTz7ogpu$@a5Eg zQ(m0jGyA!#ER`s)FXG;m*AnPF4Op}nQ0hi}oEu`_u6rJ5GW)7iAJPB1 z_NAo;M_2K}yu*%)2fu?SrCf^YM+)I2XjRn=jLmM%0DeO5FTyY5*z30=`gaU4pM%UR zT#6UTVVLJFfj09z>AlpA)#POn*QR<@x);oE_vUhY!RTWt4|^?FbXn&r)pcV&uY=qR zeq)3#*?D=~E~dc)ZA@BJ=X8fDjUhyLWMnz7D~5Et{3kGJ?bZIq-edE z{8af`^0J8Ur8Yud^mahCvOiP$6I?3pZNjx;BkX}muJj!43seos6$G~-=Yl-AzH~A? z9JIr^DB=$Ub$ZxOir2{L>`UI!7*>61@?rOQY+J3MX#iuaC6uC?}@B2^zB}TEt3~tuYMPR n`r!Hmhdw-YKewm(IzyK};Xxd;A0T^w#3!u7`LaPhq%Zn^zVaCt literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_22.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_22.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..96a240cd69a73c057e049e9c44cb2454366f526e GIT binary patch literal 22238 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 pp=pHJX^H8bx~A3&6cfZtTVcaN|1(H-#SjI;d1p zP^hT4sufD{;72_O3VIMP`a?Xg&zqSkvvjt&FHD{!lgaz!dEdNq#PhsEc&bB{73S?5 zo*b!Eydg{!Y&q+*Z2oJ8?cwyr$z3U~XV|W!la5z19Nn9a?*gvyKu}HX;I^v->?A7pi-UB@A-EQ|e z@H22?5e@7w9!z)5aw2u55%K54Yov0%0n zixUNwp403o_9vbz@U;Pa1)NwM3jy6M#2&+ZKO>%Ruyz$#%5z*M%_H*N8n4~#3ECt&JM1Jf9M`707x3VQ|C(plt zHDhKqGclB(m(Ut1+mn^4#uRVjybP|_F?i-Uqk;WzUcScKrM{fgJL3XguTRa+vZ?WN zJ)w57rmIOjHnGaIr)kThR78fWEp@Ox{#38%3`^i~A6ni6s+ktr!QxMK zZHF^Zyi-Q*G<4-_MhG^I8pO`@(sJ6;T_#>sKOO@=0Hc}K*aDE^PeyB~Pug!}^XE^a z1Ix7y@vf9tA)HiS4qzSm`;BieKycb)P#vhg5SLPab**A;B$Zcp0n(CN*8wUCp9_m= zPJF2R6Q6h3^C9pH@D}hF5a2BP739Mnr1S5{r?>VtT&8VBsUQyaAwI`}IiIKK6Q4or zFXeh0-l0>$6*pt1)_aOWbU#h8}fK*cl%_YkFf5*&upa1{> literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_25.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_25.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..67b16abd65a3f7adbf204f25e022a5f032344ca5 GIT binary patch literal 24082 zcmbtcZIB$rd0u1L=0mozEd#cR8L+@7!&%ZE0>#0g(;Y&x?sVezkQ7W}&F#+JjoIB< z&(7+@;m0MVA4*Ir#IYS=E3N|+zO2GvQ!!5D6qTYJ%0*Ekpi%yHO)k^@(&d^i8+z## zx_{Qt$@RMbnxTh3tov^nntVj}Fa4;d&l`FOUz_cBhCcK$-QVzWP0tv*{S&(XTSMy` zbl>}=rsoWuyh`_9HT2Ncx_`mYhYV*od`iFmlA*glt^4m7ntVq0N3PZMyrGAFPxs$8 zbosNof9-Xeo;7s4r~9uMy8n9Jf6LJN4Z6SabDBPF=+s7YpP?sj)cp-NY5J0(`#-Py z?--hl=zeLFrVkss@eAg2hECpWK4<93TXcV9RMT^YPJL1L&l~!{X5BAs(e#v|Tej-{ z%Z5Hs*8O)4JvpZP8*kP0MMI~y>Hb@WCb#MS`r9=2^j7Yu!Px9)p;G(BtRj<4wcn}+V*Yx;)PrgZ;pLzky@f5Sda z<L6M)zMcbZ)=ym+sZ{5kuF{n$H=!qoVug4Lvlc`xgv7ai8vw9MJTfp}P<2{@aGO z4(a|Wko|E~4chInx#)$>g(zmrXS

M9D=zZtq!ZUfy^|zC3{C}p(g>Q#1elj8 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_27.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_27.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..311b21fc666c5fa7cab5400d4342fcb0a3e6ab74 GIT binary patch literal 1832 zcmbtVziSjh6y79fW1&G}VdY?B4ia#47tu}&gMwTFg8jNXxf|G>Ic8@QO)m(h2&fR` zzz|Xd3>qP*g~b&X7B+%K3Jd=TOJV)q{>bi~ce3Dv*>7g&?YwWkH*a>vvaHi+(-XDY zC2O*8O>NaCFfQ9sHdx6ferMR5OebzkrT8nuC$)5Z?No|CGd#qwrR2P;l=g&l3}?P_ z9V3)vvmK?yhLXnd**vrBH+{o(>H-H7c^odH-C>UFM%r;7)n`M_SxaFNyT07zI$6i@ z5o6L?vWUVy+VeP$cY#MhkGJuRW1`c4y%t{p(pEOn-s3&>?Z!gl^A!Cz=xqb5a=tr; zX_*~yqd3IvAY1<{a1=MVj5OkQh;L|(s@(2DZQmDV$z2smh+OEnFha)}#Gp7m#Cr++ z1Z+hC*TRi4Ol%s@zjSOi;2Focjy?EPb>q|p&Cv!r~lU~S^K2W~HbpEF&) z0kaaaNW*cK=lg%_XIRZ5^Me&coT-$FGu6)?uv|Z7UGuzugx_%e&>7vrw^emrQp$9- zkcK%AMab-79qFDTPQ-=Q{SFM!a>Fa@3_ZqJuHymbt8yypCX61O+*Y0lxD0V`6%sZE zi-$Bkk2u748w6hgNuz(&&IimV8aA8BmWc0L^hp1zd~X-m=(_N5IMpf(ouG>Y%GQ*R z$}Ov!*3dH6C!RZqwF~S6b6qh^>|EX%fq4xbW3DRCJCb=qb2qvC!SM=93n;`dLAH|% ze-0j@aiq)Hs#XCr9nNk!+H@|5%;nN(exiQJny5mLEe<4sa&QrxXm39D^cdo9miCs_ aUY~qO_h)GDFi-vKSLf_SJH5Z?9RC4pWLZ@J literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_28.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_28.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..76b0a414a0dae1c13b645a1a472952b58680b80b GIT binary patch literal 1112 zcmbu8ze^lJ6vsznLP!y=uo5A!%N=;&-NnLAiv)ylrqgzqo!l;*Gcr3uw6YYm5MrSu zML+}#A*TpxBbF8xDem9Mzu@|PySKWE2S@T?_WS0?&VJ@QZ%2g?uh2?EBQqtj{#yJJ zBj`SgZm+j7lqKWCnV$D_@kQ4E18G`QRo1#7GSX{mTP1yD4V6RdqBU#0Y*Ur$l{rH} zR=QY|RBFXZwOYAHr`l6ywvm~c^#FPbg)ew!%$0zsUXii3R___Vi{8bRzYR z>x}sh!Sw@rUEt%n{63LB8_f3`@BDWSK6bHB1!m0r^XE0VkGxoeMNjh@JOdx+#TsPh EJ8Pt^NUh4^Abx^71E0`Qxr-n3sRl) zQ&JU55|eUL{R>iy5=%1k^AdA_YMB_KfS7^7H?cq=C9x!N3Xpx||NsA8K>7lZ22x-E zatAKZ4U||1R9gU~1B&vqQj|3aJ%99?-`Mxj=swAl#UfnN*ZmRO#&O84{x4 m>1c`)I3RcOA-S^&=;#?hJ3E15myq1~1LPST02DUsfocI$ZgNHd literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_30.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_30.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..3f8fad213c4f9993083ee57e2e1cc27a9920e911 GIT binary patch literal 1272 zcmb`Hze)o^5XLW>LPQ~jik+)iXeo%K6as>crnKE8YqGF+dtCN3icg>xA_@TueFFc0 z4`5-D!b0!`e3ST1vP&-Jj#xOb%N<}5WOWYpaWlP-G#-wZ)kixT$Q(7-#}*z9bXH{0WL)W>&P+qFh}R@n zBU+bn$Fc7bzyFukjja)})Kk*ocv&-4Ku(sq8KQTsEUPAt1T!b0DCrskUQuF5VsDO? zkn5P2h(Dn59G>P0u4m)wOLKIF%#!v|*xp;nj-_cZjp9bE#tq+59HsvC7f3V1a(tSn mH_QJ@@c*iL(BH%yNBTIanwawmW*aeS#@(TB!?+oyZ^I8iK0e_9 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_31.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_31.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..1a289ce4fd606abed67d1ac74b852e357fae8ba1 GIT binary patch literal 1312 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 Hk@5WiVva0v literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableB_en_42.bufrtbl b/rbufr/tables/master/BUFR_TableB_en_42.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..fa2f762ebc2db839494fb20b4ee35b1e142bd6fc GIT binary patch literal 2996 zcmb_eO>5Lp6is!kRjXF%!i9_H59mVu1zHh7X_X3Y`zCXfJerT;CDT%H(M1=cBDzr# z7lRaWA$IB)E?kIo;YviswLie$U_3V;(@dK<1JeuXc`uXXou2zSX&An!I39y26rX6lh`L3YW-r#gbek z(Udw;kqZ3TCTYnF=^94Om^7H;LtJZd9B%+$17}(uX=TRz+x+t1n02bMJNRK8@3evC z9OY?Y24q>vRG=&ZOGFNdhSFrFM8w6Qr4@lNPNlGiV#4tdzMXUIU|r%W+QGz5+uDf(6+eQnr&&4x3=Bp>LUztRsg+&hZV_%+bTemW7RxxwVugbHu+9 zH-Y6k?$m|DiO>9r_inJ8rA@i-m=B+ug%(yjt-mhyGsF7s2#(El8OC=v@ttyArX4aD z^0>cTREhnAb<%HN6#appLqq|3w-jMZWBe#)K&mDCk$JYki*tZuX~7oW)Y&+h zF;W?ZVYG&1GlwfgiAQ`7@5aG2kYYOu{*g` g6014K0pgU$W9G-Xv<~E4D&~3v_c-6GEU$t80F|Y4Q2+n{ literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_00.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_00.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..fef828578d8577b2d6422f8c1e0886bb881d0041 GIT binary patch literal 1104 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_02.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_02.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..b512e79a13440f3b038840570ffb4a16c940f640 GIT binary patch literal 17429 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 F{{RUE5extT literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_03.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_03.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..476b196f7e9028d154946c1190f9aa39203176b7 GIT binary patch literal 7025 zcmdT}&u+ z`}@c1cBRyITmwCQeHXTUwNH)vhm;!WQGI7rU+)NZQqZ@~-pn=d2R-(Ftk>cVeHITr zVDUl&&p&AI=hs_&c7w%tHd=gllf_5+8~a-t_YYaT(7^W|w)gi2EFO5o;yVpI_o%&} zFIaqb(Bj=&EnaBgYmeFc&xb6&`nbhP_$sMmxE)tJF^(#dxJU8B&tqJtHmMh6d{Mn- zViSac7fiVmj;AAYvTpnd6X}VdRttO`2l|u=W4jsD{fg^PMY`g|PU&seujr_1oKWty z6Kh9TjXPD1wP#KlPtUk%e^Ppa`Q^6;uf;tLHUKFI8|A-=WE*>HPw0 zSo%-EV*&}izv34Oy#>(RDZQmJ=d=lR%{b7Ysfo1fp;;n#n$Sm}B+JJqSfkvp;JS%9 zP%a1)7!p2ylcz=%U1%J9(9-PK(}DD@rNO+WLlZ^d!JSP0y zz+A}88L%Zle!j-+raVJ_sFC%m7yPW1O+A5c(Z(5W(zLJErurogq;;V{KW&Q|DagDl z+Bs~3=^!?K>^fdKZEj^&LCDGYlMU)k$AqxEz5zvN7RZtdX^kF;K6V<^r|^ zsLO9KyDLu(s(ru(Ma!pb(iWC zt+|WuZp~fYiYUxtHfyy8mgVQIJ)mtI^k;4KJ*<&`#*ZtQ1LXp?1jzp^W{Dojb2jR% zK6}}0P}V2wj_1awbM(j(qnmmhA@i_A+IdN_Fe#~Ruop&8TFq8?;AXW0;~)yR9_SbK zTEicUu;K##=%u!#DyS{+N5);gb|Y2`_zmA*!n1qSQ=Rzfo6Yj1Qny8k4kq=aCv}X2 zNEMr~=K4~uXxE<%!kWy}Vx%vy!sv$%S;nP(x{5W@{S&UwFbB#7YzZVjZR2-QF&`8a zi_ao55T$Zl=Bz;|D~^;_QL=7PB3n^0vJ@e!4y*=0b;L!QrC_R-*j269+zQMIHKQK| zVU(4}1SnwqW{gP7Bg7iz@jWiqP(ZmL!oZNo!xNio#)bmyg-bSy(=NC|NJk56HG_~- zI?{I_mA9JZR4TvGP9&|ZIHqX+v zi;Jv*(()c^$om{zW^@JeK9G?&C7taftaNE-^v|`Gaao7PgXf(x`o8Jqh<(Kk2z~cC z$gBX_Fy5qPNBgB1zQo|KKz6tB8*7=2QnvqSR*&7N@Y5X$J-vwds?>SV$Vidqp`DMB z$^`IJ0s0$j-&tTr+08NzbP!3F(yH;^YxoA=pQV-ZE*ShP1I1W0qx?v4S ze!s)juFl6}0!b{)tCO<6*_GN}di-WgTd{M2FY?ctyIq}h1N+OZlc?_!g@%lKjPGrn zaj=$W7WkjV|8y7^S?vc0PlLy7ETa6#;Ux?oVvcDpU`v3u!kThUo=UQ0YX`V`e^~0% ztVF28Y%j3d`16O*T|o8N+Itt&OS00*c~0r56B`f3u+bA$$MrQ{6)#opR@MSE@ul#jlo)Z^PF@6 z>+4Vzyo|A^o{{-0GB3-xQ&tYj_^OPDWMs#)Lv?g6H5#DFaH1HkY{kVv|8OZXM!${& zJiV_a(%Gs-sdqqpHW!`68f9_`*AJLC*c8O|^SG{K{lIPvfFu`zd;oJ1^S15hn-<4z zwmTMAYI7!;G!JFlu(b^i)II-=GX@^AF>VrTWanpGJhubN1#AgW20Vwn4b1nlcPgrZ v&U4u~yT)lZc20Ok&mggd89f%&5WY!&%i8a!SR)UYam`~6lndArNc8v*c@0N1 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_04.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_04.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..9a902d070a047d9088b85e09fb3b9aa1506e0d6a GIT binary patch literal 4076 zcmcInOK%)S5bm`XFlz%2+C>JWxOs_nVhA_}frNM^m>?Xou{j|QjAz^S!0gO2GizkT zf!6^6f(Sw)aX>;y1P+97KoAj>ATAs@@B=vH2XNrX&3s?A2YT0Iuy&!OuBxr>-L9{y zySlcjl-h+cUMjz$)z#NNRe7zfhGB5%=S}@g$tvNHmG^C~8!6k*e{9Ngm)Or|F10ed z%*sO}Rz7*TmDP%s)1y|-j#)Wzg_WyUTKN-1RgJ2fA!pPc==@?y)z$6lu*poE#9_P= z_+F?}^L)odzDczow_0(evskBIX2LMYjENpE5HQ^49~uDBfiUhgfw-;PiAmE=Vy1OwT7pSFybwgq0*v$|gl|lni}6L+ICqKzIz%C1 zN+`$pEmko*M3nR40dPsCn6v`ldBl!mcOFI8_Y<(uclz`rbcjL{$H8*n?OAv8^M7S# zYchD=c(q=JKfUMe4cLh1LyWJX7lMHiQ$obUobm1`Ra18fzgvF)sPF~hV*}*Hp10-1 z^S364STy$J-RV77@4-ea$1u)AhbSaW3FTOR!>S>*U!t^MP2u(^b)E2W*k{!JxJ9fC z!{9?=-!%ZbMiNAR&_+=~DQU-%i87t~aUum{$?LgE#9PPS&%k4rIrl6wpTzqK#uv~b z3Q53%5$|V^7i3ihNEHz65x#c-M2l@>nmS(A?a<4XU(+e04HMT`RD)wQq|C`=_t+yxDkJnJ%SBwjrdE>kCG`!~XK*w|;31Bc{{v7fGJ10d7F=Yd6c$G9Wm_29{-fL6PVv=-iYBB ztmmsc0X`>piM)h;2C3xp-nvP2%XpDa3=UziX7p;O6*Plv-OY-9ds#PLf-k+bkTr!d z{RrbL=n#d3DWSZ6jNnTZU@A*?N|GJ^&YZdid`9hsg)7L%fs3$4aQ065QQXx z0L$;?Iay`jId&lZ->tAwq*^I+Qtj}?=&$c()cH8}9DeAC&>AK}@>1wyTF99*Kj)lw-q>C|wjcGfL@iBCW zLc)|#UeD$?bIo&KQxAgkg=IZs)vl_0#Zm)j7f#M7)Nu#M=|uzIqdtLuSB%o%7V34y z3S3w0vGbMPcK3fv1$BzuS55AreJuv7ERP;}WbwAg_8rDQwB@)voKh3%GaKIPA>4T8 z{pGu`pT|6x6_ErJEU$^b%A%T@g{-NEg&z=}ch5XOkIOxp-@HwOoF#)-z^xT7M4p!$ cuy-5&_4bpjqs-@VjPIdC6cVO{h>vgjpRNS2B>(^b literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_05.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_05.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..6ea92d60beb7036a66d0325fff0717d32d51bf13 GIT binary patch literal 3272 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_07.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_07.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..af93874bc83d2cbe6094c9419cc137625f1550c9 GIT binary patch literal 21497 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 A^#A|> literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_08.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_08.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..29960bec690d41462be65fbb637ad182aa128995 GIT binary patch literal 6052 zcmd5=-ES0C6u-ctxS*nLfkdnqMBPde%9j|6P>8h!+OD*rXuvStou!lP?yR%3EhWaF z4@SjALP#W<7*V50j87!`fW$w-2OoU!(MKM9@WEJrzjJ5SncbmF1#&i7C&e zO<7%L%Iv+STz#J@C+`pHgYS(!Xx;}NGUe|<`6(v|I@Mvy!z)aAMCOxLOYxdf3sk3~ zOukI`O6dC`kv|HaRr`cfpHnN*L#Zuz`jr;G2AU2$94QskcVhe<(6ATB;li`hCMz0_ zz+Sz=Ic8RE1E+qp?iH=Ptv$QydcLmNuhs2J-md9v&9=I-LvF>NEY0XCt5k=w=(%NW zRkWM8!KZD@pR_$)^DWT zm%ah#QHlGD@j<%q&H3QmU*Y)1ugzEJo1s@ybAw)4alNutf?K-Yb-l914|&}GfFG_# z8MW(~z^>my{~2TyiG(Vl&=0eMH)%O_X?UN)zAqNelb;sfN{hYI@J?bux9|<(AyGu= z5bxb3{DANw;je;kR_jF`#)z9Cah#_`(=Yr*;e*2W0b%;lViDSMAJ~%n`3h?JjZn_0 zF|;I^mh{q`v{@qK91=b*{IKwsQLj?X-P0{ZrNtH$Lw;oWcjvi z^LXE(7e@Bzg5_J#oz)%z&iK}(K6~Q2jKyzCv8cpgqra zhwv5c{CqS(V_7*68mq+;%=F!&F2}*SR(E`BqGaq8L1JSpSR?Pkkd6g-*VB$a3CuqZ z*tSX<$EOlNbr1-g%5h!wELaAyAZ{4WpK*o|PG5@JWh-=I7gY2^ZWy9TK$Q^f@)e}5 zVwW_c7_pqODx1k`q z)|GmB0tt~ppq`sUAf7X(o;m@4hT#SDmk+>>1@Z;Fe-0T%gTz_D=r7Efer6}^;!^Pc zE+;iP1~KGLWu`X+exm{4I5p#QD;7_0A89tBiHRq)tLC1MBFaHKIiUv{tJ|60Owt#^` zpS&im=#$Ka!c)tY#B(F&hs;hgst2t?`MHQpBw+T>Had_^%XX*yVBg;T$SV9G(`Z>U zBhV4dnddQz+guOVb{5Z7$S4vCRYKvK2hb@V-O`HJ%T9@XX>}AU$jKVgYD8q#WpKYC z-__JNqmDFbdexd1&Ds{t`nIuers7uN%0W^P1Ug&{!z*7+$C8diBcsv4D2YdlEqT38 z!5X{+L~VHjI@*%H{vKqAi6n*u3vHP~dwR=Jv5mtIxh+F=4Z+Tmj`A2P&5LX{Bhz#QsVcKV;(?+n7< z!CM|f?Y~ZMhl6V*Qfj$S)IDH2v4B4?=V12z0{(0${vLmta=xn|-Rv67e>UGqE8an0Z1VXQ!rNT?DD*L)GJxZ1Vg z{Le#lpLbj;@t84=bVuu0Wre*oZgRzajoulhw4kddE{UyjK5(!m8;kuYdaoiMmMy+bIZxKKW a`Y}uT5hFI+`3iK26KGPJ*%+Uvo&N^rzx0Fv literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_09.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_09.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..a55ee8927cc672eab6be9353841551b079b613ac GIT binary patch literal 16513 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 W*+^e1v}3jG^J>~L?xZ!+j{Og`pYGlO literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_10.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_10.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..dfdfecfd2cc0a8cf1d37a570dff486317f632666 GIT binary patch literal 29061 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 W=@TD^K5+|tzJ-CT#q3L* literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_12.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_12.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..68852590e99e303c55817870b7efa41f92ee8684 GIT binary patch literal 13889 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 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_13.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_13.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..ab58defd36ecd3860efb35787756871065081743 GIT binary patch literal 1664 zcmb_cJx|;~5FHmJ z&f+?K*mII#EiDMglIL~&h_ODN_$%vHiOW`LnkMl_G={Z;mB^tN>Q$`#rs|4j(CGxe zFoDn=*;c}pM%FiwiDLhWr~J0r7N`td<%%eHEm}b&HuW3jiJtUgCF;xKr8eD0<9Vne zX>{OAuSWA!!+Uo6{XSEA`V0Z^3GqHWxA6mZj2NyET+cYb?pOG4@D+66WV&(EOi4Fe z(v^{jRLfIMqkG!CO}KaSoG0)O=ETRD<$Qu1b3TIoL=0C5Y*`FApQDO7FAQ;BC{rNi zEVbW~o+q?#l;71xtN%#j|MOY1x*zf8JnzrQG4Es88Dh9XSkhRS_bL3MowH{j=pn5yf zZdPV{UXQ_7pwC(Otj;~;xOKi~dx#Mh0$Ub*USAOXvQ__1Dtq5ppGK+LBlKBz>A->C z^$6a8Q~uuVBFDX5zzz|^6#`opgIV}vt9TYh)qMKiHNVSurvbj3=-?rIR@?W;asS_8 zd@tY%VVlRo{quL{x2?Ke+gh2nw|q;7=6FPX1^9&EmDl$ja@^k~>;q!BLSV~cpzjU6 CxX(-g literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_15.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_15.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..f266c2ece8e8d2d7286a05f73c70df483085a1be GIT binary patch literal 5820 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 S%ReyK29M`Ih4q#*7XClPKwz8z literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_18.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_18.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..8c14c00a5f22d622ec16762405f89580937896e9 GIT binary patch literal 508 zcmWe(U|?VdVgW`L28IS8!=VAlKm|*nTpLCRV*!woW8h+t1kxG|;tY&H9ybFMkj)Av zS-_+iLr`K$W`0h7dS-HBjzUptL4Hw*LUC$gX=+|_YO#MoYEfcIW`15`jyyvE1IW@f z|NsAI1JZ^TKn4)Z1+otSX&^-qfHeS#ZlKDQKza(02DwoR!(E~zxeF9FJAmea+(!*} YbwJ%E33eAZNp1lJ{}G^Dn5g6y0A=ons{jB1 literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_21.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_21.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..e5b0090dc9672ba4ccb54d4655785bf055bdf769 GIT binary patch literal 4720 zcmb_g-ES0C6u*=f%5Eub-4Q=ZdqERRWCJcSF|~daY5`5OX)z?=gTwA^nPhinomtw- z6ESK`L_#7_R77GTiXp}rVvHfi7$1D#(FY!U@WD6#0Uu28_d9oo&TeO#278)&&fRm* z+&SO(P76vY2cvIY=jr2b9n|a2{@pq7Cm0DBTW5b9?67oVy`{He+G&3;b~V>GSo-ir zOMh?DGu`(0u1%H}a+cm|(hGU}`_&#x&u_N0(ran=7E1^FEWO#JPe8v8l~)6*09&>J z=aq(tqk1ss=Hv_uCx3@iz;DWQ%ClPqZxFmuaIfGkg88B;?9aFKt7*65hB`F$AZ+N! zymr#~WfP59c2qZIZ`Lcj4KMI_>6z!oj~se&Vn+KxSaYl1DO1s*JYNojC@My#Yz1Ga z>v=cyTx_Mwftke?p79$yU#go>_HwHlwhTg(!tL9)2S7`YVFLI7^ExQQ^dZnG%rQ*` z$`jtj>Q&HgK7@T4qJp|d=Gz7DP($G71#cGYC<=3RN<9i+>{X9o?x@EhH-_1IP^QSF zIsnQ&iMs`F5}bp~5JrXvXWWLVR=tL4x+pjvnQ&gLkCKkSJLn5WbOJU|>!dHPfJaR) zVSI}@NGf1SfWF`}|A^FNQ}1J<@esVioT4SYl1Fylk2y2Q<`-9AY07t~66VY}W@7wo zt9*w2)8jKU#ad7?qj11NvEnvdOscI()O>xqwODKT*n+F6|f`_+kOsG z)SNk9LLOvjIIbIkKB}wkLW)i->l@gWIgr%p2k@xV8H`^r2T27{2q@O+Uy+(pFE{{a08Q{Dc75t>&F~Ls>rc7R0nP+7_E_h$2%`^MQ59`RAtGUHJ+Vf{w$t>EW z3z&~X(02;@x7X%1@M!-h7~f+qW~Cr33B~Nh|Ez&W*V)-pEqID zrk$-9wqMo*+jcTO-+@Q{-p644KvF@J1EPLkg8n8_te1isL2qFFvquz~x*o$khh9K@ zQ1Bta&x^duvVGn^NZsn`l%z-o($%%ywr#yT|2 zgC_0!96Z|h1qSm9Bo)Lspg5PVL5e!=70k0Ohm&meTI-^&1vMN<5}9P?D@A>oQVg} zFkumnHy#?2E}w8iw+xmSHN0|bAZRDAjwhfW?M=pkIYlpC!Qj~jk_uQ7VE)j~pG9hU zJ+n8lAFZlx6X$VT%`Q8YX#;(C2JdE0C2ffBBbUKvEJ0F13;>F4xB)5N!G=K#(p{JG zito$3N44~u*2>jUaMG`M{#D6RI;(omB z^t64Q-Rv~<;hi*@192^W2L5Vmk$wF#!3DnJdws=3qSRf zaeEs)n)ee1dlX12U`c>JVXW=Fhqln74#DdMcV$KI5cvMln6b literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_22.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_22.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..eb19ea4911b5f520f63e6de69b3cb0d6b8df72cf GIT binary patch literal 780 zcma)3Jxc>Y5S>f>z!N{fd>E1B1ci;!W*eI{BDoYAa)p)_N3xJW%*Esc|ASy_XQ`H! z*8U2Ag1^G^&1@tQ1hdD!c{}@NXKp4#L@DfbXKo3G*PJyIymc&(VN0MnDw0dff-8bq zcr}#;D|pYRKzNQE+$+i8QX2dMSfVw=Yw-rug3_l=!Ghqa;2AVkurw?ekfAy-pbAb} z^b^jWebl9($V-%qC>xuS7r1Vhb_6|O0Nu1Ehxj8p>6oi-E9`k;zwL!)7>%NyH!{~Z zrr$Cnbv*V&gIH8;Gl)Co=D-ZYxEuAu9+8JSx!RAfB-w-2I+67V{shK%57=+uFn=x^ zktBDxea4~9L8x{Sn4t}zk{q_L3jfC*9-E?h!3CfeO%=%VU<_vDoX)|gB$rPGaPAnt znIF%R&z#psURG|2e-*q)m#9_a?q_nWu}V8X#serdW&i7Vqjug5yn3@yJJi1#&3)d+ YtDoreF6?xlU&npEhyQ)XKEFWs4GI5$>;M1& literal 0 HcmV?d00001 diff --git a/rbufr/tables/master/BUFR_TableD_en_40.bufrtbl b/rbufr/tables/master/BUFR_TableD_en_40.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..b6fbc6ecc50a658d15a831372517c3b65c0a7dcd GIT binary patch literal 11105 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 X>-#F&xW3o$BOg(OUa~lV;qN~HZ57Ex literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_00.bufrtbl b/tables/master/BUFR_TableB_en_00.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..babfa11394cfae54da222e80e693096dcefc7596 GIT binary patch literal 3832 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_02.bufrtbl b/tables/master/BUFR_TableB_en_02.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..bb156f2d563eddf0bc7593b9e796fe0dff60cf43 GIT binary patch literal 27334 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_03.bufrtbl b/tables/master/BUFR_TableB_en_03.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..14bee965b993d8d3559486065bc3e55b1a345411 GIT binary patch literal 4585 zcmbtX-)kI29A9hHnpTa!e>7c3pH67G3cmT05G@f223quax;uBfxVIB$cavP`Lmqr6 zDq2M_V$gsO77Vt!Tx^Utl;xe-kHW(d}!Swm*HF>FijXIbg=uEuO#KjE_wiykzmY zJIwfZi{YJSJaL!74U5wU&3MP+3wN9GKNiDDGyd1&*+XW0-Qwn9Gd^*T!EK9;d(HTY z#hLre_^QRlDKp*xyp(3SDmo&~c^=F3bazQG*Daq>y z_}&AUNBdvJ8t(vqv-|(mx4$(Do(?zK|1#dK&}J^;X(|$ShNt059Olt6)+&;O={}2i z(qbLH8h45gYn*&-e&Lz2Hcw)0r_E*bNt+Hn)T~K8YnowV_{M4TCi*39=DTerI|8<1 zk$^qYcAbe}qlYn{c>IWcKLGv$Bpdw!1n6d6+zkhicwEH0+rSc!IhnTNc41tC94V2- zvQQaoNyYL=sE%RTjCzEPuZ`gQDE1+~8`$$(;Ag-xUmJ>eI@}yzit7^J1rEt#o{Zub z$s!vesP8?5b&1~v@cI%++LV2M96$2;3ZGjLc_c#}k%Bi@h%E~Wr4X;IBY0LQL9tsW zp6^XsZnqkb>sY6x-E5kRH03Nq>L{{03h*~dyrj?1_>J!ZuUUQi{cW5+r0F{5mN+bC z-5}DQui}6OQnXre5JQo2>^+9Lj>E^6!^_8?#j3lzHa%;t@Tju6*sHM7Y)2L_2b>*F z9*B@FWB)iY`I6@>k2^Z2DuFDTwg;I}&ZKlt+{i{3fjTcVGtJE&J^GzWV)&A{eTBEr z155hMOBJt4B=>}cVkwV$xt$>(O)_VVZYfoP6KO)6u3+5@!0&)AS2XIH#B)SNvlG&^0LrpBZJXhym?%|1n+G%M$+ac5tR zpZCnlI0UEG?S_>EBX4IB`)8C1I6@D6*pT3wgrNNDQs;3catPaN<)g{hgOzO6JJU=`3V0F}CSBIJ4r1$&<+Fn|KSBQoVEK$4SF_L=TTwf?nm3TT z77oadYKZvWgO&%?P9LK0YNvi5-izNXVQxv6+C7ijJ^#j@r;siq``i2X+)GT8PnGuU z4Yg-9P1xvaD2%gACd=>{x!P@ubZ_;>Vas(B9KS*TbIWzV^?yZNy(*A^;4G+c<94JE z+;Zw+jkR)E!FTAo<>HF&BsX)G(fPWHxjn&j-Wj?R44&@3_mtiHSImDOeX`m78vddE zhY!B;o}hm<&7D&t_Fm!30taV1j|MjPy{EAz{chTu>U`SUo#FP1IrhFmFr7;*aBQ`M8i!@^TIpH{8$52gP(Im0pYpBaf}wW~fi*>)nnpU%*;v74Hj!z2 zKU_#}m;1NSzgaFLa!D)EE~?^D_pl?D$EbVQxLiV-RPZ=es1^@|uFdIKq_kg~U#P|; wJx1lUz1*4Cu|`dN1Sss3U@e6@PozP2z*DIPW|&JHsBWS2nCh1O#tCWhKX@EC6aWAK literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_04.bufrtbl b/tables/master/BUFR_TableB_en_04.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..8989c533b7c1b3fcfc25d549d2b06ae62d4fedea GIT binary patch literal 5021 zcmcIo&x;&I6fWbct5J8w_>%++yv(8=#3%v1#4HkZH(8QZ2zao!r#90t-97g7Y<3|B z4<3RB&0$X_hZO{K2yq2}!ioU}_Yg4PL6AN84+tJb0`2#8Rbh3_tkbirwM>6qRo(So zy?XC^ulIlu;&J>Y_l%7lxc}(y8^0buA;cbxjNwlLowjW5$8OO#XASP-^JwP{?z>g@ zuNa&k)BWoPr*G5!b%XnF*ZoTd$M4Yn3kGi*Tpicr;!cfg1{-(j{^tf?*sJ?L7<}Vy z-JiTi;{}8J@74VcgNG(`f79UHr0#DSoWD=^uNlnIok_zWkJ3ao@+ekQ^SH<;2{RR| zBtPC!SvecDg=h$h{Q$okMNzyD`~}#=j}2WRZWe`6x$OFv_b~7oo;?Tj50k9>w@}&7RGu_L#teefDt9LHt=1#(f8hwsPOWtY?qX7wdQfeUp2m9@ntn zi@+a&cK_%K@kddZuqnI#g?e1YI|I&T8U`;zBwf@VnyEGhlG8FzCyo_&t>;supSXw?i>wA;u|royNb;Imfej z&fAy6(StJt{ryEFe-m;UOFsc!yVl`l`g@(dGJV^D=E*NT7_G)$Fk823=tZn@_H zNTMDt_f+(#kr&B5b@t2>#qN1FO>)LcCI4XFlqtCDZxDK>C==`EUL;JSWnQ zyYlMdD*5}ep$!7=QFJ5x-3`Hg|5n$bcxdIBA!s8 zglXJiv75J)%v1+o0~n7L%9XON>b}$tP;d1S52Q52^SCnJR-yB^z>7d~&kZ1;Y{U3~ zw%lpXI}8bwzlk+$&U4SQj&GAA2E^G+$}-cTqJRA?f-PP*x-ibxaL?}|H~)&?iedue z+ckTB1GsT6L)woztSG5aS$9V56&zR4WY)ky94tq1FP6EAK?_0N%ltg?3T~R{7+~D&Fh-+fNQ@pd`dx;M-NfkMa+T@v literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_05.bufrtbl b/tables/master/BUFR_TableB_en_05.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..080a03cdb013e3c305f75e2bcde347009fea522b GIT binary patch literal 6661 zcmcIpPmI)594@#j3JNMJCa6U{EV`RWgNB1f1;j;x-7p@+c%a*Pv-4u7oxGV@b_s`# z(S#`Ymk|FDV-ytwQ8XMdVuFb#crXT|i6$Jp>cJS}fr}ZxZ~8jhcBZcb#usM3zINO9 z&G-BBe!p_FWmzNmEL%7?cW;bu8FQMxi-Q>8i%io=0`M+ERW{L zG>%*!%};1tcSAJ)QKNrjH2+iMK1{cSp4*gRU=LSAC3lBG)Aj99d(GmLA8gR+>y_q-Odo8WTKAdgS+w|juOJhq3s@^rWr_i_C* zcm{3o3oxrg(fYK-A=COhY&V!{`L43-VMBHVsi?4Kdm?BmVTToaO1aarIhzs(PjsyN z@J)V4u*OHg&w;T%opAi)x%LX2&l}X|W8AYBn5)kgxM#Bke;uyMsjBUIUQ4;&Y}Qsx zBjj=l&wCyCU4jc!#p$Ed?VEskBeoTNK9|dS;VKzS*`c!C-LlqdR`GL{KrE?NHk6*b}4f?)>_RasZZ9IbV|iv_KsK| zqc4?0`jM6fRPe6>X-LObq9T+CJYiRqTg#~BSX;1U>`O;+ob;tZwK@)6jj^`g4a$9k z&9TPy`iwRH)_$?3w-{XQ9lVF@9|q?7Pf0TG!hN5HGG#H-aU?&4NBM3OiP+Z{Renx* z3eTrb?_jOZfXpvRJ7U__TPCjd4)SD9Fy_YXq7nM7PA*VxS+*J}XTlR4YXaZo!QA)? zkh!sj563_F;FMLQSD|m0po;Iyrm($PFMq!n!CK@(-#!Rr>?bwBDQhvmaz?BPb9}Dt zx_PJ@VaAL^jkqRx(J$Tweg%y4BmbFQW}}`T6thcG2EOU7721Z3ZVmeZf6UZ}H4Ynj3o8AZx|gzX#<*-!j^;RF!q6#h`&AE#Bo&1%#^1 ztr%`s8XuoXS&-cB(A;Rl4{+SihPp+-)!q^31Y@2|_?PDfwl4#bPL+~R;>fqxkw}KKN^!>D< z9P0txOAgFWF9BKW#~kQG97Qz}^MJ92+$4oxW*Sgp%2oYK0O&D_waCS^j}*l{{n;2_ zrPk!=e4?y}619=9YuuDLj{mrHuI|Ay)QC0h+d$T|S${67BdL)wuKIDxXmgk5@n7T0XsZc1BYe9dccTvq>~vF| z;j>EfN!lu|hwyVd^-z%?bI&mP@#ap^h&>GHa7yIvUyo`ordq$qkIBVY>pyw%edGO_ z-~ZY-rg{-%l)i16WASxL9P|5e%-WH0^8;|u{8MPR@yUiz)6u&bv;aXtkC!r*+Y zjj=x*3ssQQA8ym@oBBiM(?W%!1=sE4HzrN^@kgHpRz4P&v$S39gmIs`TM#44s7R@hG@n) zR>$gTzB6P0Kz@9Oz~eRR*5W9NYp!qHdrD0u>ovD-=LM=`J%VSF2lt-WfMC|h~hjrzLz+_!XI}OsOP#NT1?qpZ+M}s}l?f#CW@l0d?rlh~5(b$~yS2W(}O!~hyPIV>yo-GN^X*|6( z=`U)$(4F*GHP*K2`G6tU6oGObUaGmCnsl8&SiHKtU7CR>tmc3i>;U$l_g}((4}f2Ro~R5EA1$AjT;5=AVLUF1 zab<@#_tm82?iimaR}=)}LsuEsFoPY@d>Z319NN-TW`v>GNJDu>zM*(b0dsv*@}=a% zZXo%YtVaySv5x$)f<3N->zFTtG&VZzmJec_Qj*>oa*e2c;_NB3qNuIdoEKhDYIBQ%8l8zaJ1};04x+VTz3^} zua(y0EF%U^$FLXqXAzv90zU)Oc+pj{Ji8k01?CxXqMADc%;j`dR8;6wcAKsqxuX2KB~V)9tEouR@X;>pN!;jOdI@a2 zm)g}d)xpBL(@>K$uEF{H_4!nH$lpJKaS;YmeIaWVBg&~_-PGZZ0o%oO-lF*6G=m+* zvspLI^+$hF5WO{)>gK=VRro1kFv{mNUh`--#;e`$2+H|stj*QZplgM;vu>u7f9M_{ n4xg~kUEmL3vwvFMRU7%1DU>kykWPpX)j`6>Z<%&AOnm+V76l-L literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_07.bufrtbl b/tables/master/BUFR_TableB_en_07.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..3324feda6b20b899418d88e431766d2382dc4dfc GIT binary patch literal 5425 zcmbVQ%a0UA9ByG%6jXc$P1I5`84g5wF9|9nYXiFAMiRZ!%+$_y?CGBL^zM=khdFTY zL3~F|P_mLeV2p~AD2X0OAkjn;O(c;-4j%Xeh$jzd`+Z$iPEU9B%tB>ne^vdc-&f!7 zQNQX39mjbbzm-cyMvfmlaqP1dN6$LW2(I|uk@laExpr9hYd5IQyq02#8lTg0`%*PN zqvdwahjvEGu^ZL+vX;qBdaUK4o7MPlEt6$xd{xVZThzFAtC9;^KDk_tPiwhtg&JSb za_lxWKBwix?P`2U%c(om__CJsE7f@Qol2h9a^fyEzMy5}ZZ+;gj7N1Z@uN`GW@McB zbuU=6Gxi&z9r4tovE#vGlFUVeX9YTB$zjJAtQvL$j!jFx#p4^tE_dr&) zH*n)iJUb6*!LUpE&8b90lj49EM=hDiSa=7b87W%Q3q?nIB9JpOsCA?id!s~(jcW=Z zUFTuUO>7I$a{}@!NQ05Cu>VS$k|Oqx;P)Nwvp>2K9W-L(I|-x(r^j`6 z;d$!)74NUmW=&+iec8YiX83n+DzfKZE4;&|!lQNcJ zU5d%rYxNU^SzYHj{5Q5ag+6({R*vXD2kjWg;;1<-MMJiesS-b~)_orD)9$}R8o$6W zYdS>DuumF(D(q9>r=T8dzYnt+`@Drd?Q=bAAEiu59WI+fwcax?MK#VwnEdWj4IA30$F2dnTdF))990LlDytu`PB zAKNh)4knSR!cJt8*DRpLqB9*&dUe^$U7O3f>k*Cb1avH*e+trY#2m%O7%t_m&3F*a z_$d9`!qFH5LmZGnG|OcAL?19wtGD_Qxz00~hkTvJ+{Yo$LK-}J8+C@|d-4_7@f3o@ zb-0yMAALcQ+0%#1&Z?^_ce8J6X8rHure*yl`^+*}V%cfSdLoiYbdoH&m2mCBe8hDU zxVWc$pW^{Tr~Pl5(k@la;Ht=5ZjkMJ+1^&t&74Htm3a%C42v7)*$Uk|Wz@z_8YaFM zlytL{Dd}D>I&0Ub*`9I*h8kvn>OPElEcVFzW8j4i6C))YPiY)yFxN-u|D5CB_@OS3 zaJSqH|BNXMju&McP5=&IeH0s0|Cb?sVXU2_7r>+a;es5$9rKf~dEom3^79-{46`Pz|%AsRk{g!LaPR24ft3vDe@16+@4T;%yE`uV)dxL&oS zzgGVi&t>tlbpv`TUWjY4`wL@_>*xM50i$70mJ=RlQVqA9#pIES8ch3yAJ${Zg1BG^ z*Wpo;`tvn<(I*$Pk5t6R?pE8wM%MONeWT{+k-w!#zU$O97RCq93;FmU$KB=MEM?7V z;=`PiwiM1u6dobIrN64IlRD zAYS{C@Qm_U4hwyfyj<%!YQP!g<*XRwenaQ$Q|~%Ev~KS8Z=%mLit*2X(8r~rJTP~k z#&ecjk;|X?`ZU1TfIu|kXc}8^4P|RX)?Z-=x4hU7rD$WdFKM~T6<_c8YOkNuV23t82Of&48%4(3no zKZdlyA1O8z$a0;BFh6nH>ICvr{6=Bwgi%!{WLyoX6P`7v^q#@imoShA!_{l(SDl57 zy$puUqnWveVbH#&n5n9(`644+cTf{Qv*} literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_08.bufrtbl b/tables/master/BUFR_TableB_en_08.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..5e20f5ccf23a0852e1dd648fcfc3f5a447efc0d0 GIT binary patch literal 14001 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 bKgFsnhU)4Q2AAu*_%%|2sK58~sq6h85!5ld literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_11.bufrtbl b/tables/master/BUFR_TableB_en_11.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..eb500a05e31379dbe33a246b05e126efb3553aac GIT binary patch literal 12405 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_12.bufrtbl b/tables/master/BUFR_TableB_en_12.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..5fe1d6a41c0581020c3a369a8e5c012047bcc02e GIT binary patch literal 13258 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 q0MQ*4?g&SRg~-Z^*Lwe^vrbn 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_14.bufrtbl b/tables/master/BUFR_TableB_en_14.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..704b366dce7e9c29d2787cd0d37ce3582c640056 GIT binary patch literal 7729 zcmb_hU2GIp6dthtf{K5L2r~X9pj4nO1$;0-QL8c4P{9`-9CoMOiL*O(X134-6CN-@ zMdbla#RgYHl$gq25P=v)5)CoY@IZXR#77@^=$kw!>-WvQm(K3qyFV>AY`=SEXXbvK zbM86ko?U2J)-rtN%xr6WF7W-6vlN#f4zF~%#{3UVMOd+@3 zAaG1#SDTP8O5Am$kk{TM@Uq11Hw*c(TLhk$*n6vxFG<{Sn~>XP3EU@f!E7O)m6*F- z$P*Gr?+|kDodPdO+%iYV7bNbvOUSeD7Fd$F1k@di9M`!X&huXB9Mnqe)rsIrgo87r5|r-5Gs zU$pb>9l-zav8-}gss-QHj`wis2=3bl)N}36I6mm)U8i8L+uXZx-`~kQJcp>403C1D;+P~z*XGej0UOhRdP;h-6n@oOjGZ{L9BNacpRwg`Y-0VWXWy7Y0V(V!?`(!-oT6GURqvVg)Munf;1;AXK}f*7G&0Aus-)m0x{@IsK|a zFK5f;MtV7hXUx2$zbDkNRntyB=~dlnuOhFfQoKHtyy!bWOMPv>TrM+ADW5ux>zsG2 z!32Z)BCj!^-d=ry7rD0kX3-nQhAhN(*7ajY@BV3Pia4dBcjJ&^!JK1u7n+CZvCfCm& zQ7#DMX(bTqnW>drnLo||r;5V>?)>|v_xrAr+dSiTS&c>Qh znQ&zJM2^fM$ARe_(rj%&+fFryJS^8w=a6c9%F+;b)(+Z}>oZ5|btLobrp>k&hANj# zM(Ne*C@t*Pi+52cC-B~nfXw+Su0XV`f6kRz_Nh3na{ua1+=!uk%p9lto7$Hqo3ZpJ zKgQ|9K*njsuN9l^!n1mv^(RG%gAF#V=xSgIC}ZTyjQ46JBhwlOCD*P z_Ta?BLlnMBhCE6tu>zG%&H9oxWrVz!b;2x4w_$lIZ0SjP8i(r- z;T`(;kzP^w4cif1^CF&Gm#}KRuA;A*Yia#?cbcVivNsnw(& z`;l|{JpGjO?o=<0G1q)XYpQ-V+LvpQAJ1st0H<=HW;hU{R# z&iFwwn{Kx=rp%XI*mwFA^QrWm7*p!h|4sD->Xl7)-8XSg-nbsaDRQr8-<$HZ?w^Xt!~q&v}xg&Ig<2NE?{-sjrJ$ SRA<7Ky>6vX)@@VmH~tUC;AuVp literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_15.bufrtbl b/tables/master/BUFR_TableB_en_15.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..f2975dbf74af6b6366a92be2c543b12c75ec4826 GIT binary patch literal 12193 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_19.bufrtbl b/tables/master/BUFR_TableB_en_19.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..fc3743c475e7d98d5f3a59848e02a68b71956e8f GIT binary patch literal 5401 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_21.bufrtbl b/tables/master/BUFR_TableB_en_21.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..dfdf41a2f4b782ebf93bbc5ba6beace5a1962205 GIT binary patch literal 21358 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%0DeO5FTyY5*z30=`gaU4pM%UR zT#6UTVVLJFfj09z>AlpA)#POn*QR<@x);oE_vUhY!RTWt4|^?FbXn&r)pcV&uY=qR zeq)3#*?D=~E~dc)ZA@BJ=X8fDjUhyLWMnz7D~5Et{3kGJ?bZIq-edE z{8af`^0J8Ur8Yud^mahCvOiP$6I?3pZNjx;BkX}muJj!43seos6$G~-=Yl-AzH~A? z9JIr^DB=$Ub$ZxOir2{L>`UI!7*>61@?rOQY+J3MX#iuaC6uC?}@B2^zB}TEt3~tuYMPR n`r!Hmhdw-YKewm(IzyK};Xxd;A0T^w#3!u7`LaPhq%Zn^zVaCt literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_22.bufrtbl b/tables/master/BUFR_TableB_en_22.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..96a240cd69a73c057e049e9c44cb2454366f526e GIT binary patch literal 22238 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 pp=pHJX^H8bx~A3&6cfZtTVcaN|1(H-#SjI;d1p zP^hT4sufD{;72_O3VIMP`a?Xg&zqSkvvjt&FHD{!lgaz!dEdNq#PhsEc&bB{73S?5 zo*b!Eydg{!Y&q+*Z2oJ8?cwyr$z3U~XV|W!la5z19Nn9a?*gvyKu}HX;I^v->?A7pi-UB@A-EQ|e z@H22?5e@7w9!z)5aw2u55%K54Yov0%0n zixUNwp403o_9vbz@U;Pa1)NwM3jy6M#2&+ZKO>%Ruyz$#%5z*M%_H*N8n4~#3ECt&JM1Jf9M`707x3VQ|C(plt zHDhKqGclB(m(Ut1+mn^4#uRVjybP|_F?i-Uqk;WzUcScKrM{fgJL3XguTRa+vZ?WN zJ)w57rmIOjHnGaIr)kThR78fWEp@Ox{#38%3`^i~A6ni6s+ktr!QxMK zZHF^Zyi-Q*G<4-_MhG^I8pO`@(sJ6;T_#>sKOO@=0Hc}K*aDE^PeyB~Pug!}^XE^a z1Ix7y@vf9tA)HiS4qzSm`;BieKycb)P#vhg5SLPab**A;B$Zcp0n(CN*8wUCp9_m= zPJF2R6Q6h3^C9pH@D}hF5a2BP739Mnr1S5{r?>VtT&8VBsUQyaAwI`}IiIKK6Q4or zFXeh0-l0>$6*pt1)_aOWbU#h8}fK*cl%_YkFf5*&upa1{> literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_25.bufrtbl b/tables/master/BUFR_TableB_en_25.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..67b16abd65a3f7adbf204f25e022a5f032344ca5 GIT binary patch literal 24082 zcmbtcZIB$rd0u1L=0mozEd#cR8L+@7!&%ZE0>#0g(;Y&x?sVezkQ7W}&F#+JjoIB< z&(7+@;m0MVA4*Ir#IYS=E3N|+zO2GvQ!!5D6qTYJ%0*Ekpi%yHO)k^@(&d^i8+z## zx_{Qt$@RMbnxTh3tov^nntVj}Fa4;d&l`FOUz_cBhCcK$-QVzWP0tv*{S&(XTSMy` zbl>}=rsoWuyh`_9HT2Ncx_`mYhYV*od`iFmlA*glt^4m7ntVq0N3PZMyrGAFPxs$8 zbosNof9-Xeo;7s4r~9uMy8n9Jf6LJN4Z6SabDBPF=+s7YpP?sj)cp-NY5J0(`#-Py z?--hl=zeLFrVkss@eAg2hECpWK4<93TXcV9RMT^YPJL1L&l~!{X5BAs(e#v|Tej-{ z%Z5Hs*8O)4JvpZP8*kP0MMI~y>Hb@WCb#MS`r9=2^j7Yu!Px9)p;G(BtRj<4wcn}+V*Yx;)PrgZ;pLzky@f5Sda z<L6M)zMcbZ)=ym+sZ{5kuF{n$H=!qoVug4Lvlc`xgv7ai8vw9MJTfp}P<2{@aGO z4(a|Wko|E~4chInx#)$>g(zmrXS

M9D=zZtq!ZUfy^|zC3{C}p(g>Q#1elj8 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_27.bufrtbl b/tables/master/BUFR_TableB_en_27.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..311b21fc666c5fa7cab5400d4342fcb0a3e6ab74 GIT binary patch literal 1832 zcmbtVziSjh6y79fW1&G}VdY?B4ia#47tu}&gMwTFg8jNXxf|G>Ic8@QO)m(h2&fR` zzz|Xd3>qP*g~b&X7B+%K3Jd=TOJV)q{>bi~ce3Dv*>7g&?YwWkH*a>vvaHi+(-XDY zC2O*8O>NaCFfQ9sHdx6ferMR5OebzkrT8nuC$)5Z?No|CGd#qwrR2P;l=g&l3}?P_ z9V3)vvmK?yhLXnd**vrBH+{o(>H-H7c^odH-C>UFM%r;7)n`M_SxaFNyT07zI$6i@ z5o6L?vWUVy+VeP$cY#MhkGJuRW1`c4y%t{p(pEOn-s3&>?Z!gl^A!Cz=xqb5a=tr; zX_*~yqd3IvAY1<{a1=MVj5OkQh;L|(s@(2DZQmDV$z2smh+OEnFha)}#Gp7m#Cr++ z1Z+hC*TRi4Ol%s@zjSOi;2Focjy?EPb>q|p&Cv!r~lU~S^K2W~HbpEF&) z0kaaaNW*cK=lg%_XIRZ5^Me&coT-$FGu6)?uv|Z7UGuzugx_%e&>7vrw^emrQp$9- zkcK%AMab-79qFDTPQ-=Q{SFM!a>Fa@3_ZqJuHymbt8yypCX61O+*Y0lxD0V`6%sZE zi-$Bkk2u748w6hgNuz(&&IimV8aA8BmWc0L^hp1zd~X-m=(_N5IMpf(ouG>Y%GQ*R z$}Ov!*3dH6C!RZqwF~S6b6qh^>|EX%fq4xbW3DRCJCb=qb2qvC!SM=93n;`dLAH|% ze-0j@aiq)Hs#XCr9nNk!+H@|5%;nN(exiQJny5mLEe<4sa&QrxXm39D^cdo9miCs_ aUY~qO_h)GDFi-vKSLf_SJH5Z?9RC4pWLZ@J literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_28.bufrtbl b/tables/master/BUFR_TableB_en_28.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..76b0a414a0dae1c13b645a1a472952b58680b80b GIT binary patch literal 1112 zcmbu8ze^lJ6vsznLP!y=uo5A!%N=;&-NnLAiv)ylrqgzqo!l;*Gcr3uw6YYm5MrSu zML+}#A*TpxBbF8xDem9Mzu@|PySKWE2S@T?_WS0?&VJ@QZ%2g?uh2?EBQqtj{#yJJ zBj`SgZm+j7lqKWCnV$D_@kQ4E18G`QRo1#7GSX{mTP1yD4V6RdqBU#0Y*Ur$l{rH} zR=QY|RBFXZwOYAHr`l6ywvm~c^#FPbg)ew!%$0zsUXii3R___Vi{8bRzYR z>x}sh!Sw@rUEt%n{63LB8_f3`@BDWSK6bHB1!m0r^XE0VkGxoeMNjh@JOdx+#TsPh EJ8Pt^NUh4^Abx^71E0`Qxr-n3sRl) zQ&JU55|eUL{R>iy5=%1k^AdA_YMB_KfS7^7H?cq=C9x!N3Xpx||NsA8K>7lZ22x-E zatAKZ4U||1R9gU~1B&vqQj|3aJ%99?-`Mxj=swAl#UfnN*ZmRO#&O84{x4 m>1c`)I3RcOA-S^&=;#?hJ3E15myq1~1LPST02DUsfocI$ZgNHd literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_30.bufrtbl b/tables/master/BUFR_TableB_en_30.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..3f8fad213c4f9993083ee57e2e1cc27a9920e911 GIT binary patch literal 1272 zcmb`Hze)o^5XLW>LPQ~jik+)iXeo%K6as>crnKE8YqGF+dtCN3icg>xA_@TueFFc0 z4`5-D!b0!`e3ST1vP&-Jj#xOb%N<}5WOWYpaWlP-G#-wZ)kixT$Q(7-#}*z9bXH{0WL)W>&P+qFh}R@n zBU+bn$Fc7bzyFukjja)})Kk*ocv&-4Ku(sq8KQTsEUPAt1T!b0DCrskUQuF5VsDO? zkn5P2h(Dn59G>P0u4m)wOLKIF%#!v|*xp;nj-_cZjp9bE#tq+59HsvC7f3V1a(tSn mH_QJ@@c*iL(BH%yNBTIanwawmW*aeS#@(TB!?+oyZ^I8iK0e_9 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_31.bufrtbl b/tables/master/BUFR_TableB_en_31.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..1a289ce4fd606abed67d1ac74b852e357fae8ba1 GIT binary patch literal 1312 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 Hk@5WiVva0v literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableB_en_42.bufrtbl b/tables/master/BUFR_TableB_en_42.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..fa2f762ebc2db839494fb20b4ee35b1e142bd6fc GIT binary patch literal 2996 zcmb_eO>5Lp6is!kRjXF%!i9_H59mVu1zHh7X_X3Y`zCXfJerT;CDT%H(M1=cBDzr# z7lRaWA$IB)E?kIo;YviswLie$U_3V;(@dK<1JeuXc`uXXou2zSX&An!I39y26rX6lh`L3YW-r#gbek z(Udw;kqZ3TCTYnF=^94Om^7H;LtJZd9B%+$17}(uX=TRz+x+t1n02bMJNRK8@3evC z9OY?Y24q>vRG=&ZOGFNdhSFrFM8w6Qr4@lNPNlGiV#4tdzMXUIU|r%W+QGz5+uDf(6+eQnr&&4x3=Bp>LUztRsg+&hZV_%+bTemW7RxxwVugbHu+9 zH-Y6k?$m|DiO>9r_inJ8rA@i-m=B+ug%(yjt-mhyGsF7s2#(El8OC=v@ttyArX4aD z^0>cTREhnAb<%HN6#appLqq|3w-jMZWBe#)K&mDCk$JYki*tZuX~7oW)Y&+h zF;W?ZVYG&1GlwfgiAQ`7@5aG2kYYOu{*g` g6014K0pgU$W9G-Xv<~E4D&~3v_c-6GEU$t80F|Y4Q2+n{ literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_00.bufrtbl b/tables/master/BUFR_TableD_en_00.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..fef828578d8577b2d6422f8c1e0886bb881d0041 GIT binary patch literal 1104 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_02.bufrtbl b/tables/master/BUFR_TableD_en_02.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..b512e79a13440f3b038840570ffb4a16c940f640 GIT binary patch literal 17429 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 F{{RUE5extT literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_03.bufrtbl b/tables/master/BUFR_TableD_en_03.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..476b196f7e9028d154946c1190f9aa39203176b7 GIT binary patch literal 7025 zcmdT}&u+ z`}@c1cBRyITmwCQeHXTUwNH)vhm;!WQGI7rU+)NZQqZ@~-pn=d2R-(Ftk>cVeHITr zVDUl&&p&AI=hs_&c7w%tHd=gllf_5+8~a-t_YYaT(7^W|w)gi2EFO5o;yVpI_o%&} zFIaqb(Bj=&EnaBgYmeFc&xb6&`nbhP_$sMmxE)tJF^(#dxJU8B&tqJtHmMh6d{Mn- zViSac7fiVmj;AAYvTpnd6X}VdRttO`2l|u=W4jsD{fg^PMY`g|PU&seujr_1oKWty z6Kh9TjXPD1wP#KlPtUk%e^Ppa`Q^6;uf;tLHUKFI8|A-=WE*>HPw0 zSo%-EV*&}izv34Oy#>(RDZQmJ=d=lR%{b7Ysfo1fp;;n#n$Sm}B+JJqSfkvp;JS%9 zP%a1)7!p2ylcz=%U1%J9(9-PK(}DD@rNO+WLlZ^d!JSP0y zz+A}88L%Zle!j-+raVJ_sFC%m7yPW1O+A5c(Z(5W(zLJErurogq;;V{KW&Q|DagDl z+Bs~3=^!?K>^fdKZEj^&LCDGYlMU)k$AqxEz5zvN7RZtdX^kF;K6V<^r|^ zsLO9KyDLu(s(ru(Ma!pb(iWC zt+|WuZp~fYiYUxtHfyy8mgVQIJ)mtI^k;4KJ*<&`#*ZtQ1LXp?1jzp^W{Dojb2jR% zK6}}0P}V2wj_1awbM(j(qnmmhA@i_A+IdN_Fe#~Ruop&8TFq8?;AXW0;~)yR9_SbK zTEicUu;K##=%u!#DyS{+N5);gb|Y2`_zmA*!n1qSQ=Rzfo6Yj1Qny8k4kq=aCv}X2 zNEMr~=K4~uXxE<%!kWy}Vx%vy!sv$%S;nP(x{5W@{S&UwFbB#7YzZVjZR2-QF&`8a zi_ao55T$Zl=Bz;|D~^;_QL=7PB3n^0vJ@e!4y*=0b;L!QrC_R-*j269+zQMIHKQK| zVU(4}1SnwqW{gP7Bg7iz@jWiqP(ZmL!oZNo!xNio#)bmyg-bSy(=NC|NJk56HG_~- zI?{I_mA9JZR4TvGP9&|ZIHqX+v zi;Jv*(()c^$om{zW^@JeK9G?&C7taftaNE-^v|`Gaao7PgXf(x`o8Jqh<(Kk2z~cC z$gBX_Fy5qPNBgB1zQo|KKz6tB8*7=2QnvqSR*&7N@Y5X$J-vwds?>SV$Vidqp`DMB z$^`IJ0s0$j-&tTr+08NzbP!3F(yH;^YxoA=pQV-ZE*ShP1I1W0qx?v4S ze!s)juFl6}0!b{)tCO<6*_GN}di-WgTd{M2FY?ctyIq}h1N+OZlc?_!g@%lKjPGrn zaj=$W7WkjV|8y7^S?vc0PlLy7ETa6#;Ux?oVvcDpU`v3u!kThUo=UQ0YX`V`e^~0% ztVF28Y%j3d`16O*T|o8N+Itt&OS00*c~0r56B`f3u+bA$$MrQ{6)#opR@MSE@ul#jlo)Z^PF@6 z>+4Vzyo|A^o{{-0GB3-xQ&tYj_^OPDWMs#)Lv?g6H5#DFaH1HkY{kVv|8OZXM!${& zJiV_a(%Gs-sdqqpHW!`68f9_`*AJLC*c8O|^SG{K{lIPvfFu`zd;oJ1^S15hn-<4z zwmTMAYI7!;G!JFlu(b^i)II-=GX@^AF>VrTWanpGJhubN1#AgW20Vwn4b1nlcPgrZ v&U4u~yT)lZc20Ok&mggd89f%&5WY!&%i8a!SR)UYam`~6lndArNc8v*c@0N1 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_04.bufrtbl b/tables/master/BUFR_TableD_en_04.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..9a902d070a047d9088b85e09fb3b9aa1506e0d6a GIT binary patch literal 4076 zcmcInOK%)S5bm`XFlz%2+C>JWxOs_nVhA_}frNM^m>?Xou{j|QjAz^S!0gO2GizkT zf!6^6f(Sw)aX>;y1P+97KoAj>ATAs@@B=vH2XNrX&3s?A2YT0Iuy&!OuBxr>-L9{y zySlcjl-h+cUMjz$)z#NNRe7zfhGB5%=S}@g$tvNHmG^C~8!6k*e{9Ngm)Or|F10ed z%*sO}Rz7*TmDP%s)1y|-j#)Wzg_WyUTKN-1RgJ2fA!pPc==@?y)z$6lu*poE#9_P= z_+F?}^L)odzDczow_0(evskBIX2LMYjENpE5HQ^49~uDBfiUhgfw-;PiAmE=Vy1OwT7pSFybwgq0*v$|gl|lni}6L+ICqKzIz%C1 zN+`$pEmko*M3nR40dPsCn6v`ldBl!mcOFI8_Y<(uclz`rbcjL{$H8*n?OAv8^M7S# zYchD=c(q=JKfUMe4cLh1LyWJX7lMHiQ$obUobm1`Ra18fzgvF)sPF~hV*}*Hp10-1 z^S364STy$J-RV77@4-ea$1u)AhbSaW3FTOR!>S>*U!t^MP2u(^b)E2W*k{!JxJ9fC z!{9?=-!%ZbMiNAR&_+=~DQU-%i87t~aUum{$?LgE#9PPS&%k4rIrl6wpTzqK#uv~b z3Q53%5$|V^7i3ihNEHz65x#c-M2l@>nmS(A?a<4XU(+e04HMT`RD)wQq|C`=_t+yxDkJnJ%SBwjrdE>kCG`!~XK*w|;31Bc{{v7fGJ10d7F=Yd6c$G9Wm_29{-fL6PVv=-iYBB ztmmsc0X`>piM)h;2C3xp-nvP2%XpDa3=UziX7p;O6*Plv-OY-9ds#PLf-k+bkTr!d z{RrbL=n#d3DWSZ6jNnTZU@A*?N|GJ^&YZdid`9hsg)7L%fs3$4aQ065QQXx z0L$;?Iay`jId&lZ->tAwq*^I+Qtj}?=&$c()cH8}9DeAC&>AK}@>1wyTF99*Kj)lw-q>C|wjcGfL@iBCW zLc)|#UeD$?bIo&KQxAgkg=IZs)vl_0#Zm)j7f#M7)Nu#M=|uzIqdtLuSB%o%7V34y z3S3w0vGbMPcK3fv1$BzuS55AreJuv7ERP;}WbwAg_8rDQwB@)voKh3%GaKIPA>4T8 z{pGu`pT|6x6_ErJEU$^b%A%T@g{-NEg&z=}ch5XOkIOxp-@HwOoF#)-z^xT7M4p!$ cuy-5&_4bpjqs-@VjPIdC6cVO{h>vgjpRNS2B>(^b literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_05.bufrtbl b/tables/master/BUFR_TableD_en_05.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..6ea92d60beb7036a66d0325fff0717d32d51bf13 GIT binary patch literal 3272 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_07.bufrtbl b/tables/master/BUFR_TableD_en_07.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..af93874bc83d2cbe6094c9419cc137625f1550c9 GIT binary patch literal 21497 zcmeHPO>i8?bskU@1p=T1QwxcSnZ<~tq=f{CBqWNI1)0BE5)^+{04V;5ak#_|h^<=e zu6GwC;J8w*M3p!(qsWr1AKQs&g_b3SiIhrQwkveWRZ*&Z@PP*%bnthS^M&9W9$Foaq~xSC+3@=IlV9xpc{|z1XIekCtg!SgvL6W-U*x(6ap&E#LLaXIAR> zYn@tt+@3Bfq@#pnm`9Lt4%}tY!OFEwA|Ho7?pJuOHF!l`mkY4N9h8~H}DQtmrk^=eYfm-Lw=wTsuUU%v_Ermd(Ty@vW5C`q0#;qx=pQN$+pXZjYd z{s`rNO0SIbdl)IvcoRxKC+j?hQFl7M$a|bWKwFQ%(Sd6z{5gs6j8=*zx8Y3*1k*Lo zt=1|N#ggY1%j2c#La}_t#ignIM6FV9ga9S(cHj+@7~e{iHk{9*jpKU$b~_e$am-ehAr?R5M2P2p{h^zTf>_1;=#x?C7I zov(WZckiLmQMZt93y<$*-_NBza*PE=}KU^TDq zm30ZZl?k^#Tdq_a#c_Y_)m_lsl$&=aiZj3$m!Da1ZhgAg$e#w4@=2q|4;{`4DnYdF zcx9?uD(10f-E+mpr2jCX<63?kkH=a@w~?Lh@KZMG0Ylaq1H2yq_hj)l?(YL0Npmj% zF^{2+YHY$KNrs+3LNDUJSFm-nykjUCPti3=GI8?_w>&*{+N%*)1+Uteth?n(!}Vsy zJx>OTHo*6Z2Dy&b&->eY#pLc~hjP+AJm*gfS&7 z*{ziE?+r{=rh&QBb+2|-+Uxe@6CbBA;vIme9i=_@r_e@x{2j77>ZryhT#`h5aNS)* zsdG=byAomDC(|~sXuC+ZpJPN}cL9Aun!;bxQpX>fVAFx|LMR||dg$$U=M zaWSSW-eEtJW4kl*c8>oX6vmpTIp~p225kMbbOYO7uxN`_P;7O{qjpp#wS_ zSH*Ve`IxkrtL#tZk@Ld*E?lK9p!ah9^ope8)fBXcWyn>!^)x-_P*clrQ_KEHOONve zTDT7MjjFqFR0jl>y^>Q+)v+0AOPr(}s;f#-;dWvu-11~o%Sg<7N%N03^&G|6(!e3} zWPZHsNOnXhuS9C0@U8p$vdvjlaL+Ma=#RxpL20q`C~kX&!y&)bsms>mE_9*HcGu)@-Ilf zS@J;(f5d0j*_60;v(u$gh*9=aCn@E}sgpeDZrbW@8r*DI5PT|4F3O#*2)wWO@Vy#zd?Vq4ss3+!whDe`EumsK;%bvN`3yT>_e(d;#k=V_))&zAk*!F0f36gFB>?2(eI z8RTrCxu0=>`C*f<50Pd8Rhlmix+}Lw_AS6E-n@>P3j+18|=AC0jv@-aremM$C`0LZwzfTaxNPe^mh>E%g9DiM>RI#k|cwR57A3;%zR%W zE=HQ1eK0Q%?i^FE9VV7GD!g+5#}%7Y>;u{t#zHOApHqscjWPyq12izYC~Q@<5w>q3 z`!m#I0YjqzhK#V0=l?6pz{cbgs9&iEneS*zgmz!0R)p}Q5IkF~7f%;U#l~!CQi!!K zJd64~wMBbQI0nA;Wqexo^HT2b;7u57H%6aAP5riPp#?)fdgoj_dnzB-eT1CzFyQKN zMkODUoUoeqBhvDe(cThKDVgv$byz*%~|+UIF+fO^l-a5Hjahlr}xC_1E-^SR5Ns z$K|=iWou;4Ag(d}71}6sN{hrhHMq|q_9HxWuQLKXT?M{xLuuoCvHLZP*()QasSSS~ z@f|2wVPYq(6ZhOJi{d^Fx+P6>uWU2wsLmxr>zB}O(>moB_u~V}<-npK=V0EG$Z1Et zJU0Hy1=;C}C|-ZB=Ns#{as54vCU&4`)R6{0_N!=%%I6~%rU`$CvjZb{usavFc1` z$0R?V2ra5*1?co*%vD4%>6Z5+?D`22f|Fw%x~aTDc}!lKawVgChn z8QQRn9$-(E;k}7aB=|BGCBx4mTI3AWb;|^fq1pQ|+J3;c5~a=CMtmI6=iRC=gR?Gw+kRxAna?Y2gas-eICfL``o%G(9@==#_(#uNt4N z-SKIwIa-Xn8>J0D{a&2szs2WYP)8A)a7hx^EcweZ+(a5zzxNucFPEGec*a?SJSBTg zY1t`KFDcvU!Q~FV-NKzn2f0Z+v3+xYyoUw;Ml z=w5>$7MbCPKoQbXS`?hAg;^1EI}Se344BB5-Mm+;6c9+##DnNXKL8k_^!0ro?$>es z9n?|8CR~z49FPZHKuONxB4@Nv(yS&$l5q_X3zShT?KQAiKkxf8#w`5seEJs2AI6w% zNtQ+APtw?T8l=uGU&NhEaH9*pOq<#J@7sp*n}CD612!B6*RP?yRb10fGjU?uabHe$ zO5=Q%>aXH%aTe>>rcbWHZsBN*^f6ZM!mVH3HDgZhq4e(nyPU6;iC8=c2RGNWY?4_H z;W*>h-XT<5V*u}9oEXDMZJZka)<2;=>fb`sTml*;nKewm2gf}G+}QpDM$WPQ(PVgn zXpkE?K1g*B;92weJ;-lb^?PvLT|$3dD`7fbs=XHKjFdT1-EpyNup7LR<7Es$7M}B@ zwU!VyXB=eyR#_-A&UUgb>3-QE;A99miSi}-94HE&!G$MKM>RI#k|aZW?@BMmq;V}J zdsdpFR!@5+>?!C5p++QxxDYYTxLNX>=$J{19PW%h@I^Z$wkUl2zg&dd>Ppic*sk=vv;EnFU zYg81YylhR>#W%*igrC5t(C)qo?Tmh=)YUy|wos;N3^cXVm8f&{%BA&bv;yq6FqYaL zA!DiAFmC!y&Ap5;GGo*E?+e{U>LLxZKljh{`5Z~`WcE>5SlVOY?qam3?lcBbX6$2+ zA==;U!s!_7o@)I>`x93>uK`@mJ&8kuhxpks`mOzZTi4aM5c54D7}@83;EdLV=|f36 z|HxG**Z!Trr@?dF$TPqg`)f|B%Q$N#XT*F4keTNM^QF(>ym23iacArkP;bU>;hU5D zB=Pu##8s6Cri$fh?0IQiRTG~(i4pC)cKteiindIY){&N@~?KFG*i}mUM0!)USD$aKuz{Nf( zhkNU~zKlk!?Itch(2S@nr68|}jW1dF(f-?-TDHpbHM&qe;fC|@y#r1CKc#5;=2-gr z4TI@@spC%NYw)WfeoMm8B^+bC0_zgnTmAuUnT_e#39aY1{CVEq`M@3n{v>YUuGB_!O_?GP^s&&yESP($sM=(A3V!%Ac4kA3M$ zNn_30*kPRapZJi<@a6=EL^=o|H;rNeV- zc}p0J!cjg4TBe?7&!4fgzKeF+S)5D8T}AC!T#{t`1mw%azMjNMjFz!R!~3$(WE|%g zcp}GTkLNPl(3F^TG=cBtecTZ~RYtEbF@CGS&T}F`oo`*8$o+laFLuAVqhF&s+q5ni z+ru@`j?#w1*j3*_d#f>QyypY-H~K0gh)8=%|CIH;;2lYH5{*mhck7H)LS!#A1h3i@>#4*3AsY6W!PUbF`60euB@dsH2EYxFm`6Lbx{h>pf0>*)ofD zBd1umWzA>ooK^&9SZDhO53w9Nt*7gemfwqbdsJUBcGnxY-m2Y2KmD8N&vi~Mf2q%s7qOA?M`J~+@(poRxMf>0ul=k{F z@LWWDtFiZ_b=nL@1K`Xg%>V)^a8$F|i6iP&J#ri}JRP!Dw&QKI8Aw(3_|Kz_czg$+ z*HA|hn{Y`I`3Kj+5FVtmgnWeBmF|sE3kkF+rS3aqrZ#}02SwwFo=m16$XKWBGlXw} zHe=h;JZXFwPaDK_r3UIZe<&@-C0~zmnEfO@r92v02k|G9SIw;_+AYyB=v%tb9;`X_ zoTv@XG19~GMT|zRWv;X6nd*CFg!f8*Lh>giACX+)x-k@lnsH}?*n?)yShGRIS~5Q- zdGd}*{P}9^Ow{2RY`6^x$0~TGd?*-?^iS`7H*~z+C~f*NHs>X@w;D%A`u`<~4!B}r za?+-K>c*U{2-f`4oJk=E<>?I7>3Q}<`A9Gl9o2l};k}0Y@T4T~-Qu^90;#hF=RT5F zw>iz>$8gdK;D#f48M)egaC_mWIXIV;B+p5H}J@++7ZLVf|+S5ZebHsO*aqpy?q zam~BPm+~AhaY+3x%Cjh+InI~yS;#rwZ}O%&YU3AryqHtk>q)QA9?g;Zf7jF&79gaV zeHg|2pcz`JHqDs50n$LLdjr&qE}(y4<0W&hR`!B9qf5CL%yqyqF2t@NZ=t+PJKH3G z1QbSnj5$xfw1L)`Gp?cyo(SeEB)>)Sc3DH8Vap_*5%H&BLMO=BZ3Mp{VN(+6=t<5I z=!o*frlWp;O+SwXxgB*}j!n2E$?%@BdFF^5SnayI1*^Mmh}$IooUp^V1Sb_@+53&K z`cw$5fGP`Zz;XTycUJjvOH0CzaD;A-B?fEBawn#?I$AyWPFHA8Tk5Vs@07^l@L64Yqm5)%uPC+pH1>{}C;A36i~U^) zYG5XCApF}8Hb+x@?#CD%;DI{7jn7H65z-ft{W0q77ME~Il0E;_>bar@!NHPdK4i@% zoC4+ibI*bEAJwb4_s{YE0H3Ij)*iQxHrVI?1Q+>S?l( A^#A|> literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_08.bufrtbl b/tables/master/BUFR_TableD_en_08.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..29960bec690d41462be65fbb637ad182aa128995 GIT binary patch literal 6052 zcmd5=-ES0C6u-ctxS*nLfkdnqMBPde%9j|6P>8h!+OD*rXuvStou!lP?yR%3EhWaF z4@SjALP#W<7*V50j87!`fW$w-2OoU!(MKM9@WEJrzjJ5SncbmF1#&i7C&e zO<7%L%Iv+STz#J@C+`pHgYS(!Xx;}NGUe|<`6(v|I@Mvy!z)aAMCOxLOYxdf3sk3~ zOukI`O6dC`kv|HaRr`cfpHnN*L#Zuz`jr;G2AU2$94QskcVhe<(6ATB;li`hCMz0_ zz+Sz=Ic8RE1E+qp?iH=Ptv$QydcLmNuhs2J-md9v&9=I-LvF>NEY0XCt5k=w=(%NW zRkWM8!KZD@pR_$)^DWT zm%ah#QHlGD@j<%q&H3QmU*Y)1ugzEJo1s@ybAw)4alNutf?K-Yb-l914|&}GfFG_# z8MW(~z^>my{~2TyiG(Vl&=0eMH)%O_X?UN)zAqNelb;sfN{hYI@J?bux9|<(AyGu= z5bxb3{DANw;je;kR_jF`#)z9Cah#_`(=Yr*;e*2W0b%;lViDSMAJ~%n`3h?JjZn_0 zF|;I^mh{q`v{@qK91=b*{IKwsQLj?X-P0{ZrNtH$Lw;oWcjvi z^LXE(7e@Bzg5_J#oz)%z&iK}(K6~Q2jKyzCv8cpgqra zhwv5c{CqS(V_7*68mq+;%=F!&F2}*SR(E`BqGaq8L1JSpSR?Pkkd6g-*VB$a3CuqZ z*tSX<$EOlNbr1-g%5h!wELaAyAZ{4WpK*o|PG5@JWh-=I7gY2^ZWy9TK$Q^f@)e}5 zVwW_c7_pqODx1k`q z)|GmB0tt~ppq`sUAf7X(o;m@4hT#SDmk+>>1@Z;Fe-0T%gTz_D=r7Efer6}^;!^Pc zE+;iP1~KGLWu`X+exm{4I5p#QD;7_0A89tBiHRq)tLC1MBFaHKIiUv{tJ|60Owt#^` zpS&im=#$Ka!c)tY#B(F&hs;hgst2t?`MHQpBw+T>Had_^%XX*yVBg;T$SV9G(`Z>U zBhV4dnddQz+guOVb{5Z7$S4vCRYKvK2hb@V-O`HJ%T9@XX>}AU$jKVgYD8q#WpKYC z-__JNqmDFbdexd1&Ds{t`nIuers7uN%0W^P1Ug&{!z*7+$C8diBcsv4D2YdlEqT38 z!5X{+L~VHjI@*%H{vKqAi6n*u3vHP~dwR=Jv5mtIxh+F=4Z+Tmj`A2P&5LX{Bhz#QsVcKV;(?+n7< z!CM|f?Y~ZMhl6V*Qfj$S)IDH2v4B4?=V12z0{(0${vLmta=xn|-Rv67e>UGqE8an0Z1VXQ!rNT?DD*L)GJxZ1Vg z{Le#lpLbj;@t84=bVuu0Wre*oZgRzajoulhw4kddE{UyjK5(!m8;kuYdaoiMmMy+bIZxKKW a`Y}uT5hFI+`3iK26KGPJ*%+Uvo&N^rzx0Fv literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_09.bufrtbl b/tables/master/BUFR_TableD_en_09.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..a55ee8927cc672eab6be9353841551b079b613ac GIT binary patch literal 16513 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 W*+^e1v}3jG^J>~L?xZ!+j{Og`pYGlO literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_10.bufrtbl b/tables/master/BUFR_TableD_en_10.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..dfdfecfd2cc0a8cf1d37a570dff486317f632666 GIT binary patch literal 29061 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 W=@TD^K5+|tzJ-CT#q3L* literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_12.bufrtbl b/tables/master/BUFR_TableD_en_12.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..68852590e99e303c55817870b7efa41f92ee8684 GIT binary patch literal 13889 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 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_13.bufrtbl b/tables/master/BUFR_TableD_en_13.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..ab58defd36ecd3860efb35787756871065081743 GIT binary patch literal 1664 zcmb_cJx|;~5FHmJ z&f+?K*mII#EiDMglIL~&h_ODN_$%vHiOW`LnkMl_G={Z;mB^tN>Q$`#rs|4j(CGxe zFoDn=*;c}pM%FiwiDLhWr~J0r7N`td<%%eHEm}b&HuW3jiJtUgCF;xKr8eD0<9Vne zX>{OAuSWA!!+Uo6{XSEA`V0Z^3GqHWxA6mZj2NyET+cYb?pOG4@D+66WV&(EOi4Fe z(v^{jRLfIMqkG!CO}KaSoG0)O=ETRD<$Qu1b3TIoL=0C5Y*`FApQDO7FAQ;BC{rNi zEVbW~o+q?#l;71xtN%#j|MOY1x*zf8JnzrQG4Es88Dh9XSkhRS_bL3MowH{j=pn5yf zZdPV{UXQ_7pwC(Otj;~;xOKi~dx#Mh0$Ub*USAOXvQ__1Dtq5ppGK+LBlKBz>A->C z^$6a8Q~uuVBFDX5zzz|^6#`opgIV}vt9TYh)qMKiHNVSurvbj3=-?rIR@?W;asS_8 zd@tY%VVlRo{quL{x2?Ke+gh2nw|q;7=6FPX1^9&EmDl$ja@^k~>;q!BLSV~cpzjU6 CxX(-g literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_15.bufrtbl b/tables/master/BUFR_TableD_en_15.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..f266c2ece8e8d2d7286a05f73c70df483085a1be GIT binary patch literal 5820 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 S%ReyK29M`Ih4q#*7XClPKwz8z literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_18.bufrtbl b/tables/master/BUFR_TableD_en_18.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..8c14c00a5f22d622ec16762405f89580937896e9 GIT binary patch literal 508 zcmWe(U|?VdVgW`L28IS8!=VAlKm|*nTpLCRV*!woW8h+t1kxG|;tY&H9ybFMkj)Av zS-_+iLr`K$W`0h7dS-HBjzUptL4Hw*LUC$gX=+|_YO#MoYEfcIW`15`jyyvE1IW@f z|NsAI1JZ^TKn4)Z1+otSX&^-qfHeS#ZlKDQKza(02DwoR!(E~zxeF9FJAmea+(!*} YbwJ%E33eAZNp1lJ{}G^Dn5g6y0A=ons{jB1 literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_21.bufrtbl b/tables/master/BUFR_TableD_en_21.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..e5b0090dc9672ba4ccb54d4655785bf055bdf769 GIT binary patch literal 4720 zcmb_g-ES0C6u*=f%5Eub-4Q=ZdqERRWCJcSF|~daY5`5OX)z?=gTwA^nPhinomtw- z6ESK`L_#7_R77GTiXp}rVvHfi7$1D#(FY!U@WD6#0Uu28_d9oo&TeO#278)&&fRm* z+&SO(P76vY2cvIY=jr2b9n|a2{@pq7Cm0DBTW5b9?67oVy`{He+G&3;b~V>GSo-ir zOMh?DGu`(0u1%H}a+cm|(hGU}`_&#x&u_N0(ran=7E1^FEWO#JPe8v8l~)6*09&>J z=aq(tqk1ss=Hv_uCx3@iz;DWQ%ClPqZxFmuaIfGkg88B;?9aFKt7*65hB`F$AZ+N! zymr#~WfP59c2qZIZ`Lcj4KMI_>6z!oj~se&Vn+KxSaYl1DO1s*JYNojC@My#Yz1Ga z>v=cyTx_Mwftke?p79$yU#go>_HwHlwhTg(!tL9)2S7`YVFLI7^ExQQ^dZnG%rQ*` z$`jtj>Q&HgK7@T4qJp|d=Gz7DP($G71#cGYC<=3RN<9i+>{X9o?x@EhH-_1IP^QSF zIsnQ&iMs`F5}bp~5JrXvXWWLVR=tL4x+pjvnQ&gLkCKkSJLn5WbOJU|>!dHPfJaR) zVSI}@NGf1SfWF`}|A^FNQ}1J<@esVioT4SYl1Fylk2y2Q<`-9AY07t~66VY}W@7wo zt9*w2)8jKU#ad7?qj11NvEnvdOscI()O>xqwODKT*n+F6|f`_+kOsG z)SNk9LLOvjIIbIkKB}wkLW)i->l@gWIgr%p2k@xV8H`^r2T27{2q@O+Uy+(pFE{{a08Q{Dc75t>&F~Ls>rc7R0nP+7_E_h$2%`^MQ59`RAtGUHJ+Vf{w$t>EW z3z&~X(02;@x7X%1@M!-h7~f+qW~Cr33B~Nh|Ez&W*V)-pEqID zrk$-9wqMo*+jcTO-+@Q{-p644KvF@J1EPLkg8n8_te1isL2qFFvquz~x*o$khh9K@ zQ1Bta&x^duvVGn^NZsn`l%z-o($%%ywr#yT|2 zgC_0!96Z|h1qSm9Bo)Lspg5PVL5e!=70k0Ohm&meTI-^&1vMN<5}9P?D@A>oQVg} zFkumnHy#?2E}w8iw+xmSHN0|bAZRDAjwhfW?M=pkIYlpC!Qj~jk_uQ7VE)j~pG9hU zJ+n8lAFZlx6X$VT%`Q8YX#;(C2JdE0C2ffBBbUKvEJ0F13;>F4xB)5N!G=K#(p{JG zito$3N44~u*2>jUaMG`M{#D6RI;(omB z^t64Q-Rv~<;hi*@192^W2L5Vmk$wF#!3DnJdws=3qSRf zaeEs)n)ee1dlX12U`c>JVXW=Fhqln74#DdMcV$KI5cvMln6b literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_22.bufrtbl b/tables/master/BUFR_TableD_en_22.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..eb19ea4911b5f520f63e6de69b3cb0d6b8df72cf GIT binary patch literal 780 zcma)3Jxc>Y5S>f>z!N{fd>E1B1ci;!W*eI{BDoYAa)p)_N3xJW%*Esc|ASy_XQ`H! z*8U2Ag1^G^&1@tQ1hdD!c{}@NXKp4#L@DfbXKo3G*PJyIymc&(VN0MnDw0dff-8bq zcr}#;D|pYRKzNQE+$+i8QX2dMSfVw=Yw-rug3_l=!Ghqa;2AVkurw?ekfAy-pbAb} z^b^jWebl9($V-%qC>xuS7r1Vhb_6|O0Nu1Ehxj8p>6oi-E9`k;zwL!)7>%NyH!{~Z zrr$Cnbv*V&gIH8;Gl)Co=D-ZYxEuAu9+8JSx!RAfB-w-2I+67V{shK%57=+uFn=x^ zktBDxea4~9L8x{Sn4t}zk{q_L3jfC*9-E?h!3CfeO%=%VU<_vDoX)|gB$rPGaPAnt znIF%R&z#psURG|2e-*q)m#9_a?q_nWu}V8X#serdW&i7Vqjug5yn3@yJJi1#&3)d+ YtDoreF6?xlU&npEhyQ)XKEFWs4GI5$>;M1& literal 0 HcmV?d00001 diff --git a/tables/master/BUFR_TableD_en_40.bufrtbl b/tables/master/BUFR_TableD_en_40.bufrtbl new file mode 100644 index 0000000000000000000000000000000000000000..b6fbc6ecc50a658d15a831372517c3b65c0a7dcd GIT binary patch literal 11105 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 X>-#F&xW3o$BOg(OUa~lV;qN~HZ57Ex literal 0 HcmV?d00001