From b35a36c84ba16fd6d79b7ae06cf0d098c53b5071 Mon Sep 17 00:00:00 2001 From: Matt Woodward Date: Wed, 3 Jan 2024 12:03:22 +1100 Subject: [PATCH] Regenerate everything --- Makefile | 2 + c/BUILD.bazel | 1 + c/include/libsbp/cpp/message_traits.h | 37 + c/include/libsbp/legacy/cpp/message_traits.h | 7 + c/include/libsbp/legacy/profiling.h | 61 ++ c/include/libsbp/profiling.h | 22 + .../libsbp/profiling/MSG_MEASUREMENT_POINT.h | 413 ++++++++ c/include/libsbp/profiling_macros.h | 44 + c/include/libsbp/sbp_msg.h | 13 + c/include/libsbp/sbp_msg_type.h | 4 + c/include/libsbp/v4/profiling.h | 30 + c/src/CMakeLists.txt | 1 + c/src/include/libsbp/internal/profiling.h | 54 + c/src/profiling.c | 277 +++++ ..._check_sbp_profiling_MsgMeasurementPoint.c | 220 ++++ c/test/check_main.c | 1 + c/test/check_main_legacy.c | 2 + c/test/check_suites.h | 1 + c/test/check_suites_legacy.h | 1 + ...check_sbp_profiling_MsgMeasurementPoint.cc | 994 ++++++++++++++++++ ..._check_sbp_profiling_MsgMeasurementPoint.c | 266 +++++ ...check_sbp_profiling_MsgMeasurementPoint.cc | 160 +++ docs/sbp.pdf | Bin 551182 -> 553474 bytes haskell/sbp.cabal | 1 + haskell/src/SwiftNav/SBP.hs | 1 + haskell/src/SwiftNav/SBP/Msg.hs | 7 + haskell/src/SwiftNav/SBP/Profiling.hs | 93 ++ .../com/swiftnav/sbp/client/MessageTable.java | 3 + .../sbp/profiling/MsgMeasurementPoint.java | 122 +++ ...sbp_profiling_MsgMeasurementPointTest.java | Bin 0 -> 5381 bytes javascript/sbp.bundle.js | 4 +- javascript/sbp/msg.js | 1 + javascript/sbp/profiling.js | 82 ++ javascript/tests/test_dispatch_decoder.js | 3 +- jsonschema/MsgMeasurementPoint.json | 40 + kaitai/ksy/profiling.ksy | 67 ++ kaitai/ksy/sbp.ksy | 5 + kaitai/perl/KaitaiSbp/Profiling.pm | 126 +++ kaitai/perl/KaitaiSbp/Sbp.pm | 7 + kaitai/perl/KaitaiSbp/Table.pm | 3 + ..._check_sbp_profiling_MsgMeasurementPoint.t | 72 ++ kaitai/python/kaitai_sbp/profiling.py | 43 + kaitai/python/kaitai_sbp/sbp.py | 6 + kaitai/python/kaitai_sbp/table.py | 3 + ...check_sbp_profiling_MsgMeasurementPoint.py | 57 + proto/profiling.proto | 39 + python/docs/source/spelling_wordlist.txt | 1 + python/sbp/profiling.py | 168 +++ python/sbp/table.py | 2 + python/tests/sbp/test_table.py | 4 +- rust/sbp/src/messages/mod.rs | 27 + rust/sbp/src/messages/profiling.rs | 158 +++ ...eck_sbp_profiling_msg_measurement_point.rs | 312 ++++++ rust/sbp/tests/integration/main.rs | 1 + sbpjson/elm/SbpJson.elm | 51 +- sbpjson/javascript/SbpJson.js | 22 + sbpjson/typescript/SbpJson.ts | 39 +- 57 files changed, 4175 insertions(+), 6 deletions(-) create mode 100644 c/include/libsbp/legacy/profiling.h create mode 100644 c/include/libsbp/profiling.h create mode 100644 c/include/libsbp/profiling/MSG_MEASUREMENT_POINT.h create mode 100644 c/include/libsbp/profiling_macros.h create mode 100644 c/include/libsbp/v4/profiling.h create mode 100644 c/src/include/libsbp/internal/profiling.h create mode 100644 c/src/profiling.c create mode 100644 c/test/auto_check_sbp_profiling_MsgMeasurementPoint.c create mode 100644 c/test/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc create mode 100644 c/test/legacy/auto_check_sbp_profiling_MsgMeasurementPoint.c create mode 100644 c/test/legacy/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc create mode 100644 haskell/src/SwiftNav/SBP/Profiling.hs create mode 100644 java/src/com/swiftnav/sbp/profiling/MsgMeasurementPoint.java create mode 100644 java/test/auto_check_sbp_profiling_MsgMeasurementPointTest.java create mode 100644 javascript/sbp/profiling.js create mode 100644 jsonschema/MsgMeasurementPoint.json create mode 100644 kaitai/ksy/profiling.ksy create mode 100644 kaitai/perl/KaitaiSbp/Profiling.pm create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_profiling_MsgMeasurementPoint.t create mode 100644 kaitai/python/kaitai_sbp/profiling.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_profiling_MsgMeasurementPoint.py create mode 100644 proto/profiling.proto create mode 100644 python/sbp/profiling.py create mode 100644 rust/sbp/src/messages/profiling.rs create mode 100644 rust/sbp/tests/integration/auto_check_sbp_profiling_msg_measurement_point.rs diff --git a/Makefile b/Makefile index fd7961c079..653367c00a 100644 --- a/Makefile +++ b/Makefile @@ -96,6 +96,8 @@ quicktype-javascript: deps-quicktype-javascript gen-quicktype-javascript test-qu quicktype-elm: deps-quicktype-elm gen-quicktype-elm test-quicktype-elm quicktype: quicktype-typescript quicktype-javascript quicktype-elm +gen-all: gen-c gen-python gen-javascript gen-java gen-haskell gen-rust gen-protobuf gen-kaitai gen-jsonschema gen-quicktype-typescript gen-quicktype-javascript gen-quicktype-elm + # Prerequisite verification verify-prereq-generator: ifeq ($(OS), Windows_NT) diff --git a/c/BUILD.bazel b/c/BUILD.bazel index c49303eb38..dce1d70c66 100644 --- a/c/BUILD.bazel +++ b/c/BUILD.bazel @@ -37,6 +37,7 @@ swift_c_library( "src/observation.c", "src/orientation.c", "src/piksi.c", + "src/profiling.c", "src/sbas.c", "src/settings.c", "src/signing.c", diff --git a/c/include/libsbp/cpp/message_traits.h b/c/include/libsbp/cpp/message_traits.h index d483412560..d1f78a7009 100644 --- a/c/include/libsbp/cpp/message_traits.h +++ b/c/include/libsbp/cpp/message_traits.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -4241,6 +4242,42 @@ struct MessageTraits { } }; +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgMeasurementPoint; + static constexpr const char *name = "MSG_MEASUREMENT_POINT"; + static const sbp_msg_measurement_point_t &get(const sbp_msg_t &msg) { + return msg.measurement_point; + } + static sbp_msg_measurement_point_t &get(sbp_msg_t &msg) { + return msg.measurement_point; + } + static void to_sbp_msg(const sbp_msg_measurement_point_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->measurement_point = msg; + } + static sbp_msg_t to_sbp_msg(const sbp_msg_measurement_point_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.measurement_point = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_measurement_point_t &msg, sbp_write_fn_t write) { + return sbp_msg_measurement_point_send(state, sender_id, &msg, write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_measurement_point_t &msg) { + return sbp_msg_measurement_point_encode(buf, len, n_written, &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_measurement_point_t *msg) { + return sbp_msg_measurement_point_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_measurement_point_t &msg) { + return sbp_msg_measurement_point_encoded_len(&msg); + } +}; + template <> struct MessageTraits { static constexpr sbp_msg_type_t id = SbpMsgMeasurementState; diff --git a/c/include/libsbp/legacy/cpp/message_traits.h b/c/include/libsbp/legacy/cpp/message_traits.h index 3050c926bf..ff67209207 100644 --- a/c/include/libsbp/legacy/cpp/message_traits.h +++ b/c/include/libsbp/legacy/cpp/message_traits.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -1299,6 +1300,12 @@ struct MessageTraits { }; +template<> +struct MessageTraits { + static constexpr u16 id = 52992; +}; + + template<> struct MessageTraits { static constexpr u16 id = 65280; diff --git a/c/include/libsbp/legacy/profiling.h b/c/include/libsbp/legacy/profiling.h new file mode 100644 index 0000000000..766059d7f5 --- /dev/null +++ b/c/include/libsbp/legacy/profiling.h @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/profiling.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +/** \defgroup profiling Profiling + * + * Standardized profiling messages from Swift Navigation devices. + * \{ */ + +#ifndef LIBSBP_LEGACY_PROFILING_MESSAGES_H +#define LIBSBP_LEGACY_PROFILING_MESSAGES_H + +#include + +SBP_MESSAGE( + "The legacy libsbp API has been deprecated. This file and all symbols " + "contained will " + "be removed in version 6. You should immediately switch over to the modern " + "libsbp API.") + +#include + +SBP_PACK_START + +/** Profiling Measurement Point + * + * Tracks execution time of certain code paths in specially built products. + * This message should only be expected and processed on the direction of + * Swift's engineering teams. + */ + +typedef struct SBP_ATTR_PACKED SBP_DEPRECATED { + u32 total_time; /**< Total time spent in measurement point */ + u16 num_executions; /**< Number of times measurement point has executed */ + u32 min; /**< Minimum execution time */ + u32 max; /**< Maximum execution time */ + u64 return_addr; /**< Return address */ + u64 id; /**< Unique ID */ + u64 slice_time; /**< CPU slice time */ + u16 line; /**< Line number */ + char func[0]; /**< Function name */ +} msg_measurement_point_t; + +/** \} */ + +SBP_PACK_END + +#endif /* LIBSBP_LEGACY_PROFILING_MESSAGES_H */ \ No newline at end of file diff --git a/c/include/libsbp/profiling.h b/c/include/libsbp/profiling.h new file mode 100644 index 0000000000..1aa259fe50 --- /dev/null +++ b/c/include/libsbp/profiling.h @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/profiling.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_PROFILING_MESSAGES_H +#define LIBSBP_V4_PROFILING_MESSAGES_H +#include + +#endif /* LIBSBP_V4_PROFILING_MESSAGES_H */ diff --git a/c/include/libsbp/profiling/MSG_MEASUREMENT_POINT.h b/c/include/libsbp/profiling/MSG_MEASUREMENT_POINT.h new file mode 100644 index 0000000000..c066ff3365 --- /dev/null +++ b/c/include/libsbp/profiling/MSG_MEASUREMENT_POINT.h @@ -0,0 +1,413 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/profiling.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_PROFILING_MSG_MEASUREMENT_POINT_H +#define LIBSBP_V4_PROFILING_MSG_MEASUREMENT_POINT_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_MEASUREMENT_POINT + * + *****************************************************************************/ +/** Profiling Measurement Point + * + * Tracks execution time of certain code paths in specially built products. This + * message should only be expected and processed on the direction of Swift's + * engineering teams. + */ +typedef struct { + /** + * Total time spent in measurement point + */ + u32 total_time; + + /** + * Number of times measurement point has executed + */ + u16 num_executions; + + /** + * Minimum execution time + */ + u32 min; + + /** + * Maximum execution time + */ + u32 max; + + /** + * Return address + */ + u64 return_addr; + + /** + * Unique ID + */ + u64 id; + + /** + * CPU slice time + */ + u64 slice_time; + + /** + * Line number + */ + u16 line; + + /** + * Function name + */ + sbp_string_t func; +} sbp_msg_measurement_point_t; + +/** + * Initialise sbp_msg_measurement_point_t::func to empty + * + * @param msg sbp_msg_measurement_point_t instance + */ +SBP_EXPORT void sbp_msg_measurement_point_func_init( + sbp_msg_measurement_point_t *msg); + +/** + * Test sbp_msg_measurement_point_t::func for validity + * + * @param msg sbp_msg_measurement_point_t instance + * @return true is sbp_msg_measurement_point_t::func is valid for encoding + * purposes, false otherwise + */ +SBP_EXPORT bool sbp_msg_measurement_point_func_valid( + const sbp_msg_measurement_point_t *msg); + +/** + * Tests 2 instances of sbp_msg_measurement_point_t::func for equality + * + * Returns a value with the same definitions as strcmp from the C standard + * library + * + * @param a sbp_msg_measurement_point_t instance + * @param b sbp_msg_measurement_point_t instance + * @return 0 if equal, <0 if a0 if a>b + */ +SBP_EXPORT int sbp_msg_measurement_point_func_strcmp( + const sbp_msg_measurement_point_t *a, const sbp_msg_measurement_point_t *b); + +/** + * Get the encoded size of sbp_msg_measurement_point_t::func + * + * @param msg sbp_msg_measurement_point_t instance + * @return Size of sbp_msg_measurement_point_t::func in wire representation + */ +SBP_EXPORT size_t sbp_msg_measurement_point_func_encoded_len( + const sbp_msg_measurement_point_t *msg); + +/** + * Query sbp_msg_measurement_point_t::func for remaining space + * + * Returns the number of bytes (not including NULL terminator) which can be + * added to sbp_msg_measurement_point_t::func before it exceeds the maximum size + * of the field in wire representation + * + * @param msg sbp_msg_measurement_point_t instance + * @return Maximum number of bytes that can be appended to the existing string + */ +SBP_EXPORT size_t sbp_msg_measurement_point_func_space_remaining( + const sbp_msg_measurement_point_t *msg); +/** + * Set sbp_msg_measurement_point_t::func + * + * Erase any existing content and replace with the specified string + * + * If the should_trunc parameter is set to false and the specified string is + * longer than can be represented in wire encoding, this function will return + * false. Otherwise, if should_trunc is set to true, then as much as possible + * will be read from the new_str as can fit in the msg. + * + * @param msg sbp_msg_measurement_point_t instance + * @param new_str New string + * @param should_trunc Whether the new_str can be truncated to fit in msg + * @param n_written If not null, on success will be set to the number of bytes + * written to msg + * @return true on success, false otherwise + */ +SBP_EXPORT bool sbp_msg_measurement_point_func_set( + sbp_msg_measurement_point_t *msg, const char *new_str, bool should_trunc, + size_t *n_written); + +/** + * Set sbp_msg_measurement_point_t::func from a raw buffer + * + * Erase any existing content and replace with the specified raw buffer + * + * If the should_trunc parameter is set to false and the specified string is + * longer than can be represented in wire encoding, this function will return + * false. Otherwise, if should_trunc is set to true, then as much as possible + * will be read from the new_str as can fit in the msg. + * + * @param msg sbp_msg_measurement_point_t instance + * @param new_buf New buffer + * @param new_buf_len New buffer length + * @param should_trunc Whether the new_str can be truncated to fit in msg + * @param n_written If not null, on success will be set to the number of bytes + * written to msg + * @return true on success, false otherwise + */ +SBP_EXPORT bool sbp_msg_measurement_point_func_set_raw( + sbp_msg_measurement_point_t *msg, const char *new_buf, size_t new_buf_len, + bool should_trunc, size_t *n_written); + +/** + * Set sbp_msg_measurement_point_t::func with printf style formatting + * + * Erase any existing content and replace with the formatted string + * + * This function will return true if the new string was successfully applied. + * If should_trunc is set false, and the operation would end up overflowing the + * maximum size of this field in wire encoding the existing contents will be + * erased and this function will return false. Otherwise, if should_trunc is + * set true, the input formatted string will be truncated to fit. + * + * @param msg sbp_msg_measurement_point_t instance + * @param should_trunc Whether the input string should be truncated to fit + * @param n_written If not null, on success will be set to the number of bytes + * written to msg + * @param fmt printf style format string + * @return true on success, false otherwise + */ +SBP_EXPORT bool sbp_msg_measurement_point_func_printf( + sbp_msg_measurement_point_t *msg, bool should_trunc, size_t *n_written, + const char *fmt, ...) SBP_ATTR_FORMAT(4, 5); + +/** + * Set sbp_msg_measurement_point_t::func with printf style formatting + * + * Identical to #sbp_msg_measurement_point_func_printf except it takes a va_list + * argument + * + * @param msg sbp_msg_measurement_point_t instance + * @param should_trunc Whether the input string should be truncated to fit + * @param n_written If not null, on success will be set to the number of bytes + * written to msg + * @param fmt printf style format string + * @param ap Argument list + * @return true on success, false otherwise + */ +SBP_EXPORT bool sbp_msg_measurement_point_func_vprintf( + sbp_msg_measurement_point_t *msg, bool should_trunc, size_t *n_written, + const char *fmt, va_list ap) SBP_ATTR_VFORMAT(4); + +/** + * Append sbp_msg_measurement_point_t::func with printf style formatting + * + * The new string will be appended to the existing contents of the string (if + * any). If should_trunc is false and the operation would end up overflowing + * the maximum size of this field in wire encoding, the existing contents will + * be unmodified and this function will return false. Otherwise, if + * should_trunc is true, the input string will be truncated to fit. + * + * @param msg sbp_msg_measurement_point_t instance + * @param should_trunc Whether the input string should be truncated to fit + * @param n_written If not null, on success will be set to the number of bytes + * written to msg + * @param fmt printf style format string + * @return true on success, false otherwise + */ +SBP_EXPORT bool sbp_msg_measurement_point_func_append_printf( + sbp_msg_measurement_point_t *msg, bool should_trunc, size_t *n_written, + const char *fmt, ...) SBP_ATTR_FORMAT(4, 5); + +/** + * Append sbp_msg_measurement_point_t::func with printf style formatting + * + * Identical to #sbp_msg_measurement_point_func_append_printf except it takes a + * va_list argument + * + * @param msg sbp_msg_measurement_point_t instance + * @param should_trunc Whether the input string should be truncated to fit + * @param n_written If not null, on success will be set to the number of bytes + * written to msg + * @param fmt printf style format string + * @param ap Argument list + * @return true on success, false otherwise + */ +SBP_EXPORT bool sbp_msg_measurement_point_func_append_vprintf( + sbp_msg_measurement_point_t *msg, bool should_trunc, size_t *n_written, + const char *fmt, va_list ap) SBP_ATTR_VFORMAT(4); + +/** + * Obtain the string value from sbp_msg_measurement_point_t::func + * + * @param msg sbp_msg_measurement_point_t instance + * @return String contents + */ +SBP_EXPORT const char *sbp_msg_measurement_point_func_get( + const sbp_msg_measurement_point_t *msg); + +/** + * Obtain the length of sbp_msg_measurement_point_t::func + * + * The returned value does not include the NULL terminator. + * + * @param msg sbp_msg_measurement_point_t instance + * @return Length of string + */ +SBP_EXPORT size_t +sbp_msg_measurement_point_func_strlen(const sbp_msg_measurement_point_t *msg); + +/** + * Get encoded size of an instance of sbp_msg_measurement_point_t + * + * @param msg sbp_msg_measurement_point_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_measurement_point_encoded_len( + const sbp_msg_measurement_point_t *msg) { + return SBP_MSG_MEASUREMENT_POINT_ENCODED_OVERHEAD + + sbp_msg_measurement_point_func_encoded_len(msg); +} + +/** + * Encode an instance of sbp_msg_measurement_point_t to wire representation + * + * This function encodes the given instance in to the user provided buffer. The + * buffer provided to this function must be large enough to store the encoded + * message otherwise it will return SBP_ENCODE_ERROR without writing anything to + * the buffer. + * + * Specify the length of the destination buffer in the \p len parameter. If + * non-null the number of bytes written to the buffer will be returned in \p + * n_written. + * + * @param buf Destination buffer + * @param len Length of \p buf + * @param n_written If not null, on success will be set to the number of bytes + * written to \p buf + * @param msg Instance of sbp_msg_measurement_point_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 +sbp_msg_measurement_point_encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_measurement_point_t *msg); + +/** + * Decode an instance of sbp_msg_measurement_point_t from wire representation + * + * This function decodes the wire representation of a + * sbp_msg_measurement_point_t message to the given instance. The caller must + * specify the length of the buffer in the \p len parameter. If non-null the + * number of bytes read from the buffer will be returned in \p n_read. + * + * @param buf Wire representation of the sbp_msg_measurement_point_t instance + * @param len Length of \p buf + * @param n_read If not null, on success will be set to the number of bytes read + * from \p buf + * @param msg Destination + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_measurement_point_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_measurement_point_t *msg); +/** + * Send an instance of sbp_msg_measurement_point_t with the given write function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_measurement_point_t + * + * The given message will be encoded to wire representation and passed in to the + * given write function callback. The write callback will be called several + * times for each invocation of this function. + * + * @param s SBP state + * @param sender_id SBP sender id + * @param msg Message to send + * @param write Write function + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_measurement_point_send( + sbp_state_t *s, u16 sender_id, const sbp_msg_measurement_point_t *msg, + sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_measurement_point_t + * + * The two instances will be compared and a value returned consistent with the + * return codes of comparison functions from the C standard library + * + * 0 will be returned if \p a and \p b are considered equal + * A value less than 0 will be returned if \p a is considered to be less than \p + * b A value greater than 0 will be returned if \p b is considered to be greater + * than \p b + * + * @param a sbp_msg_measurement_point_t instance + * @param b sbp_msg_measurement_point_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_measurement_point_cmp( + const sbp_msg_measurement_point_t *a, const sbp_msg_measurement_point_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_msg_measurement_point_t &lhs, + const sbp_msg_measurement_point_t &rhs) { + return sbp_msg_measurement_point_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_msg_measurement_point_t &lhs, + const sbp_msg_measurement_point_t &rhs) { + return sbp_msg_measurement_point_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_msg_measurement_point_t &lhs, + const sbp_msg_measurement_point_t &rhs) { + return sbp_msg_measurement_point_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_msg_measurement_point_t &lhs, + const sbp_msg_measurement_point_t &rhs) { + return sbp_msg_measurement_point_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_msg_measurement_point_t &lhs, + const sbp_msg_measurement_point_t &rhs) { + return sbp_msg_measurement_point_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_msg_measurement_point_t &lhs, + const sbp_msg_measurement_point_t &rhs) { + return sbp_msg_measurement_point_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_PROFILING_MSG_MEASUREMENT_POINT_H */ diff --git a/c/include/libsbp/profiling_macros.h b/c/include/libsbp/profiling_macros.h new file mode 100644 index 0000000000..fa418c76e0 --- /dev/null +++ b/c/include/libsbp/profiling_macros.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/profiling.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_PROFILING_MACROS_H +#define LIBSBP_PROFILING_MACROS_H + +#define SBP_MSG_MEASUREMENT_POINT 0xCF00 +/** + * The maximum number of items that can be stored in + * sbp_msg_measurement_point_t::func (V4 API) or msg_measurement_point_t::func + * (legacy API) before the maximum SBP message size is exceeded + */ +#define SBP_MSG_MEASUREMENT_POINT_FUNC_MAX 215u + +/** + * Encoded length of sbp_msg_measurement_point_t (V4 API) and + * msg_measurement_point_t (legacy API) + * + * This type is not fixed size and an instance of this message may be longer + * than the value indicated by this symbol. Users of the V4 API should call + * #sbp_msg_measurement_point_encoded_len to determine the actual size of an + * instance of this message. Users of the legacy API are required to track the + * encoded message length when interacting with the legacy type. + * + * See the documentation for libsbp for more details regarding the message + * structure and its variable length component(s) + */ +#define SBP_MSG_MEASUREMENT_POINT_ENCODED_OVERHEAD 40u + +#endif /* LIBSBP_PROFILING_MACROS_H */ diff --git a/c/include/libsbp/sbp_msg.h b/c/include/libsbp/sbp_msg.h index a060303f9f..cd7b589dd9 100644 --- a/c/include/libsbp/sbp_msg.h +++ b/c/include/libsbp/sbp_msg.h @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -176,6 +177,7 @@ typedef union { sbp_msg_mag_raw_t mag_raw; sbp_msg_mask_satellite_dep_t mask_satellite_dep; sbp_msg_mask_satellite_t mask_satellite; + sbp_msg_measurement_point_t measurement_point; sbp_msg_measurement_state_t measurement_state; sbp_msg_nap_device_dna_req_t nap_device_dna_req; sbp_msg_nap_device_dna_resp_t nap_device_dna_resp; @@ -635,6 +637,9 @@ static inline s8 sbp_message_encode(uint8_t *buf, uint8_t len, case SbpMsgMaskSatellite: return sbp_msg_mask_satellite_encode(buf, len, n_written, &msg->mask_satellite); + case SbpMsgMeasurementPoint: + return sbp_msg_measurement_point_encode(buf, len, n_written, + &msg->measurement_point); case SbpMsgMeasurementState: return sbp_msg_measurement_state_encode(buf, len, n_written, &msg->measurement_state); @@ -1290,6 +1295,9 @@ static inline s8 sbp_message_decode(const uint8_t *buf, uint8_t len, case SbpMsgMaskSatellite: return sbp_msg_mask_satellite_decode(buf, len, n_read, &msg->mask_satellite); + case SbpMsgMeasurementPoint: + return sbp_msg_measurement_point_decode(buf, len, n_read, + &msg->measurement_point); case SbpMsgMeasurementState: return sbp_msg_measurement_state_decode(buf, len, n_read, &msg->measurement_state); @@ -1873,6 +1881,8 @@ static inline size_t sbp_message_encoded_len(sbp_msg_type_t msg_type, return sbp_msg_mask_satellite_dep_encoded_len(&msg->mask_satellite_dep); case SbpMsgMaskSatellite: return sbp_msg_mask_satellite_encoded_len(&msg->mask_satellite); + case SbpMsgMeasurementPoint: + return sbp_msg_measurement_point_encoded_len(&msg->measurement_point); case SbpMsgMeasurementState: return sbp_msg_measurement_state_encoded_len(&msg->measurement_state); case SbpMsgNapDeviceDnaReq: @@ -2455,6 +2465,9 @@ static inline int sbp_message_cmp(sbp_msg_type_t msg_type, const sbp_msg_t *a, &b->mask_satellite_dep); case SbpMsgMaskSatellite: return sbp_msg_mask_satellite_cmp(&a->mask_satellite, &b->mask_satellite); + case SbpMsgMeasurementPoint: + return sbp_msg_measurement_point_cmp(&a->measurement_point, + &b->measurement_point); case SbpMsgMeasurementState: return sbp_msg_measurement_state_cmp(&a->measurement_state, &b->measurement_state); diff --git a/c/include/libsbp/sbp_msg_type.h b/c/include/libsbp/sbp_msg_type.h index ce77c28ef5..b582a78a9b 100644 --- a/c/include/libsbp/sbp_msg_type.h +++ b/c/include/libsbp/sbp_msg_type.h @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -170,6 +171,7 @@ typedef enum { SbpMsgMagRaw = SBP_MSG_MAG_RAW, SbpMsgMaskSatelliteDep = SBP_MSG_MASK_SATELLITE_DEP, SbpMsgMaskSatellite = SBP_MSG_MASK_SATELLITE, + SbpMsgMeasurementPoint = SBP_MSG_MEASUREMENT_POINT, SbpMsgMeasurementState = SBP_MSG_MEASUREMENT_STATE, SbpMsgNapDeviceDnaReq = SBP_MSG_NAP_DEVICE_DNA_REQ, SbpMsgNapDeviceDnaResp = SBP_MSG_NAP_DEVICE_DNA_RESP, @@ -528,6 +530,8 @@ static inline const char *sbp_msg_type_to_string(sbp_msg_type_t msg_type) { return "MSG_MASK_SATELLITE_DEP"; case SbpMsgMaskSatellite: return "MSG_MASK_SATELLITE"; + case SbpMsgMeasurementPoint: + return "MSG_MEASUREMENT_POINT"; case SbpMsgMeasurementState: return "MSG_MEASUREMENT_STATE"; case SbpMsgNapDeviceDnaReq: diff --git a/c/include/libsbp/v4/profiling.h b/c/include/libsbp/v4/profiling.h new file mode 100644 index 0000000000..3897b5990e --- /dev/null +++ b/c/include/libsbp/v4/profiling.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/ + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_PROFILING_MESSAGES_H +#define LIBSBP_PROFILING_MESSAGES_H + +#include + +SBP_MESSAGE( + "SBP message definitions have moved. To continue using these types include " + "`libsbp/profiling.h instead. Access to SBP types via this header file " + " will be removed in version 6.") + +#include + +#endif /* LIBSBP_PROFILING_MESSAGES_H */ \ No newline at end of file diff --git a/c/src/CMakeLists.txt b/c/src/CMakeLists.txt index dc42729978..8408832087 100644 --- a/c/src/CMakeLists.txt +++ b/c/src/CMakeLists.txt @@ -24,6 +24,7 @@ set(libsbp_SRCS observation.c orientation.c piksi.c + profiling.c sbas.c settings.c signing.c diff --git a/c/src/include/libsbp/internal/profiling.h b/c/src/include/libsbp/internal/profiling.h new file mode 100644 index 0000000000..51c02e3918 --- /dev/null +++ b/c/src/include/libsbp/internal/profiling.h @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/profiling.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_INTERNAL_V4_PROFILING_H +#define LIBSBP_INTERNAL_V4_PROFILING_H + +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Internal function to encode an SBP type to a buffer + * + * @param ctx Encode context + * @param msg SBP type instance + * @return true on success, false otherwise + */ +bool sbp_msg_measurement_point_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_measurement_point_t *msg); + +/** + * Internal function to decode an SBP type from a buffer + * + * @param ctx Decode context + * @param msg SBP type instance + * @return true on success, false otherwise + */ +bool sbp_msg_measurement_point_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_measurement_point_t *msg); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSBP_INTERNAL_V4_PROFILING_H */ diff --git a/c/src/profiling.c b/c/src/profiling.c new file mode 100644 index 0000000000..89e07fbd89 --- /dev/null +++ b/c/src/profiling.c @@ -0,0 +1,277 @@ +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/profiling.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void sbp_msg_measurement_point_func_init(sbp_msg_measurement_point_t *msg) { + sbp_null_terminated_string_init(&msg->func); +} + +bool sbp_msg_measurement_point_func_valid( + const sbp_msg_measurement_point_t *msg) { + return sbp_null_terminated_string_valid(&msg->func, + SBP_MSG_MEASUREMENT_POINT_FUNC_MAX); +} + +int sbp_msg_measurement_point_func_strcmp( + const sbp_msg_measurement_point_t *a, + const sbp_msg_measurement_point_t *b) { + return sbp_null_terminated_string_strcmp(&a->func, &b->func, + SBP_MSG_MEASUREMENT_POINT_FUNC_MAX); +} + +size_t sbp_msg_measurement_point_func_encoded_len( + const sbp_msg_measurement_point_t *msg) { + return sbp_null_terminated_string_encoded_len( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX); +} + +size_t sbp_msg_measurement_point_func_space_remaining( + const sbp_msg_measurement_point_t *msg) { + return sbp_null_terminated_string_space_remaining( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX); +} +bool sbp_msg_measurement_point_func_set(sbp_msg_measurement_point_t *msg, + const char *new_str, bool should_trunc, + size_t *n_written) { + return sbp_null_terminated_string_set(&msg->func, + SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, + should_trunc, n_written, new_str); +} + +bool sbp_msg_measurement_point_func_set_raw(sbp_msg_measurement_point_t *msg, + const char *new_buf, + size_t new_buf_len, + bool should_trunc, + size_t *n_written) { + return sbp_null_terminated_string_set_raw( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, should_trunc, n_written, + new_buf, new_buf_len); +} + +bool sbp_msg_measurement_point_func_printf(sbp_msg_measurement_point_t *msg, + bool should_trunc, size_t *n_written, + const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + bool ret = sbp_null_terminated_string_vprintf( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, should_trunc, n_written, + fmt, ap); + va_end(ap); + return ret; +} + +bool sbp_msg_measurement_point_func_vprintf(sbp_msg_measurement_point_t *msg, + bool should_trunc, + size_t *n_written, const char *fmt, + va_list ap) { + return sbp_null_terminated_string_vprintf(&msg->func, + SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, + should_trunc, n_written, fmt, ap); +} + +bool sbp_msg_measurement_point_func_append_printf( + sbp_msg_measurement_point_t *msg, bool should_trunc, size_t *n_written, + const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + bool ret = sbp_null_terminated_string_append_vprintf( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, should_trunc, n_written, + fmt, ap); + va_end(ap); + return ret; +} + +bool sbp_msg_measurement_point_func_append_vprintf( + sbp_msg_measurement_point_t *msg, bool should_trunc, size_t *n_written, + const char *fmt, va_list ap) { + return sbp_null_terminated_string_append_vprintf( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, should_trunc, n_written, + fmt, ap); +} + +const char *sbp_msg_measurement_point_func_get( + const sbp_msg_measurement_point_t *msg) { + return sbp_null_terminated_string_get(&msg->func, + SBP_MSG_MEASUREMENT_POINT_FUNC_MAX); +} + +size_t sbp_msg_measurement_point_func_strlen( + const sbp_msg_measurement_point_t *msg) { + return sbp_null_terminated_string_strlen(&msg->func, + SBP_MSG_MEASUREMENT_POINT_FUNC_MAX); +} + +bool sbp_msg_measurement_point_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_measurement_point_t *msg) { + if (!sbp_u32_encode(ctx, &msg->total_time)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->num_executions)) { + return false; + } + if (!sbp_u32_encode(ctx, &msg->min)) { + return false; + } + if (!sbp_u32_encode(ctx, &msg->max)) { + return false; + } + if (!sbp_u64_encode(ctx, &msg->return_addr)) { + return false; + } + if (!sbp_u64_encode(ctx, &msg->id)) { + return false; + } + if (!sbp_u64_encode(ctx, &msg->slice_time)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->line)) { + return false; + } + if (!sbp_null_terminated_string_encode( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, ctx)) { + return false; + } + return true; +} + +s8 sbp_msg_measurement_point_encode(uint8_t *buf, uint8_t len, + uint8_t *n_written, + const sbp_msg_measurement_point_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_measurement_point_encode_internal(&ctx, msg)) { + return SBP_ENCODE_ERROR; + } + if (n_written != NULL) { + *n_written = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +bool sbp_msg_measurement_point_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_measurement_point_t *msg) { + if (!sbp_u32_decode(ctx, &msg->total_time)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->num_executions)) { + return false; + } + if (!sbp_u32_decode(ctx, &msg->min)) { + return false; + } + if (!sbp_u32_decode(ctx, &msg->max)) { + return false; + } + if (!sbp_u64_decode(ctx, &msg->return_addr)) { + return false; + } + if (!sbp_u64_decode(ctx, &msg->id)) { + return false; + } + if (!sbp_u64_decode(ctx, &msg->slice_time)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->line)) { + return false; + } + if (!sbp_null_terminated_string_decode( + &msg->func, SBP_MSG_MEASUREMENT_POINT_FUNC_MAX, ctx)) { + return false; + } + return true; +} + +s8 sbp_msg_measurement_point_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_msg_measurement_point_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_measurement_point_decode_internal(&ctx, msg)) { + return SBP_DECODE_ERROR; + } + if (n_read != NULL) { + *n_read = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +s8 sbp_msg_measurement_point_send(sbp_state_t *s, u16 sender_id, + const sbp_msg_measurement_point_t *msg, + sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_measurement_point_encode(payload, sizeof(payload), + &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_internal_forward_payload(s, SBP_MSG_MEASUREMENT_POINT, sender_id, + payload_len, payload, write); +} + +int sbp_msg_measurement_point_cmp(const sbp_msg_measurement_point_t *a, + const sbp_msg_measurement_point_t *b) { + int ret = 0; + + ret = sbp_u32_cmp(&a->total_time, &b->total_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->num_executions, &b->num_executions); + if (ret != 0) { + return ret; + } + + ret = sbp_u32_cmp(&a->min, &b->min); + if (ret != 0) { + return ret; + } + + ret = sbp_u32_cmp(&a->max, &b->max); + if (ret != 0) { + return ret; + } + + ret = sbp_u64_cmp(&a->return_addr, &b->return_addr); + if (ret != 0) { + return ret; + } + + ret = sbp_u64_cmp(&a->id, &b->id); + if (ret != 0) { + return ret; + } + + ret = sbp_u64_cmp(&a->slice_time, &b->slice_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->line, &b->line); + if (ret != 0) { + return ret; + } + + ret = sbp_msg_measurement_point_func_strcmp(a, b); + return ret; +} diff --git a/c/test/auto_check_sbp_profiling_MsgMeasurementPoint.c b/c/test/auto_check_sbp_profiling_MsgMeasurementPoint.c new file mode 100644 index 0000000000..f90f4c642a --- /dev/null +++ b/c/test/auto_check_sbp_profiling_MsgMeasurementPoint.c @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/profiling/test_MsgMeasurementPoint.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include // for debugging +#include // for malloc + +static struct { + u32 n_callbacks_logged; + u16 sender_id; + sbp_msg_type_t msg_type; + sbp_msg_t msg; + void *context; +} last_msg; + +static u32 dummy_wr = 0; +static u32 dummy_rd = 0; +static u8 dummy_buff[1024]; +static void *last_io_context; + +static void *DUMMY_MEMORY_FOR_CALLBACKS = (void *)0xdeadbeef; +static void *DUMMY_MEMORY_FOR_IO = (void *)0xdead0000; + +static void dummy_reset() { + dummy_rd = dummy_wr = 0; + memset(dummy_buff, 0, sizeof(dummy_buff)); +} + +static s32 dummy_write(u8 *buff, u32 n, void *context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(dummy_buff + dummy_wr, buff, real_n); + dummy_wr += real_n; + return (s32)real_n; +} + +static s32 dummy_read(u8 *buff, u32 n, void *context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(buff, dummy_buff + dummy_rd, real_n); + dummy_rd += real_n; + return (s32)real_n; +} + +static void logging_reset() { memset(&last_msg, 0, sizeof(last_msg)); } + +static void msg_callback(u16 sender_id, sbp_msg_type_t msg_type, + const sbp_msg_t *msg, void *context) { + last_msg.n_callbacks_logged++; + last_msg.sender_id = sender_id; + last_msg.msg_type = msg_type; + last_msg.msg = *msg; + last_msg.context = context; +} + +START_TEST(test_auto_check_sbp_profiling_MsgMeasurementPoint) { + static sbp_msg_callbacks_node_t n; + + // State of the SBP message parser. + // Must be statically allocated. + sbp_state_t sbp_state; + + // + // Run tests: + // + // Test successful parsing of a message + { + // SBP parser state must be initialized before sbp_process is called. + // We re-initialize before every test so that callbacks for the same message + // types can be + // allocated multiple times across different tests. + sbp_state_init(&sbp_state); + + sbp_state_set_io_context(&sbp_state, &DUMMY_MEMORY_FOR_IO); + + logging_reset(); + + sbp_callback_register(&sbp_state, 0xCF00, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 0, 207, 0, 16, 48, 250, 7, 0, 0, 180, 0, 2, 0, + 0, 0, 40, 0, 0, 0, 130, 201, 148, 141, 97, 85, 0, 0, + 18, 130, 201, 148, 0, 0, 0, 0, 66, 64, 157, 15, 0, 0, + 0, 0, 18, 0, 114, 111, 117, 116, 101, 40, 41, 0, 212, 165, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + size_t written; + ck_assert_msg(sbp_msg_measurement_point_func_set( + &test_msg.measurement_point, "route()", false, &written), + "Can't assign text"); + ck_assert_msg(written == strlen("route()"), "Wrote different to expected"); + ck_assert_msg(sbp_msg_measurement_point_func_encoded_len( + &test_msg.measurement_point) == 8, + "String not encoded properly"); + + test_msg.measurement_point.id = 2496234002; + + test_msg.measurement_point.line = 18; + + test_msg.measurement_point.max = 40; + + test_msg.measurement_point.min = 2; + + test_msg.measurement_point.num_executions = 180; + + test_msg.measurement_point.return_addr = 93877475527042; + + test_msg.measurement_point.slice_time = 261963842; + + test_msg.measurement_point.total_time = 2042; + + sbp_message_send(&sbp_state, SbpMsgMeasurementPoint, 4096, &test_msg, + &dummy_write); + + ck_assert_msg(dummy_wr == sizeof(encoded_frame), + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); + ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, + "frame was not encoded properly"); + + while (dummy_rd < dummy_wr) { + ck_assert_msg(sbp_process(&sbp_state, &dummy_read) >= SBP_OK, + "sbp_process threw an error!"); + } + + ck_assert_msg(last_msg.n_callbacks_logged == 1, + "msg_callback: one callback should have been logged"); + ck_assert_msg(last_msg.sender_id == 4096, + "msg_callback: sender_id decoded incorrectly"); + + ck_assert_msg( + sbp_message_cmp(SbpMsgMeasurementPoint, &last_msg.msg, &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg(sbp_msg_measurement_point_func_encoded_len( + &last_msg.msg.measurement_point) == 8, + "Invalid encoded len"); + ck_assert_msg(strcmp(sbp_msg_measurement_point_func_get( + &last_msg.msg.measurement_point), + "route()") == 0, + "String not decoded properly"); + + ck_assert_msg(last_msg.msg.measurement_point.id == 2496234002, + "incorrect value for last_msg.msg.measurement_point.id, " + "expected 2496234002, is %d", + last_msg.msg.measurement_point.id); + + ck_assert_msg(last_msg.msg.measurement_point.line == 18, + "incorrect value for last_msg.msg.measurement_point.line, " + "expected 18, is %d", + last_msg.msg.measurement_point.line); + + ck_assert_msg(last_msg.msg.measurement_point.max == 40, + "incorrect value for last_msg.msg.measurement_point.max, " + "expected 40, is %d", + last_msg.msg.measurement_point.max); + + ck_assert_msg(last_msg.msg.measurement_point.min == 2, + "incorrect value for last_msg.msg.measurement_point.min, " + "expected 2, is %d", + last_msg.msg.measurement_point.min); + + ck_assert_msg( + last_msg.msg.measurement_point.num_executions == 180, + "incorrect value for last_msg.msg.measurement_point.num_executions, " + "expected 180, is %d", + last_msg.msg.measurement_point.num_executions); + + ck_assert_msg( + last_msg.msg.measurement_point.return_addr == 93877475527042, + "incorrect value for last_msg.msg.measurement_point.return_addr, " + "expected 93877475527042, is %d", + last_msg.msg.measurement_point.return_addr); + + ck_assert_msg( + last_msg.msg.measurement_point.slice_time == 261963842, + "incorrect value for last_msg.msg.measurement_point.slice_time, " + "expected 261963842, is %d", + last_msg.msg.measurement_point.slice_time); + + ck_assert_msg( + last_msg.msg.measurement_point.total_time == 2042, + "incorrect value for last_msg.msg.measurement_point.total_time, " + "expected 2042, is %d", + last_msg.msg.measurement_point.total_time); + } +} +END_TEST + +Suite *auto_check_sbp_profiling_MsgMeasurementPoint_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: auto_check_sbp_profiling_MsgMeasurementPoint"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_profiling_MsgMeasurementPoint"); + tcase_add_test(tc_acq, test_auto_check_sbp_profiling_MsgMeasurementPoint); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/check_main.c b/c/test/check_main.c index b063512969..cc8ec63e00 100644 --- a/c/test/check_main.c +++ b/c/test/check_main.c @@ -202,6 +202,7 @@ int main(void) { srunner_add_suite(sr, auto_check_sbp_piksi_MsgThreadState_suite()); srunner_add_suite(sr, auto_check_sbp_piksi_MsgUartState_suite()); srunner_add_suite(sr, auto_check_sbp_piksi_MsgUartStateDepA_suite()); + srunner_add_suite(sr, auto_check_sbp_profiling_MsgMeasurementPoint_suite()); srunner_add_suite(sr, auto_check_sbp_sbas_MsgSbasRaw_suite()); srunner_add_suite(sr, auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite()); diff --git a/c/test/check_main_legacy.c b/c/test/check_main_legacy.c index f4fb8360da..8dae8e9830 100644 --- a/c/test/check_main_legacy.c +++ b/c/test/check_main_legacy.c @@ -280,6 +280,8 @@ int main(void) { srunner_add_suite(sr, legacy_auto_check_sbp_piksi_MsgThreadState_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_piksi_MsgUartState_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_piksi_MsgUartStateDepA_suite()); + srunner_add_suite( + sr, legacy_auto_check_sbp_profiling_MsgMeasurementPoint_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_sbas_MsgSbasRaw_suite()); srunner_add_suite( sr, legacy_auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite()); diff --git a/c/test/check_suites.h b/c/test/check_suites.h index 46ab46b4da..e712b6f95d 100644 --- a/c/test/check_suites.h +++ b/c/test/check_suites.h @@ -181,6 +181,7 @@ Suite* auto_check_sbp_piksi_MsgSpecanDep_suite(void); Suite* auto_check_sbp_piksi_MsgThreadState_suite(void); Suite* auto_check_sbp_piksi_MsgUartState_suite(void); Suite* auto_check_sbp_piksi_MsgUartStateDepA_suite(void); +Suite* auto_check_sbp_profiling_MsgMeasurementPoint_suite(void); Suite* auto_check_sbp_sbas_MsgSbasRaw_suite(void); Suite* auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite(void); Suite* auto_check_sbp_settings_MsgSettingsReadByIndexReq_suite(void); diff --git a/c/test/check_suites_legacy.h b/c/test/check_suites_legacy.h index 6e091a8f5c..ef78f9cfdd 100644 --- a/c/test/check_suites_legacy.h +++ b/c/test/check_suites_legacy.h @@ -182,6 +182,7 @@ Suite* legacy_auto_check_sbp_piksi_MsgSpecanDep_suite(void); Suite* legacy_auto_check_sbp_piksi_MsgThreadState_suite(void); Suite* legacy_auto_check_sbp_piksi_MsgUartState_suite(void); Suite* legacy_auto_check_sbp_piksi_MsgUartStateDepA_suite(void); +Suite* legacy_auto_check_sbp_profiling_MsgMeasurementPoint_suite(void); Suite* legacy_auto_check_sbp_sbas_MsgSbasRaw_suite(void); Suite* legacy_auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite(void); Suite* legacy_auto_check_sbp_settings_MsgSettingsReadByIndexReq_suite(void); diff --git a/c/test/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc b/c/test/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc new file mode 100644 index 0000000000..b9defbb113 --- /dev/null +++ b/c/test/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc @@ -0,0 +1,994 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/profiling/test_MsgMeasurementPoint.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include + +namespace { + +template +void assign(T &dest, const U &source) { + dest = static_cast(source); +} +class Testauto_check_sbp_profiling_MsgMeasurementPoint0 + : public ::testing::Test { + public: + Testauto_check_sbp_profiling_MsgMeasurementPoint0() { + size_t written; + EXPECT_TRUE(sbp_msg_measurement_point_func_set(&test_msg_, "route()", false, + &written)); + EXPECT_EQ(written, strlen("route()")); + EXPECT_EQ(sbp_msg_measurement_point_func_encoded_len(&test_msg_), 8); + assign(test_msg_.id, 2496234002); + assign(test_msg_.line, 18); + assign(test_msg_.max, 40); + assign(test_msg_.min, 2); + assign(test_msg_.num_executions, 180); + assign(test_msg_.return_addr, 93877475527042); + assign(test_msg_.slice_time, 261963842); + assign(test_msg_.total_time, 2042); + } + + class SlowReader final : public sbp::IReader { + public: + SlowReader(const uint8_t *buf, uint32_t len) + : sbp::IReader(), buf_{buf}, len_{len} {} + + s32 read(uint8_t *buf, const uint32_t n) override { + if (n == 0) { + return 0; + } + if (remaining() == 0) { + return -1; + } + skip_next_read = !skip_next_read; + if (skip_next_read) { + return 0; + } + uint32_t real_n = std::min(n, 1u); + memcpy(buf, buf_ + offset_, real_n); + offset_ += real_n; + return static_cast(real_n); + } + + uint32_t remaining() const noexcept { return len_ - offset_; } + + static s32 read_static(uint8_t *buf, uint32_t len, void *ctx) { + return static_cast(ctx)->read(buf, len); + } + + private: + const uint8_t *buf_; + uint32_t len_; + uint32_t offset_{}; + bool skip_next_read{}; + }; + + class Reader final : public sbp::IReader { + public: + Reader(const uint8_t *buf, uint32_t len) + : sbp::IReader(), buf_{buf}, len_{len} {} + + s32 read(uint8_t *buf, const uint32_t n) override { + if (n == 0) { + return 0; + } + uint32_t real_n = std::min(n, remaining()); + if (real_n == 0) { + return -1; + } + memcpy(buf, buf_ + offset_, real_n); + offset_ += real_n; + return static_cast(real_n); + } + + uint32_t remaining() const noexcept { return len_ - offset_; } + + static s32 read_static(uint8_t *buf, uint32_t len, void *ctx) { + return static_cast(ctx)->read(buf, len); + } + + private: + const uint8_t *buf_; + uint32_t len_; + uint32_t offset_{}; + }; + + class SlowWriter final : public sbp::IWriter { + public: + explicit SlowWriter(uint32_t max_len = cMaxLen) + : IWriter(), max_len_{max_len} {} + static constexpr uint32_t cMaxLen = SBP_MAX_FRAME_LEN; + + s32 write(const uint8_t *buf, uint32_t n) override { + if (n == 0) { + return 0; + } + uint32_t real_n = std::min(n, 1u); + if (real_n == 0) { + return -1; + } + memcpy(buf_ + offset_, buf, real_n); + offset_ += real_n; + return static_cast(real_n); + } + + uint32_t remaining() const noexcept { return max_len_ - offset_; } + + const uint8_t *data() const noexcept { return buf_; } + + uint32_t len() const noexcept { return offset_; } + + static s32 write_static(const uint8_t *buf, uint32_t len, void *ctx) { + return static_cast(ctx)->write(buf, len); + } + + static s32 write_c(uint8_t *buf, uint32_t len, void *ctx) { + return static_cast(ctx)->write(buf, len); + } + + private: + uint8_t buf_[cMaxLen]; + uint32_t max_len_; + uint32_t offset_{}; + }; + + class Writer final : public sbp::IWriter { + public: + explicit Writer(uint32_t max_len = cMaxLen) + : IWriter(), max_len_{max_len} {} + static constexpr uint32_t cMaxLen = SBP_MAX_FRAME_LEN; + + s32 write(const uint8_t *buf, uint32_t n) override { + if (n == 0) { + return 0; + } + uint32_t real_n = std::min(n, remaining()); + if (real_n == 0) { + return -1; + } + memcpy(buf_ + offset_, buf, real_n); + offset_ += real_n; + return static_cast(real_n); + } + + uint32_t remaining() const noexcept { return max_len_ - offset_; } + + const uint8_t *data() const noexcept { return buf_; } + + uint32_t len() const noexcept { return offset_; } + + static s32 write_static(const uint8_t *buf, uint32_t len, void *ctx) { + return static_cast(ctx)->write(buf, len); + } + + static s32 write_c(uint8_t *buf, uint32_t len, void *ctx) { + return static_cast(ctx)->write(buf, len); + } + + private: + uint8_t buf_[cMaxLen]; + uint32_t max_len_; + uint32_t offset_{}; + }; + + struct CppHandler final + : public sbp::MessageHandler { + using sbp::MessageHandler::MessageHandler; + + struct Output final { + uint16_t sender_id; + sbp_msg_measurement_point_t msg; + }; + + std::vector outputs{}; + + protected: + void handle_sbp_msg(uint16_t sender_id, + const sbp_msg_measurement_point_t &msg) override { + outputs.emplace_back(); + outputs.back().sender_id = sender_id; + memcpy(&outputs.back().msg, &msg, sizeof(msg)); + } + }; + + struct CHandler final { + explicit CHandler(sbp_state_t *state) : state_{state} { + sbp_callback_register(state, SbpMsgMeasurementPoint, + &CHandler::callback_static, this, &node_); + } + + ~CHandler() { sbp_remove_callback(state_, &node_); } + + struct Output final { + uint16_t sender_id; + sbp_msg_measurement_point_t msg; + }; + + std::vector outputs{}; + + private: + void callback(uint16_t sender_id, sbp_msg_type_t msg_type, + const sbp_msg_t *msg) { + ASSERT_EQ(msg_type, SbpMsgMeasurementPoint); + outputs.emplace_back(); + outputs.back().sender_id = sender_id; + memcpy(&outputs.back().msg, &msg->measurement_point, + sizeof(msg->measurement_point)); + } + + static void callback_static(uint16_t sender_id, sbp_msg_type_t msg_type, + const sbp_msg_t *msg, void *ctx) { + static_cast(ctx)->callback(sender_id, msg_type, msg); + } + + sbp_msg_callbacks_node_t node_{}; + sbp_state_t *state_; + }; + + struct TestMsgInfo { + sbp_msg_measurement_point_t test_msg; + sbp_msg_t test_msg_wrapped; + sbp_msg_type_t msg_type; + uint16_t sender_id; + uint8_t preamble; + uint16_t crc; + const uint8_t *encoded_frame; + uint32_t frame_len; + const uint8_t *encoded_payload; + uint8_t payload_len; + + Reader get_frame_reader() const noexcept { + return Reader{encoded_frame, frame_len}; + } + + Reader get_frame_reader(uint32_t max) const noexcept { + assert(max <= frame_len); + return Reader{encoded_frame, max}; + } + + SlowReader get_slow_frame_reader() const noexcept { + return SlowReader{encoded_frame, frame_len}; + } + + Writer get_frame_writer() const noexcept { return Writer{frame_len}; } + + Writer get_frame_writer(uint32_t max) const noexcept { return Writer{max}; } + + SlowWriter get_slow_frame_writer() const noexcept { + return SlowWriter{frame_len}; + } + }; + + TestMsgInfo get_test_msg_info() const noexcept { + TestMsgInfo info; + memcpy(&info.test_msg, &test_msg_, sizeof(test_msg_)); + memcpy(&info.test_msg_wrapped.measurement_point, &test_msg_, + sizeof(test_msg_)); + info.msg_type = static_cast(SbpMsgMeasurementPoint); + info.sender_id = 4096; + info.preamble = 0x55; + info.crc = 0xa5d4; + info.encoded_frame = encoded_frame_; + info.frame_len = sizeof(encoded_frame_); + info.encoded_payload = encoded_payload_; + info.payload_len = 48; + + return info; + } + + protected: + void comparison_tests(const sbp_msg_measurement_point_t &lesser, + const sbp_msg_measurement_point_t &greater) { + sbp_msg_t wrapped_lesser = + sbp::MessageTraits::to_sbp_msg(lesser); + sbp_msg_t wrapped_greater = + sbp::MessageTraits::to_sbp_msg(greater); + + EXPECT_EQ(sbp_msg_measurement_point_cmp(&lesser, &lesser), 0); + EXPECT_EQ(sbp_msg_measurement_point_cmp(&greater, &greater), 0); + EXPECT_LE(sbp_msg_measurement_point_cmp(&lesser, &greater), 0); + EXPECT_GT(sbp_msg_measurement_point_cmp(&greater, &lesser), 0); + + EXPECT_EQ(sbp_message_cmp(SbpMsgMeasurementPoint, &wrapped_lesser, + &wrapped_lesser), + 0); + EXPECT_EQ(sbp_message_cmp(SbpMsgMeasurementPoint, &wrapped_greater, + &wrapped_greater), + 0); + EXPECT_LE(sbp_message_cmp(SbpMsgMeasurementPoint, &wrapped_lesser, + &wrapped_greater), + 0); + EXPECT_GT(sbp_message_cmp(SbpMsgMeasurementPoint, &wrapped_greater, + &wrapped_lesser), + 0); + + // lesser vs lesser + EXPECT_TRUE(lesser == lesser); + EXPECT_FALSE(lesser != lesser); + EXPECT_FALSE(lesser < lesser); + EXPECT_TRUE(lesser <= lesser); + EXPECT_FALSE(lesser > lesser); + EXPECT_TRUE(lesser >= lesser); + + // greater vs greater + EXPECT_TRUE(greater == greater); + EXPECT_FALSE(greater != greater); + EXPECT_FALSE(greater < greater); + EXPECT_TRUE(greater <= greater); + EXPECT_FALSE(greater > greater); + EXPECT_TRUE(greater >= greater); + + // lesser vs greater + EXPECT_FALSE(lesser == greater); + EXPECT_TRUE(lesser != greater); + EXPECT_TRUE(lesser < greater); + EXPECT_TRUE(lesser <= greater); + EXPECT_FALSE(lesser > greater); + EXPECT_FALSE(lesser >= greater); + + // greater vs lesser + EXPECT_FALSE(greater == lesser); + EXPECT_TRUE(greater != lesser); + EXPECT_FALSE(greater < lesser); + EXPECT_FALSE(greater <= lesser); + EXPECT_TRUE(greater > lesser); + EXPECT_TRUE(greater >= lesser); + } + + template ::value, bool> = true> + void make_lesser_greater(T &lesser, T &greater) { + if (greater == std::numeric_limits::max()) { + lesser--; + } else { + greater++; + } + } + + template ::value, bool> = true> + void make_lesser_greater(T &lesser, T &greater) { + (void)lesser; + greater += static_cast(1.0); + } + + void make_lesser_greater(sbp_string_t &lesser, sbp_string_t &greater) { + if (greater.data[0] == 'z') { + lesser.data[0]--; + } else { + greater.data[0]++; + } + } + + template + void make_lesser_greater(char (&lesser)[N], char (&greater)[N]) { + if (lesser[0] == 'z') { + lesser[0]--; + } else { + greater[0]++; + } + } + + private: + sbp_msg_measurement_point_t test_msg_{}; + uint8_t encoded_frame_[48 + 8] = { + 85, 0, 207, 0, 16, 48, 250, 7, 0, 0, 180, 0, 2, 0, + 0, 0, 40, 0, 0, 0, 130, 201, 148, 141, 97, 85, 0, 0, + 18, 130, 201, 148, 0, 0, 0, 0, 66, 64, 157, 15, 0, 0, + 0, 0, 18, 0, 114, 111, 117, 116, 101, 40, 41, 0, 212, 165, + }; + uint8_t encoded_payload_[48] = { + 250, 7, 0, 0, 180, 0, 2, 0, 0, 0, 40, 0, 0, 0, 130, 201, + 148, 141, 97, 85, 0, 0, 18, 130, 201, 148, 0, 0, 0, 0, 66, 64, + 157, 15, 0, 0, 0, 0, 18, 0, 114, 111, 117, 116, 101, 40, 41, 0, + }; +}; + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, EncodedLen) { + auto info = get_test_msg_info(); + EXPECT_EQ(sbp_msg_measurement_point_encoded_len(&info.test_msg), + info.payload_len); + + EXPECT_EQ( + sbp_message_encoded_len(SbpMsgMeasurementPoint, &info.test_msg_wrapped), + info.payload_len); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, EncodeToBuf) { + auto info = get_test_msg_info(); + uint8_t buf[48]; + uint8_t n_written; + + EXPECT_EQ(sbp_msg_measurement_point_encode(&buf[0], sizeof(buf), &n_written, + &info.test_msg), + SBP_OK); + EXPECT_EQ(n_written, 48); + EXPECT_EQ(memcmp(&buf[0], info.encoded_payload, 48), 0); + + memset(&buf[0], 0, sizeof(buf)); + EXPECT_EQ(sbp_message_encode(&buf[0], sizeof(buf), &n_written, + SbpMsgMeasurementPoint, &info.test_msg_wrapped), + SBP_OK); + EXPECT_EQ(n_written, 48); + EXPECT_EQ(memcmp(&buf[0], info.encoded_payload, 48), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + EncodeToBufWithoutNwritten) { + auto info = get_test_msg_info(); + uint8_t buf[48]; + + EXPECT_EQ(sbp_msg_measurement_point_encode(&buf[0], sizeof(buf), nullptr, + &info.test_msg), + SBP_OK); + EXPECT_EQ(memcmp(&buf[0], info.encoded_payload, 48), 0); +} +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + EncodedToBufUnderflow) { + auto info = get_test_msg_info(); + uint8_t buf[48]; + + for (uint8_t i = 0; i < 48; i++) { + EXPECT_EQ( + sbp_msg_measurement_point_encode(&buf[0], i, nullptr, &info.test_msg), + SBP_ENCODE_ERROR); + } +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, DecodeFromBuf) { + auto info = get_test_msg_info(); + sbp_msg_measurement_point_t msg{}; + uint8_t n_read; + + EXPECT_EQ(sbp_msg_measurement_point_decode(&info.encoded_payload[0], + info.payload_len, &n_read, &msg), + SBP_OK); + EXPECT_EQ(n_read, 48); + EXPECT_EQ(msg, info.test_msg); + + sbp_msg_t wrapped_msg{}; + EXPECT_EQ(sbp_message_decode(&info.encoded_payload[0], info.payload_len, + &n_read, SbpMsgMeasurementPoint, &wrapped_msg), + SBP_OK); + EXPECT_EQ(n_read, 48); + EXPECT_EQ(msg, info.test_msg); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + DecodeFromBufWithoutNread) { + auto info = get_test_msg_info(); + sbp_msg_measurement_point_t msg{}; + + EXPECT_EQ(sbp_msg_measurement_point_decode(&info.encoded_payload[0], + info.payload_len, nullptr, &msg), + SBP_OK); + EXPECT_EQ(msg, info.test_msg); +} +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + DecodeFromBufUnderflow) { + auto info = get_test_msg_info(); + sbp_msg_measurement_point_t msg{}; + + for (uint8_t i = 0; i < info.payload_len; i++) { + int expected_return = SBP_DECODE_ERROR; + size_t overhead = SBP_MSG_MEASUREMENT_POINT_ENCODED_OVERHEAD; + // size_t overhead = []()->size_t{sbp_msg_measurement_point_t t{}; return + // sbp_msg_measurement_point_encoded_len(&t); }(); + if (i >= overhead) { + expected_return = SBP_OK; + } + + EXPECT_EQ(sbp_msg_measurement_point_decode(&info.encoded_payload[0], i, + nullptr, &msg), + expected_return); + } +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + ReceiveThroughSbpState) { + auto info = get_test_msg_info(); + sbp_state_t state; + sbp_state_init(&state); + + auto reader = info.get_frame_reader(); + sbp_state_set_io_context(&state, &reader); + + CHandler handler{&state}; + + while (reader.remaining() > 0) { + EXPECT_GE(sbp_process(&state, &Reader::read_static), SBP_OK); + } + + EXPECT_EQ(handler.outputs.size(), 1); + EXPECT_EQ(handler.outputs[0].sender_id, info.sender_id); + EXPECT_EQ(handler.outputs[0].msg, info.test_msg); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + ReceiveThroughSbpStateUnderflow) { + auto info = get_test_msg_info(); + + for (uint32_t i = 0; i < info.frame_len; i++) { + sbp_state_t state; + sbp_state_init(&state); + + auto reader = info.get_frame_reader(i); + sbp_state_set_io_context(&state, &reader); + + CHandler handler(&state); + + int most_recent_return = sbp_process(&state, &Reader::read_static); + while (most_recent_return == SBP_OK || reader.remaining() > 0) { + most_recent_return = sbp_process(&state, &Reader::read_static); + } + + EXPECT_NE(most_recent_return, SBP_OK); + EXPECT_EQ(reader.remaining(), 0); + + EXPECT_EQ(handler.outputs.size(), 0); + } +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, SlowRead) { + auto info = get_test_msg_info(); + sbp_state_t state; + sbp_state_init(&state); + + auto reader = info.get_slow_frame_reader(); + sbp_state_set_io_context(&state, &reader); + + CHandler handler{&state}; + + while (reader.remaining() > 0) { + EXPECT_GE(sbp_process(&state, &SlowReader::read_static), SBP_OK); + } + + EXPECT_EQ(handler.outputs.size(), 1); + EXPECT_EQ(handler.outputs[0].sender_id, info.sender_id); + EXPECT_EQ(handler.outputs[0].msg, info.test_msg); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, BadCRC) { + auto info = get_test_msg_info(); + uint8_t buf[SBP_MAX_FRAME_LEN]; + memcpy(&buf[0], info.encoded_frame, info.frame_len); + + // Introduce a CRC error which should cause an error return and no callback + buf[info.frame_len - 1]++; + + sbp_state_t state; + sbp_state_init(&state); + + Reader reader{buf, info.frame_len}; + sbp_state_set_io_context(&state, &reader); + + CHandler handler{&state}; + + while (reader.remaining() > 0) { + int res = sbp_process(&state, &Reader::read_static); + EXPECT_EQ(res, reader.remaining() == 0 ? SBP_CRC_ERROR : SBP_OK); + } + + EXPECT_EQ(handler.outputs.size(), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, SendThroughSbpState) { + auto info = get_test_msg_info(); + sbp_state_t state; + sbp_state_init(&state); + + auto writer = info.get_frame_writer(); + sbp_state_set_io_context(&state, &writer); + + EXPECT_EQ(sbp_msg_measurement_point_send(&state, info.sender_id, + &info.test_msg, &Writer::write_c), + SBP_OK); + EXPECT_EQ(writer.len(), info.frame_len); + EXPECT_EQ(memcmp(writer.data(), &info.encoded_frame[0], writer.len()), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + SendWrappedThroughSbpState) { + auto info = get_test_msg_info(); + sbp_state_t state; + sbp_state_init(&state); + + auto writer = info.get_frame_writer(); + sbp_state_set_io_context(&state, &writer); + + EXPECT_EQ(sbp_message_send(&state, SbpMsgMeasurementPoint, info.sender_id, + &info.test_msg_wrapped, &Writer::write_c), + SBP_OK); + EXPECT_EQ(writer.len(), info.frame_len); + EXPECT_EQ(memcmp(writer.data(), info.encoded_frame, info.frame_len), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + SendThroughSbpStateUnderflow) { + auto info = get_test_msg_info(); + + for (uint32_t i = 0; i < info.frame_len; i++) { + sbp_state_t state; + sbp_state_init(&state); + + auto writer = info.get_frame_writer(i); + sbp_state_set_io_context(&state, &writer); + + EXPECT_NE(sbp_message_send(&state, SbpMsgMeasurementPoint, info.sender_id, + &info.test_msg_wrapped, &Writer::write_c), + SBP_OK); + EXPECT_EQ(writer.len(), i); + EXPECT_EQ(memcmp(writer.data(), info.encoded_frame, i), 0); + } +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, DISABLED_SlowWrite) { + auto info = get_test_msg_info(); + sbp_state_t state; + sbp_state_init(&state); + + auto writer = info.get_slow_frame_writer(); + sbp_state_set_io_context(&state, &writer); + + EXPECT_EQ(sbp_message_send(&state, SbpMsgMeasurementPoint, info.sender_id, + &info.test_msg_wrapped, &SlowWriter::write_c), + SBP_OK); + EXPECT_EQ(writer.len(), info.frame_len); + EXPECT_EQ(memcmp(writer.data(), info.encoded_frame, info.frame_len), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, Comparison) { + auto info = get_test_msg_info(); + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.func, greater.func); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.id, greater.id); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.line, greater.line); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.max, greater.max); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.min, greater.min); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.num_executions, greater.num_executions); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.return_addr, greater.return_addr); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.slice_time, greater.slice_time); + comparison_tests(lesser, greater); + } + { + sbp_msg_measurement_point_t lesser = info.test_msg; + sbp_msg_measurement_point_t greater = info.test_msg; + make_lesser_greater(lesser.total_time, greater.total_time); + comparison_tests(lesser, greater); + } +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, CppTraitsProperties) { + // EXPECT_EQ(sbp::MessageTraits::id, + // SbpMsgMeasurementPoint); + EXPECT_STREQ(sbp::MessageTraits::name, + "MSG_MEASUREMENT_POINT"); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + CppTraitsFromSbpMsgT) { + auto info = get_test_msg_info(); + + const sbp_msg_t &const_sbp_msg_t = info.test_msg_wrapped; + sbp_msg_t &non_const_sbp_msg_t = info.test_msg_wrapped; + + const sbp_msg_measurement_point_t &const_unwrapped = + sbp::MessageTraits::get(const_sbp_msg_t); + sbp_msg_measurement_point_t &non_const_unwrapped = + sbp::MessageTraits::get(non_const_sbp_msg_t); + + EXPECT_EQ((const void *)&const_sbp_msg_t, (const void *)&const_unwrapped); + EXPECT_EQ((void *)&non_const_sbp_msg_t, (void *)&non_const_unwrapped); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, CppTraitsToSbpMsgT) { + auto info = get_test_msg_info(); + + sbp_msg_t msg1 = sbp::MessageTraits::to_sbp_msg( + info.test_msg); + EXPECT_EQ(msg1.measurement_point, info.test_msg); + + sbp_msg_t msg2; + sbp::MessageTraits::to_sbp_msg(info.test_msg, + &msg2); + EXPECT_EQ(msg2.measurement_point, info.test_msg); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, CppTraitsEncodedLen) { + auto info = get_test_msg_info(); + EXPECT_EQ(sbp::MessageTraits::encoded_len( + info.test_msg), + info.payload_len); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + CppTraitsSendThroughSbpState) { + auto info = get_test_msg_info(); + sbp_state_t state; + sbp_state_init(&state); + + auto writer = info.get_frame_writer(); + sbp_state_set_io_context(&state, &writer); + + EXPECT_EQ(sbp::MessageTraits::send( + &state, info.sender_id, info.test_msg, &Writer::write_c), + SBP_OK); + EXPECT_EQ(writer.len(), info.frame_len); + EXPECT_EQ(memcmp(writer.data(), &info.encoded_frame[0], writer.len()), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + CppTraitsEncodeToBuf) { + auto info = get_test_msg_info(); + uint8_t buf[48]; + uint8_t n_written; + + EXPECT_EQ(sbp::MessageTraits::encode( + &buf[0], sizeof(buf), &n_written, info.test_msg), + SBP_OK); + EXPECT_EQ(n_written, 48); + EXPECT_EQ(memcmp(&buf[0], info.encoded_payload, 48), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + CppTraitsDecodeFromBuf) { + auto info = get_test_msg_info(); + sbp_msg_measurement_point_t msg{}; + uint8_t n_read; + + EXPECT_EQ(sbp::MessageTraits::decode( + &info.encoded_payload[0], info.payload_len, &n_read, &msg), + SBP_OK); + EXPECT_EQ(n_read, 48); + EXPECT_EQ(msg, info.test_msg); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + ReceiveThroughMessageHandler) { + auto info = get_test_msg_info(); + auto reader = info.get_frame_reader(); + + sbp::State state{}; + state.set_reader(&reader); + + CppHandler handler{&state}; + + while (reader.remaining() > 0) { + EXPECT_GE(state.process(), SBP_OK); + } + + EXPECT_EQ(handler.outputs.size(), 1); + EXPECT_EQ(handler.outputs[0].sender_id, info.sender_id); + EXPECT_EQ(handler.outputs[0].msg, info.test_msg); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + ProcessSbpMsgTThroughMessageHandler) { + auto info = get_test_msg_info(); + sbp::State state{}; + CppHandler handler(&state); + + state.process_message(info.sender_id, SbpMsgMeasurementPoint, + &info.test_msg_wrapped); + + EXPECT_EQ(handler.outputs.size(), 1); + EXPECT_EQ(handler.outputs[0].sender_id, info.sender_id); + EXPECT_EQ(handler.outputs[0].msg, info.test_msg); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, SendThroughCppState) { + auto info = get_test_msg_info(); + auto writer = info.get_frame_writer(); + + sbp::State state{}; + state.set_writer(&writer); + + EXPECT_EQ(state.send_message(info.sender_id, info.test_msg), SBP_OK); + EXPECT_EQ(writer.len(), info.frame_len); + EXPECT_EQ(memcmp(writer.data(), info.encoded_frame, info.frame_len), 0); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0, + SendWrappedSbpMsgTThroughCppState) { + auto info = get_test_msg_info(); + auto writer = info.get_frame_writer(); + + sbp::State state{}; + state.set_writer(&writer); + + EXPECT_EQ(state.send_message(info.sender_id, SbpMsgMeasurementPoint, + info.test_msg_wrapped), + SBP_OK); + EXPECT_EQ(writer.len(), info.frame_len); + EXPECT_EQ(memcmp(writer.data(), info.encoded_frame, info.frame_len), 0); +} + +class Testauto_check_sbp_profiling_MsgMeasurementPoint0_func + : public Testauto_check_sbp_profiling_MsgMeasurementPoint0 {}; + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, StringInit) { + sbp_msg_measurement_point_t t{}; + sbp_msg_measurement_point_func_init(&t); + EXPECT_TRUE(sbp_msg_measurement_point_func_valid(&t)); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, IsValid) { + sbp_msg_measurement_point_t t{}; + + size_t written; + EXPECT_TRUE( + sbp_msg_measurement_point_func_set(&t, "route()", false, &written)); + EXPECT_EQ(written, strlen("route()")); + EXPECT_EQ(sbp_msg_measurement_point_func_encoded_len(&t), 8); + EXPECT_TRUE(sbp_msg_measurement_point_func_valid(&t)); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, SpaceRemaining) { + sbp_msg_measurement_point_t t{}; + size_t empty_space_remaining = + sbp_msg_measurement_point_func_space_remaining(&t); + + size_t written; + EXPECT_TRUE( + sbp_msg_measurement_point_func_set(&t, "route()", false, &written)); + EXPECT_EQ(written, strlen("route()")); + EXPECT_EQ(sbp_msg_measurement_point_func_encoded_len(&t), 8); + size_t assigned_space_remaining = + sbp_msg_measurement_point_func_space_remaining(&t); + EXPECT_LT(assigned_space_remaining, empty_space_remaining); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, SetRaw) { + auto info = get_test_msg_info(); + sbp_msg_measurement_point_t t{}; + + size_t nwritten{}; + + EXPECT_TRUE(sbp_msg_measurement_point_func_set_raw( + &t, info.test_msg.func.data, + sbp_msg_measurement_point_func_strlen(&info.test_msg), false, &nwritten)); + EXPECT_EQ(sbp_msg_measurement_point_func_encoded_len(&info.test_msg), + sbp_msg_measurement_point_func_encoded_len(&t)); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, Set) { + sbp_msg_measurement_point_t t{}; + size_t nwritten{}; + const char *text = "route()"; + + EXPECT_TRUE(sbp_msg_measurement_point_func_set(&t, text, false, &nwritten)); + EXPECT_EQ(nwritten, strlen(text)); + EXPECT_STREQ(sbp_msg_measurement_point_func_get(&t), text); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, Printf) { + sbp_msg_measurement_point_t t{}; + size_t nwritten{}; + const char *text = "route()"; + + EXPECT_TRUE( + sbp_msg_measurement_point_func_printf(&t, false, &nwritten, "%s", text)); + EXPECT_EQ(nwritten, strlen(text)); + EXPECT_STREQ(sbp_msg_measurement_point_func_get(&t), text); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, Vprintf) { + sbp_msg_measurement_point_t t{}; + size_t nwritten{}; + const char *text = "route()"; + + auto lambda = [&t, &nwritten](const char *format, ...) -> bool { + va_list ap; + va_start(ap, format); + bool ret = sbp_msg_measurement_point_func_vprintf(&t, false, &nwritten, + format, ap); + va_end(ap); + return ret; + }; + + EXPECT_TRUE(lambda("%s", text)); + EXPECT_EQ(nwritten, strlen(text)); + EXPECT_STREQ(sbp_msg_measurement_point_func_get(&t), text); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, AppendPrintf) { + sbp_msg_measurement_point_t t{}; + size_t nwritten{}; + char part1[] = "route()"; + char part2[] = "route()"; + + part1[1] = 0; + + EXPECT_TRUE(sbp_msg_measurement_point_func_printf(&t, false, &nwritten, "%s", + &part1[0])); + EXPECT_EQ(nwritten, 1); + EXPECT_STREQ(sbp_msg_measurement_point_func_get(&t), &part1[0]); + + EXPECT_TRUE(sbp_msg_measurement_point_func_append_printf(&t, false, &nwritten, + "%s", &part2[1])); + EXPECT_EQ(nwritten, strlen(&part2[1])); + EXPECT_STREQ(sbp_msg_measurement_point_func_get(&t), "route()"); +} + +TEST_F(Testauto_check_sbp_profiling_MsgMeasurementPoint0_func, AppendVprintf) { + sbp_msg_measurement_point_t t{}; + size_t nwritten{}; + char part1[] = "route()"; + char part2[] = "route()"; + + part1[1] = 0; + + EXPECT_TRUE(sbp_msg_measurement_point_func_printf(&t, false, &nwritten, "%s", + &part1[0])); + EXPECT_EQ(nwritten, 1); + EXPECT_STREQ(sbp_msg_measurement_point_func_get(&t), &part1[0]); + + auto lambda = [&t, &nwritten](const char *format, ...) -> bool { + va_list ap; + va_start(ap, format); + bool ret = sbp_msg_measurement_point_func_append_vprintf( + &t, false, &nwritten, format, ap); + va_end(ap); + return ret; + }; + + EXPECT_TRUE(lambda("%s", &part2[1])); + EXPECT_EQ(nwritten, strlen(&part2[1])); + EXPECT_STREQ(sbp_msg_measurement_point_func_get(&t), "route()"); +} + +} // namespace \ No newline at end of file diff --git a/c/test/legacy/auto_check_sbp_profiling_MsgMeasurementPoint.c b/c/test/legacy/auto_check_sbp_profiling_MsgMeasurementPoint.c new file mode 100644 index 0000000000..daec9dd41e --- /dev/null +++ b/c/test/legacy/auto_check_sbp_profiling_MsgMeasurementPoint.c @@ -0,0 +1,266 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/profiling/test_MsgMeasurementPoint.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include // for debugging +#include // for malloc + +// Obviously we don't normally want to silence this message, but we also need to +// still test the legacy implementation for as long as it exists. By silencing +// these messages here we can get a less noisy build in libsbp +#ifdef SBP_MESSAGE +#undef SBP_MESSAGE +#define SBP_MESSAGE(x) +#endif +#include +#include +#include + +static struct { + u32 n_callbacks_logged; + u16 sender_id; + u8 len; + u8 msg[SBP_MAX_PAYLOAD_LEN]; + void *context; +} last_msg; + +static struct { + u32 n_callbacks_logged; + u16 sender_id; + u16 msg_type; + u8 msg_len; + u8 msg[SBP_MAX_PAYLOAD_LEN]; + u16 frame_len; + u8 frame[SBP_MAX_FRAME_LEN]; + void *context; +} last_frame; + +static u32 dummy_wr = 0; +static u32 dummy_rd = 0; +static u8 dummy_buff[1024]; +static void *last_io_context; + +static int DUMMY_MEMORY_FOR_CALLBACKS = 0xdeadbeef; +static int DUMMY_MEMORY_FOR_IO = 0xdead0000; + +static void dummy_reset() { + dummy_rd = dummy_wr = 0; + memset(dummy_buff, 0, sizeof(dummy_buff)); +} + +static s32 dummy_write(u8 *buff, u32 n, void *context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(dummy_buff + dummy_wr, buff, real_n); + dummy_wr += real_n; + return real_n; +} + +static s32 dummy_read(u8 *buff, u32 n, void *context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(buff, dummy_buff + dummy_rd, real_n); + dummy_rd += real_n; + return real_n; +} + +static void logging_reset() { + memset(&last_msg, 0, sizeof(last_msg)); + memset(&last_frame, 0, sizeof(last_frame)); +} + +static void msg_callback(u16 sender_id, u8 len, u8 msg[], void *context) { + last_msg.n_callbacks_logged++; + last_msg.sender_id = sender_id; + last_msg.len = len; + last_msg.context = context; + memcpy(last_msg.msg, msg, len); +} + +static void frame_callback(u16 sender_id, u16 msg_type, u8 msg_len, u8 msg[], + u16 frame_len, u8 frame[], void *context) { + last_frame.n_callbacks_logged++; + last_frame.sender_id = sender_id; + last_frame.msg_type = msg_type; + last_frame.msg_len = msg_len; + memcpy(last_frame.msg, msg, msg_len); + last_frame.frame_len = frame_len; + memcpy(last_frame.frame, frame, frame_len); + last_frame.context = context; +} + +START_TEST(test_legacy_auto_check_sbp_profiling_MsgMeasurementPoint) { + static sbp_msg_callbacks_node_t n; + static sbp_msg_callbacks_node_t n2; + + // State of the SBP message parser. + // Must be statically allocated. + sbp_state_t sbp_state; + + // + // Run tests: + // + // Test successful parsing of a message + { + // SBP parser state must be initialized before sbp_process is called. + // We re-initialize before every test so that callbacks for the same message + // types can be + // allocated multiple times across different tests. + sbp_state_init(&sbp_state); + + sbp_state_set_io_context(&sbp_state, &DUMMY_MEMORY_FOR_IO); + + logging_reset(); + + sbp_payload_callback_register(&sbp_state, 0xCF00, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 0xCF00, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 0, 207, 0, 16, 48, 250, 7, 0, 0, 180, 0, 2, 0, + 0, 0, 40, 0, 0, 0, 130, 201, 148, 141, 97, 85, 0, 0, + 18, 130, 201, 148, 0, 0, 0, 0, 66, 64, 157, 15, 0, 0, + 0, 0, 18, 0, 114, 111, 117, 116, 101, 40, 41, 0, 212, 165, + }; + + dummy_reset(); + + u8 test_msg_storage[SBP_MAX_PAYLOAD_LEN]; + memset(test_msg_storage, 0, sizeof(test_msg_storage)); + u8 test_msg_len = 0; + msg_measurement_point_t *test_msg = + (msg_measurement_point_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + { + const char assign_string[] = {(char)114, (char)111, (char)117, (char)116, + (char)101, (char)40, (char)41, (char)0}; + memcpy(test_msg->func, assign_string, sizeof(assign_string)); + if (sizeof(test_msg->func) == 0) { + test_msg_len += sizeof(assign_string); + } + } + test_msg->id = 2496234002; + test_msg->line = 18; + test_msg->max = 40; + test_msg->min = 2; + test_msg->num_executions = 180; + test_msg->return_addr = 93877475527042; + test_msg->slice_time = 261963842; + test_msg->total_time = 2042; + sbp_payload_send(&sbp_state, 0xCF00, 4096, test_msg_len, test_msg_storage, + &dummy_write); + + ck_assert_msg( + test_msg_len == sizeof(encoded_frame) - 8, + "Test message has not been generated correctly, or the encoded frame " + "from the spec is badly defined. Check your test spec"); + + ck_assert_msg(dummy_wr == sizeof(encoded_frame), + "not enough data was written to dummy_buff"); + ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, + "frame was not encoded properly"); + + while (dummy_rd < dummy_wr) { + ck_assert_msg(sbp_process(&sbp_state, &dummy_read) >= SBP_OK, + "sbp_process threw an error!"); + } + + ck_assert_msg(last_msg.n_callbacks_logged == 1, + "msg_callback: one callback should have been logged"); + ck_assert_msg(last_msg.sender_id == 4096, + "msg_callback: sender_id decoded incorrectly"); + ck_assert_msg(last_msg.len == sizeof(encoded_frame) - 8, + "msg_callback: len decoded incorrectly"); + ck_assert_msg( + memcmp(last_msg.msg, encoded_frame + 6, sizeof(encoded_frame) - 8) == 0, + "msg_callback: test data decoded incorrectly"); + ck_assert_msg(last_msg.context == &DUMMY_MEMORY_FOR_CALLBACKS, + "frame_callback: context pointer incorrectly passed"); + + ck_assert_msg(last_frame.n_callbacks_logged == 1, + "frame_callback: one callback should have been logged"); + ck_assert_msg(last_frame.sender_id == 4096, + "frame_callback: sender_id decoded incorrectly"); + ck_assert_msg(last_frame.msg_type == 0xCF00, + "frame_callback: msg_type decoded incorrectly"); + ck_assert_msg(last_frame.msg_len == sizeof(encoded_frame) - 8, + "frame_callback: msg_len decoded incorrectly"); + ck_assert_msg(memcmp(last_frame.msg, encoded_frame + 6, + sizeof(encoded_frame) - 8) == 0, + "frame_callback: test data decoded incorrectly"); + ck_assert_msg(last_frame.frame_len == sizeof(encoded_frame), + "frame_callback: frame_len decoded incorrectly"); + ck_assert_msg( + memcmp(last_frame.frame, encoded_frame, sizeof(encoded_frame)) == 0, + "frame_callback: frame decoded incorrectly"); + ck_assert_msg(last_frame.context == &DUMMY_MEMORY_FOR_CALLBACKS, + "frame_callback: context pointer incorrectly passed"); + + // Cast to expected message type - the +6 byte offset is where the payload + // starts + msg_measurement_point_t *check_msg = + (msg_measurement_point_t *)((void *)last_msg.msg); + // Run tests against fields + ck_assert_msg(check_msg != 0, "stub to prevent warnings if msg isn't used"); + { + const char check_string[] = {(char)114, (char)111, (char)117, (char)116, + (char)101, (char)40, (char)41, (char)0}; + ck_assert_msg( + memcmp(check_msg->func, check_string, sizeof(check_string)) == 0, + "incorrect value for check_msg->func, expected string '%s', is '%s'", + check_string, check_msg->func); + } + ck_assert_msg(check_msg->id == 2496234002, + "incorrect value for id, expected 2496234002, is %d", + check_msg->id); + ck_assert_msg(check_msg->line == 18, + "incorrect value for line, expected 18, is %d", + check_msg->line); + ck_assert_msg(check_msg->max == 40, + "incorrect value for max, expected 40, is %d", + check_msg->max); + ck_assert_msg(check_msg->min == 2, + "incorrect value for min, expected 2, is %d", check_msg->min); + ck_assert_msg(check_msg->num_executions == 180, + "incorrect value for num_executions, expected 180, is %d", + check_msg->num_executions); + ck_assert_msg( + check_msg->return_addr == 93877475527042, + "incorrect value for return_addr, expected 93877475527042, is %d", + check_msg->return_addr); + ck_assert_msg(check_msg->slice_time == 261963842, + "incorrect value for slice_time, expected 261963842, is %d", + check_msg->slice_time); + ck_assert_msg(check_msg->total_time == 2042, + "incorrect value for total_time, expected 2042, is %d", + check_msg->total_time); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_profiling_MsgMeasurementPoint_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_profiling_MsgMeasurementPoint"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_profiling_MsgMeasurementPoint"); + tcase_add_test(tc_acq, + test_legacy_auto_check_sbp_profiling_MsgMeasurementPoint); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc b/c/test/legacy/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc new file mode 100644 index 0000000000..ec030982eb --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_profiling_MsgMeasurementPoint.cc @@ -0,0 +1,160 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/profiling/test_MsgMeasurementPoint.yaml by +// generate.py. Do not modify by hand! + +#include + +#include + +// Obviously we don't normally want to silence this message, but we also need to +// still test the legacy implementation for as long as it exists. By silencing +// these messages here we can get a less noisy build in libsbp +#ifdef SBP_MESSAGE +#undef SBP_MESSAGE +#define SBP_MESSAGE(x) +#endif +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_profiling_MsgMeasurementPoint0 + : public ::testing::Test, + public sbp::LegacyState, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_profiling_MsgMeasurementPoint0() + : ::testing::Test(), + sbp::LegacyState(), + sbp::IReader(), + sbp::IWriter(), + sbp::PayloadHandler(this), + last_msg_storage_(), + last_msg_( + reinterpret_cast(last_msg_storage_)), + last_msg_len_(), + last_sender_id_(), + n_callbacks_logged_(), + dummy_wr_(), + dummy_rd_(), + dummy_buff_() { + set_reader(this); + set_writer(this); + } + + s32 read(uint8_t *buf, const uint32_t n) override { + uint32_t real_n = n; + memcpy(buf, dummy_buff_ + dummy_rd_, real_n); + dummy_rd_ += real_n; + return (s32)real_n; + } + + s32 write(const uint8_t *buf, uint32_t n) override { + uint32_t real_n = n; + memcpy(dummy_buff_ + dummy_wr_, buf, real_n); + dummy_wr_ += real_n; + return (s32)real_n; + } + + protected: + void handle_sbp_msg(uint16_t sender_id, uint8_t message_length, + const msg_measurement_point_t &msg) override { + memcpy(last_msg_storage_, &msg, message_length); + last_msg_len_ = message_length; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + uint8_t last_msg_storage_[SBP_MAX_PAYLOAD_LEN]; + msg_measurement_point_t *last_msg_; + uint8_t last_msg_len_; + uint16_t last_sender_id_; + size_t n_callbacks_logged_; + uint32_t dummy_wr_; + uint32_t dummy_rd_; + uint8_t dummy_buff_[1024]; +}; + +TEST_F(Test_legacy_auto_check_sbp_profiling_MsgMeasurementPoint0, Test) { + uint8_t encoded_frame[] = { + 85, 0, 207, 0, 16, 48, 250, 7, 0, 0, 180, 0, 2, 0, + 0, 0, 40, 0, 0, 0, 130, 201, 148, 141, 97, 85, 0, 0, + 18, 130, 201, 148, 0, 0, 0, 0, 66, 64, 157, 15, 0, 0, + 0, 0, 18, 0, 114, 111, 117, 116, 101, 40, 41, 0, 212, 165, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_measurement_point_t *test_msg = + (msg_measurement_point_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + { + const char assign_string[] = {(char)114, (char)111, (char)117, (char)116, + (char)101, (char)40, (char)41, (char)0}; + memcpy(test_msg->func, assign_string, sizeof(assign_string)); + if (sizeof(test_msg->func) == 0) { + test_msg_len = (uint8_t)(test_msg_len + sizeof(assign_string)); + } + } + test_msg->id = 2496234002; + test_msg->line = 18; + test_msg->max = 40; + test_msg->min = 2; + test_msg->num_executions = 180; + test_msg->return_addr = 93877475527042; + test_msg->slice_time = 261963842; + test_msg->total_time = 2042; + + EXPECT_EQ(send_message(0xCF00, 4096, test_msg_len, test_msg_storage), SBP_OK); + + EXPECT_EQ(dummy_wr_, sizeof(encoded_frame)); + EXPECT_EQ(memcmp(dummy_buff_, encoded_frame, sizeof(encoded_frame)), 0); + + while (dummy_rd_ < dummy_wr_) { + process(); + } + + EXPECT_EQ(n_callbacks_logged_, 1); + EXPECT_EQ(last_sender_id_, 4096); + EXPECT_EQ(last_msg_len_, test_msg_len); + { + const char check_string[] = {(char)114, (char)111, (char)117, (char)116, + (char)101, (char)40, (char)41, (char)0}; + EXPECT_EQ(memcmp(last_msg_->func, check_string, sizeof(check_string)), 0) + << "incorrect value for last_msg_->func, expected string '" + << check_string << "', is '" << last_msg_->func << "'"; + } + EXPECT_EQ(last_msg_->id, 2496234002) + << "incorrect value for id, expected 2496234002, is " << last_msg_->id; + EXPECT_EQ(last_msg_->line, 18) + << "incorrect value for line, expected 18, is " << last_msg_->line; + EXPECT_EQ(last_msg_->max, 40) + << "incorrect value for max, expected 40, is " << last_msg_->max; + EXPECT_EQ(last_msg_->min, 2) + << "incorrect value for min, expected 2, is " << last_msg_->min; + EXPECT_EQ(last_msg_->num_executions, 180) + << "incorrect value for num_executions, expected 180, is " + << last_msg_->num_executions; + EXPECT_EQ(last_msg_->return_addr, 93877475527042) + << "incorrect value for return_addr, expected 93877475527042, is " + << last_msg_->return_addr; + EXPECT_EQ(last_msg_->slice_time, 261963842) + << "incorrect value for slice_time, expected 261963842, is " + << last_msg_->slice_time; + EXPECT_EQ(last_msg_->total_time, 2042) + << "incorrect value for total_time, expected 2042, is " + << last_msg_->total_time; +} diff --git a/docs/sbp.pdf b/docs/sbp.pdf index d8562253f6f7f360652123664b4e8ebafcf0207d..471e6bf4ac1033b15831590cdcbd4d1d1f75746e 100644 GIT binary patch delta 89191 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

n{EgJY+Iw>c>jrC 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 delta 86928 zcmaI718`?g6fQWi&55mvC&t9)#Ky$7abw%IZ95Z8oQZAQPB!y@`*!!$+j@0w-Rk

;^>xXJ%sKjMoRJ0?st099B3`yIxc;p_L=4ItU%4 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 pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgMaskSatellite = SBPMsgMaskSatellite <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgMaskSatelliteDep = SBPMsgMaskSatelliteDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgMeasurementPoint = SBPMsgMeasurementPoint <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgMeasurementState = SBPMsgMeasurementState <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgNapDeviceDnaReq = SBPMsgNapDeviceDnaReq <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgNapDeviceDnaResp = SBPMsgNapDeviceDnaResp <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj @@ -1144,6 +1149,7 @@ instance ToJSON SBPMsg where toJSON (SBPMsgMagRaw n m) = toJSON n <<>> toJSON m toJSON (SBPMsgMaskSatellite n m) = toJSON n <<>> toJSON m toJSON (SBPMsgMaskSatelliteDep n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgMeasurementPoint n m) = toJSON n <<>> toJSON m toJSON (SBPMsgMeasurementState n m) = toJSON n <<>> toJSON m toJSON (SBPMsgNapDeviceDnaReq _ m) = toJSON m toJSON (SBPMsgNapDeviceDnaResp n m) = toJSON n <<>> toJSON m @@ -1381,6 +1387,7 @@ instance HasMsg SBPMsg where msg f (SBPMsgMagRaw n m) = SBPMsgMagRaw n <$> f m msg f (SBPMsgMaskSatellite n m) = SBPMsgMaskSatellite n <$> f m msg f (SBPMsgMaskSatelliteDep n m) = SBPMsgMaskSatelliteDep n <$> f m + msg f (SBPMsgMeasurementPoint n m) = SBPMsgMeasurementPoint n <$> f m msg f (SBPMsgMeasurementState n m) = SBPMsgMeasurementState n <$> f m msg f (SBPMsgNapDeviceDnaReq n m) = SBPMsgNapDeviceDnaReq n <$> f m msg f (SBPMsgNapDeviceDnaResp n m) = SBPMsgNapDeviceDnaResp n <$> f m diff --git a/haskell/src/SwiftNav/SBP/Profiling.hs b/haskell/src/SwiftNav/SBP/Profiling.hs new file mode 100644 index 0000000000..1b5fea774e --- /dev/null +++ b/haskell/src/SwiftNav/SBP/Profiling.hs @@ -0,0 +1,93 @@ +{-# OPTIONS_GHC -fno-warn-unused-imports #-} +{-# LANGUAGE NoImplicitPrelude #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE RecordWildCards #-} + +-- | +-- Module: SwiftNav.SBP.Profiling +-- Copyright: Copyright (C) 2015-2021 Swift Navigation, Inc. +-- License: MIT +-- Contact: https://support.swiftnav.com +-- Stability: experimental +-- Portability: portable +-- +-- \< Standardized profiling messages from Swift Navigation devices. \> + +module SwiftNav.SBP.Profiling + ( module SwiftNav.SBP.Profiling + ) where + +import BasicPrelude +import Control.Lens +import Control.Monad.Loops +import Data.Binary +import Data.Binary.Get +import Data.Binary.IEEE754 +import Data.Binary.Put +import Data.ByteString.Lazy hiding (ByteString) +import Data.Int +import Data.Word +import SwiftNav.SBP.TH +import SwiftNav.SBP.Types + +{-# ANN module ("HLint: ignore Use camelCase"::String) #-} +{-# ANN module ("HLint: ignore Redundant do"::String) #-} +{-# ANN module ("HLint: ignore Use newtype instead of data"::String) #-} + + +msgMeasurementPoint :: Word16 +msgMeasurementPoint = 0xCF00 + +-- | SBP class for message MSG_MEASUREMENT_POINT (0xCF00). +-- +-- Tracks execution time of certain code paths in specially built products. +-- This message should only be expected and processed on the direction of +-- Swift's engineering teams. +data MsgMeasurementPoint = MsgMeasurementPoint + { _msgMeasurementPoint_total_time :: !Word32 + -- ^ Total time spent in measurement point + , _msgMeasurementPoint_num_executions :: !Word16 + -- ^ Number of times measurement point has executed + , _msgMeasurementPoint_min :: !Word32 + -- ^ Minimum execution time + , _msgMeasurementPoint_max :: !Word32 + -- ^ Maximum execution time + , _msgMeasurementPoint_return_addr :: !Word64 + -- ^ Return address + , _msgMeasurementPoint_id :: !Word64 + -- ^ Unique ID + , _msgMeasurementPoint_slice_time :: !Word64 + -- ^ CPU slice time + , _msgMeasurementPoint_line :: !Word16 + -- ^ Line number + , _msgMeasurementPoint_func :: !Text + -- ^ Function name + } deriving ( Show, Read, Eq ) + +instance Binary MsgMeasurementPoint where + get = do + _msgMeasurementPoint_total_time <- getWord32le + _msgMeasurementPoint_num_executions <- getWord16le + _msgMeasurementPoint_min <- getWord32le + _msgMeasurementPoint_max <- getWord32le + _msgMeasurementPoint_return_addr <- getWord64le + _msgMeasurementPoint_id <- getWord64le + _msgMeasurementPoint_slice_time <- getWord64le + _msgMeasurementPoint_line <- getWord16le + _msgMeasurementPoint_func <- decodeUtf8 . toStrict <$> getRemainingLazyByteString + pure MsgMeasurementPoint {..} + + put MsgMeasurementPoint {..} = do + putWord32le _msgMeasurementPoint_total_time + putWord16le _msgMeasurementPoint_num_executions + putWord32le _msgMeasurementPoint_min + putWord32le _msgMeasurementPoint_max + putWord64le _msgMeasurementPoint_return_addr + putWord64le _msgMeasurementPoint_id + putWord64le _msgMeasurementPoint_slice_time + putWord16le _msgMeasurementPoint_line + putByteString $ encodeUtf8 _msgMeasurementPoint_func + +$(makeSBP 'msgMeasurementPoint ''MsgMeasurementPoint) +$(makeJSON "_msgMeasurementPoint_" ''MsgMeasurementPoint) +$(makeLenses ''MsgMeasurementPoint) diff --git a/java/src/com/swiftnav/sbp/client/MessageTable.java b/java/src/com/swiftnav/sbp/client/MessageTable.java index e710975fc4..e3c1a5e8a1 100644 --- a/java/src/com/swiftnav/sbp/client/MessageTable.java +++ b/java/src/com/swiftnav/sbp/client/MessageTable.java @@ -178,6 +178,7 @@ import com.swiftnav.sbp.piksi.MsgThreadState; import com.swiftnav.sbp.piksi.MsgUartState; import com.swiftnav.sbp.piksi.MsgUartStateDepa; +import com.swiftnav.sbp.profiling.MsgMeasurementPoint; import com.swiftnav.sbp.sbas.MsgSbasRaw; import com.swiftnav.sbp.settings.MsgSettingsReadByIndexDone; import com.swiftnav.sbp.settings.MsgSettingsReadByIndexReq; @@ -580,6 +581,8 @@ static SBPMessage dispatch(SBPMessage msg) throws SBPBinaryException { return new MsgSpecan(msg); case MsgFrontEndGain.TYPE: return new MsgFrontEndGain(msg); + case MsgMeasurementPoint.TYPE: + return new MsgMeasurementPoint(msg); case MsgSbasRaw.TYPE: return new MsgSbasRaw(msg); case MsgSettingsSave.TYPE: diff --git a/java/src/com/swiftnav/sbp/profiling/MsgMeasurementPoint.java b/java/src/com/swiftnav/sbp/profiling/MsgMeasurementPoint.java new file mode 100644 index 0000000000..26cb1d4ae3 --- /dev/null +++ b/java/src/com/swiftnav/sbp/profiling/MsgMeasurementPoint.java @@ -0,0 +1,122 @@ +/* Copyright (C) 2015-2022 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ +package com.swiftnav.sbp.profiling; + +// This file was auto-generated from yaml/swiftnav/sbp/profiling.yaml by generate.py. +// Do not modify by hand! + + +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPMessage; +import java.math.BigInteger; +import org.json.JSONObject; + +/** + * SBP class for message MSG_MEASUREMENT_POINT (0xCF00). + * + *

You can have MSG_MEASUREMENT_POINT inherent its fields directly from an inherited SBP object, + * or construct it inline using a dict of its fields. + * + *

Tracks execution time of certain code paths in specially built products. This message should + * only be expected and processed on the direction of Swift's engineering teams. + */ +public class MsgMeasurementPoint extends SBPMessage { + public static final int TYPE = 0xCF00; + + /** Total time spent in measurement point */ + public long total_time; + + /** Number of times measurement point has executed */ + public int num_executions; + + /** Minimum execution time */ + public long min; + + /** Maximum execution time */ + public long max; + + /** Return address */ + public BigInteger return_addr; + + /** Unique ID */ + public BigInteger id; + + /** CPU slice time */ + public BigInteger slice_time; + + /** Line number */ + public int line; + + /** Function name */ + public String func; + + public MsgMeasurementPoint(int sender) { + super(sender, TYPE); + } + + public MsgMeasurementPoint() { + super(TYPE); + } + + public MsgMeasurementPoint(SBPMessage msg) throws SBPBinaryException { + super(msg); + if (msg.type != TYPE) + throw new SBPBinaryException( + "Type mismatch for MsgMeasurementPoint, expected 52992, actual " + msg.type); + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + total_time = parser.getU32(); + num_executions = parser.getU16(); + min = parser.getU32(); + max = parser.getU32(); + return_addr = parser.getU64(); + id = parser.getU64(); + slice_time = parser.getU64(); + line = parser.getU16(); + func = parser.getString(); + } + + @Override + protected void build(Builder builder) { + builder.putU32(total_time); + builder.putU16(num_executions); + builder.putU32(min); + builder.putU32(max); + builder.putU64(return_addr); + builder.putU64(id); + builder.putU64(slice_time); + builder.putU16(line); + builder.putString(func); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("total_time", total_time); + obj.put("num_executions", num_executions); + obj.put("min", min); + obj.put("max", max); + obj.put("return_addr", return_addr); + obj.put("id", id); + obj.put("slice_time", slice_time); + obj.put("line", line); + obj.put("func", func); + return obj; + } + + @Override + public String getFriendlyName() { + return "MEAS POINT"; + } +} diff --git a/java/test/auto_check_sbp_profiling_MsgMeasurementPointTest.java b/java/test/auto_check_sbp_profiling_MsgMeasurementPointTest.java new file mode 100644 index 0000000000000000000000000000000000000000..bec13a7594cfa7bb5d75d6dc6150aed18d752162 GIT binary patch literal 5381 zcmc&&@o(BV6uzJNE8dW%!mSG=g_iC#=_sVP+(AGkj-*bRC z>}b_#M;BGXwcq>R=kM9iPAWe`ODxwhn=cfUT4ivmcKx+ebsQMpvY7&(tk|3=COCLJ zunM3ZxFUgi0}G{=@=c{8ljTyx%97fHla&>S2o1IEXu%{%k;DN7-AX2(XrMp|Pzwqn z3n-TqW+LHJU_9-dv5>+^$7{L%&^>|M1q&7sB~od;3Dtj7CRNNPiK0`4np4Dz;g+cd z0%Y+lXoew(bS#~pgqTViujo`yBW3r_8$zqscA@FF!Sk3R!hOVAurLZKyXELXNDKYtxlclAoRKFAomC7bZsp_{x z0!fs3J*S+;M9VviF_&m0mo%toA6Z$GD6H&qT|unMG8X91_&l{3cjdfGiA-V|QLg%e zab;;In5YB9 zC3E{kR>X>kT3AWz*6xge<@$`;wcpM^7)q8r|ZxzmN!$=@RPNofBg+hvJM5A z!rQ&r+JMvBosr?H2X;?MLtrVZS5INvzQ|gp&$R4@X`7aVoBF`BMKpGYTD3!+`M$@X z?K5ME^*Ez$*BZID>Ay6yYt%D~>J#bPInXBrHq@RPz<8XWXY9^vS<|i?{`R-?H}IyF zn^UgS&c(FtN9D2Y94Fh*wsYyo<+x^&aX^)Ov$#$50xS-=QT1Xrou%rXU9BSJ>Rszv z|893dZhIW4Xb?$VA~e*2(GmvA`I~wMy1tH@SG zV;rj;52%=dDc0p&tBw#_Bpl7bLXs9tva1_ zpm=z-q~t8RnWWa=kSi4pMzLJZDSHnTYx!5)cM@z6L&4|owetCl=qc`mN3jfi$E4vA z8MdiN1Ds|+d0v@DJ2Ew&Xe?Flx?7q&m>Qi;DRga=G!Wtp|{}mlEZs4C$XMDfeuQ5-R**S{J&QV3?Ni?Q+ zG)VNTqx=zi?=#q!9xr@b@w1wz*V*n#>&T<^B)#d-e9>dtbOO{0j$!%+vq? literal 0 HcmV?d00001 diff --git a/javascript/sbp.bundle.js b/javascript/sbp.bundle.js index 0571d5a49f..7b700a6d67 100644 --- a/javascript/sbp.bundle.js +++ b/javascript/sbp.bundle.js @@ -5,11 +5,11 @@ * @author Feross Aboukhadijeh * @license MIT */ -var r=p(25),o=p(26),i=p(16);function s(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function n(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function h(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var p=e.length;if(0===p)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return p;case"utf8":case"utf-8":case void 0:return k(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*p;case"hex":return p>>>1;case"base64":return B(e).length;default:if(r)return k(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,p){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===p||p>this.length)&&(p=this.length),p<=0)return"";if((p>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,p);case"utf8":case"utf-8":return v(this,t,p);case"ascii":return U(this,t,p);case"latin1":case"binary":return M(this,t,p);case"base64":return T(this,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,p);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function _(e,t,p){var r=e[t];e[t]=e[p],e[p]=r}function S(e,t,p,r,o){if(0===e.length)return-1;if("string"==typeof p?(r=p,p=0):p>2147483647?p=2147483647:p<-2147483648&&(p=-2147483648),p=+p,isNaN(p)&&(p=o?0:e.length-1),p<0&&(p=e.length+p),p>=e.length){if(o)return-1;p=e.length-1}else if(p<0){if(!o)return-1;p=0}if("string"==typeof t&&(t=a.from(t,r)),a.isBuffer(t))return 0===t.length?-1:g(e,t,p,r,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,p):Uint8Array.prototype.lastIndexOf.call(e,t,p):g(e,[t],p,r,o);throw new TypeError("val must be string, number or Buffer")}function g(e,t,p,r,o){var i,s=1,n=e.length,a=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,p/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var c=-1;for(i=p;in&&(p=n-a),i=p;i>=0;i--){for(var u=!0,y=0;yo&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=p%256,i.push(o),i.push(r);return i}(t,e.length-p),e,p,r)}function T(e,t,p){return 0===t&&p===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,p))}function v(e,t,p){p=Math.min(e.length,p);for(var r=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+u<=p)switch(u){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(c=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(c=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(c=a)}null===c?(c=65533,u=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),o+=u}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var p="",r=0;for(;r0&&(e=this.toString("hex",0,p).match(/.{2}/g).join(" "),this.length>p&&(e+=" ... ")),""},a.prototype.compare=function(e,t,p,r,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===p&&(p=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||p>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=p)return 0;if(r>=o)return-1;if(t>=p)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(p>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(r,o),c=e.slice(t,p),u=0;uo)&&(p=o),e.length>0&&(p<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return w(this,e,t,p);case"utf8":case"utf-8":return E(this,e,t,p);case"ascii":return m(this,e,t,p);case"latin1":case"binary":return b(this,e,t,p);case"base64":return I(this,e,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,t,p);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function U(e,t,p){var r="";p=Math.min(e.length,p);for(var o=t;or)&&(p=r);for(var o="",i=t;ip)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,p,r,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function C(e,t,p,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-p,2);o>>8*(r?o:1-o)}function R(e,t,p,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-p,4);o>>8*(r?o:3-o)&255}function P(e,t,p,r,o,i){if(p+r>e.length)throw new RangeError("Index out of range");if(p<0)throw new RangeError("Index out of range")}function N(e,t,p,r,i){return i||P(e,0,p,4),o.write(e,t,p,r,23,4),p+4}function j(e,t,p,r,i){return i||P(e,0,p,8),o.write(e,t,p,r,52,8),p+8}a.prototype.slice=function(e,t){var p,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},a.prototype.readUInt8=function(e,t){return t||G(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||G(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||G(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||G(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||G(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},a.prototype.readIntBE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||G(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||G(e,2,this.length);var p=this[e]|this[e+1]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt16BE=function(e,t){t||G(e,2,this.length);var p=this[e+1]|this[e]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt32LE=function(e,t){return t||G(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||G(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,p,r){(e=+e,t|=0,p|=0,r)||A(this,e,t,p,Math.pow(2,8*p)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+p},a.prototype.writeUInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+p},a.prototype.writeIntBE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=p-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+p},a.prototype.writeInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,p){return N(this,e,t,!0,p)},a.prototype.writeFloatBE=function(e,t,p){return N(this,e,t,!1,p)},a.prototype.writeDoubleLE=function(e,t,p){return j(this,e,t,!0,p)},a.prototype.writeDoubleBE=function(e,t,p){return j(this,e,t,!1,p)},a.prototype.copy=function(e,t,p,r){if(p||(p=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+p];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,p=void 0===p?this.length:p>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&p<57344){if(!o){if(p>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=p;continue}if(p<56320){(t-=3)>-1&&i.push(239,191,189),o=p;continue}p=65536+(o-55296<<10|p-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,p<128){if((t-=1)<0)break;i.push(p)}else if(p<2048){if((t-=2)<0)break;i.push(p>>6|192,63&p|128)}else if(p<65536){if((t-=3)<0)break;i.push(p>>12|224,p>>6&63|128,63&p|128)}else{if(!(p<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(p>>18|240,p>>12&63|128,p>>6&63|128,63&p|128)}}return i}function B(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,p,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+p]=e[o];return o}}).call(this,p(5))},function(e,t){var p,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(p===setTimeout)return setTimeout(e,0);if((p===i||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}!function(){try{p="function"==typeof setTimeout?setTimeout:i}catch(e){p=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var a,l=[],c=!1,u=-1;function y(){c&&a&&(c=!1,a.length?l=a.concat(l):u=-1,l.length&&f())}function f(){if(!c){var e=n(y);c=!0;for(var t=l.length;t;){for(a=l,l=[];++u1)for(var p=1;p0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},p.prototype.on=p.prototype.addListener,p.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var p=!1;function o(){this.removeListener(e,o),p||(p=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},p.prototype.removeListener=function(e,t){var p,i,s,n;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(p=this._events[e]).length,i=-1,p===t||r(p.listener)&&p.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(p)){for(n=s;n-- >0;)if(p[n]===t||p[n].listener&&p[n].listener===t){i=n;break}if(i<0)return this;1===p.length?(p.length=0,delete this._events[e]):p.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},p.prototype.removeAllListeners=function(e){var t,p;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(p=this._events[e]))this.removeListener(e,p);else if(p)for(;p.length;)this.removeListener(e,p[p.length-1]);return delete this._events[e],this},p.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},p.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},p.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,p){(t=e.exports=p(19)).Stream=t,t.Readable=t,t.Writable=p(15),t.Duplex=p(7),t.Transform=p(23),t.PassThrough=p(38)},function(e,t,p){"use strict";(function(t,r,o){var i=p(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,p){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(p),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;g.WritableState=S;var l=p(10);l.inherits=p(6);var c={deprecate:p(37)},u=p(20),y=p(12).Buffer,f=o.Uint8Array||function(){};var h,d=p(21);function _(){}function S(e,t){n=n||p(7),e=e||{};var r=t instanceof n;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var p=e._writableState,r=p.sync,o=p.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(p),t)!function(e,t,p,r,o){--t.pendingcb,p?(i.nextTick(o,r),i.nextTick(L,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),L(e,t))}(e,p,r,t,o);else{var s=b(p);s||p.corked||p.bufferProcessing||!p.bufferedRequest||m(e,p),r?a(E,e,p,s,o):E(e,p,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||p(7),!(h.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function w(e,t,p,r,o,i,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,p?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,p,r){p||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),L(e,t)}function m(e,t){t.bufferProcessing=!0;var p=t.bufferedRequest;if(e._writev&&p&&p.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=p;for(var n=0,a=!0;p;)o[n]=p,p.isBuf||(a=!1),p=p.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;p;){var l=p.chunk,c=p.encoding,u=p.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,c,u),p=p.next,t.bufferedRequestCount--,t.writing)break}null===p&&(t.lastBufferedRequest=null)}t.bufferedRequest=p,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function I(e,t){e._final((function(p){t.pendingcb--,p&&e.emit("error",p),t.prefinished=!0,e.emit("prefinish"),L(e,t)}))}function L(e,t){var p=b(t);return p&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(I,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),p}l.inherits(g,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(h=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!h.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):h=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,p){var r,o=this._writableState,s=!1,n=!o.objectMode&&(r=e,y.isBuffer(r)||r instanceof f);return n&&!y.isBuffer(e)&&(e=function(e){return y.from(e)}(e)),"function"==typeof t&&(p=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof p&&(p=_),o.ended?function(e,t){var p=new Error("write after end");e.emit("error",p),i.nextTick(t,p)}(this,p):(n||function(e,t,p,r){var o=!0,s=!1;return null===p?s=new TypeError("May not write null values to stream"):"string"==typeof p||void 0===p||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(r,s),o=!1),o}(this,o,e,p))&&(o.pendingcb++,s=function(e,t,p,r,o,i){if(!p){var s=function(e,t,p){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=y.from(t,p));return t}(t,r,o);r!==s&&(p=!0,o="buffer",r=s)}var n=t.objectMode?1:r.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,p){p(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,p){var r=this._writableState;"function"==typeof e?(p=e,e=null,t=null):"function"==typeof t&&(p=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,p){t.ending=!0,L(e,t),p&&(t.finished?i.nextTick(p):e.once("finish",p));t.ended=!0,e.writable=!1}(this,r,p)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,p(9),p(35).setImmediate,p(5))},function(e,t){var p={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==p.call(e)}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var r=p(28),o={},i={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},s={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},n={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1},a=function(){function e(){this.varName="",this.type="",this.options={},this.next=null,this.head=null,this.compiled=null,this.endian="be",this.constructorFn=null,this.alias=null}return e.start=function(){return new e},e.prototype.primitiveGenerateN=function(e,t){var p=s[e],r=n[e];t.pushCode(t.generateVariable(this.varName)+" = dataView.get"+p+"(offset, "+r+");"),t.pushCode("offset += "+i[e]+";")},e.prototype.primitiveN=function(e,t,p){return this.setNextParser(e,t,p)},e.prototype.useThisEndian=function(e){return e+this.endian.toLowerCase()},e.prototype.uint8=function(e,t){return this.primitiveN("uint8",e,t)},e.prototype.uint16=function(e,t){return this.primitiveN(this.useThisEndian("uint16"),e,t)},e.prototype.uint16le=function(e,t){return this.primitiveN("uint16le",e,t)},e.prototype.uint16be=function(e,t){return this.primitiveN("uint16be",e,t)},e.prototype.uint32=function(e,t){return this.primitiveN(this.useThisEndian("uint32"),e,t)},e.prototype.uint32le=function(e,t){return this.primitiveN("uint32le",e,t)},e.prototype.uint32be=function(e,t){return this.primitiveN("uint32be",e,t)},e.prototype.int8=function(e,t){return this.primitiveN("int8",e,t)},e.prototype.int16=function(e,t){return this.primitiveN(this.useThisEndian("int16"),e,t)},e.prototype.int16le=function(e,t){return this.primitiveN("int16le",e,t)},e.prototype.int16be=function(e,t){return this.primitiveN("int16be",e,t)},e.prototype.int32=function(e,t){return this.primitiveN(this.useThisEndian("int32"),e,t)},e.prototype.int32le=function(e,t){return this.primitiveN("int32le",e,t)},e.prototype.int32be=function(e,t){return this.primitiveN("int32be",e,t)},e.prototype.bigIntVersionCheck=function(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported in this runtime")},e.prototype.int64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),e,t)},e.prototype.int64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64be",e,t)},e.prototype.int64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64le",e,t)},e.prototype.uint64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),e,t)},e.prototype.uint64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64be",e,t)},e.prototype.uint64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64le",e,t)},e.prototype.floatle=function(e,t){return this.primitiveN("floatle",e,t)},e.prototype.floatbe=function(e,t){return this.primitiveN("floatbe",e,t)},e.prototype.doublele=function(e,t){return this.primitiveN("doublele",e,t)},e.prototype.doublebe=function(e,t){return this.primitiveN("doublebe",e,t)},e.prototype.bitN=function(e,t,p){return p||(p={}),p.length=e,this.setNextParser("bit",t,p)},e.prototype.bit1=function(e,t){return this.bitN(1,e,t)},e.prototype.bit2=function(e,t){return this.bitN(2,e,t)},e.prototype.bit3=function(e,t){return this.bitN(3,e,t)},e.prototype.bit4=function(e,t){return this.bitN(4,e,t)},e.prototype.bit5=function(e,t){return this.bitN(5,e,t)},e.prototype.bit6=function(e,t){return this.bitN(6,e,t)},e.prototype.bit7=function(e,t){return this.bitN(7,e,t)},e.prototype.bit8=function(e,t){return this.bitN(8,e,t)},e.prototype.bit9=function(e,t){return this.bitN(9,e,t)},e.prototype.bit10=function(e,t){return this.bitN(10,e,t)},e.prototype.bit11=function(e,t){return this.bitN(11,e,t)},e.prototype.bit12=function(e,t){return this.bitN(12,e,t)},e.prototype.bit13=function(e,t){return this.bitN(13,e,t)},e.prototype.bit14=function(e,t){return this.bitN(14,e,t)},e.prototype.bit15=function(e,t){return this.bitN(15,e,t)},e.prototype.bit16=function(e,t){return this.bitN(16,e,t)},e.prototype.bit17=function(e,t){return this.bitN(17,e,t)},e.prototype.bit18=function(e,t){return this.bitN(18,e,t)},e.prototype.bit19=function(e,t){return this.bitN(19,e,t)},e.prototype.bit20=function(e,t){return this.bitN(20,e,t)},e.prototype.bit21=function(e,t){return this.bitN(21,e,t)},e.prototype.bit22=function(e,t){return this.bitN(22,e,t)},e.prototype.bit23=function(e,t){return this.bitN(23,e,t)},e.prototype.bit24=function(e,t){return this.bitN(24,e,t)},e.prototype.bit25=function(e,t){return this.bitN(25,e,t)},e.prototype.bit26=function(e,t){return this.bitN(26,e,t)},e.prototype.bit27=function(e,t){return this.bitN(27,e,t)},e.prototype.bit28=function(e,t){return this.bitN(28,e,t)},e.prototype.bit29=function(e,t){return this.bitN(29,e,t)},e.prototype.bit30=function(e,t){return this.bitN(30,e,t)},e.prototype.bit31=function(e,t){return this.bitN(31,e,t)},e.prototype.bit32=function(e,t){return this.bitN(32,e,t)},e.prototype.namely=function(e){return o[e]=this,this.alias=e,this},e.prototype.skip=function(e,t){return this.seek(e,t)},e.prototype.seek=function(e,t){if(t&&t.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:e})},e.prototype.string=function(e,t){if(!t.zeroTerminated&&!t.length&&!t.greedy)throw new Error("Neither length, zeroTerminated, nor greedy is defined for string.");if((t.zeroTerminated||t.length)&&t.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(t.stripNull&&!t.length&&!t.greedy)throw new Error("Length or greedy must be defined if stripNull is defined.");return t.encoding=t.encoding||"utf8",this.setNextParser("string",e,t)},e.prototype.buffer=function(e,t){if(!t.length&&!t.readUntil)throw new Error("Length nor readUntil is defined in buffer parser");return this.setNextParser("buffer",e,t)},e.prototype.array=function(e,t){if(!t.readUntil&&!t.length&&!t.lengthInBytes)throw new Error("Length option of array is not defined.");if(!t.type)throw new Error("Type option of array is not defined.");if("string"==typeof t.type&&!o[t.type]&&Object.keys(i).indexOf(t.type)<0)throw new Error('Specified primitive type "'+t.type+'" is not supported.');return this.setNextParser("array",e,t)},e.prototype.choice=function(e,t){if("object"!=typeof t&&"object"==typeof e&&(t=e,e=null),!t.tag)throw new Error("Tag option of array is not defined.");if(!t.choices)throw new Error("Choices option of array is not defined.");return Object.keys(t.choices).forEach((function(p){var r=parseInt(p,10),s=t.choices[r];if(isNaN(r))throw new Error("Key of choices must be a number.");if(!s)throw new Error("Choice Case "+p+" of "+e+" is not valid.");if("string"==typeof s&&!o[s]&&Object.keys(i).indexOf(s)<0)throw new Error('Specified primitive type "'+s+'" is not supported.')})),this.setNextParser("choice",e,t)},e.prototype.nest=function(t,p){if("object"!=typeof p&&"object"==typeof t&&(p=t,t=null),!p.type)throw new Error("Type option of nest is not defined.");if(!(p.type instanceof e||o[p.type]))throw new Error("Type option of nest must be a Parser object.");if(!(p.type instanceof e||t))throw new Error("options.type must be a object if variable name is omitted.");return this.setNextParser("nest",t,p)},e.prototype.pointer=function(t,p){if(!p.offset)throw new Error("Offset option of pointer is not defined.");if(!p.type)throw new Error("Type option of pointer is not defined.");if("string"==typeof p.type){if(Object.keys(i).indexOf(p.type)<0&&!o[p.type])throw new Error('Specified type "'+p.type+'" is not supported.')}else if(!(p.type instanceof e))throw new Error("Type option of pointer must be a string or a Parser object.");return this.setNextParser("pointer",t,p)},e.prototype.saveOffset=function(e,t){return this.setNextParser("saveOffset",e,t)},e.prototype.endianess=function(e){switch(e.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error("Invalid endianess: "+e)}return this},e.prototype.create=function(e){if(!(e instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=e,this},e.prototype.getContext=function(e){var t=new r.Context(e);return t.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(t),t.pushCode("return ___parser_"+this.alias+"(0).result;")):this.addRawCode(t),t},e.prototype.getCode=function(){return this.getContext().code},e.prototype.addRawCode=function(e){e.pushCode("var offset = 0;"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),this.resolveReferences(e),e.pushCode("return vars;")},e.prototype.addAliasedCode=function(e){return e.pushCode("function ___parser_"+this.alias+"(offset) {"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),e.markResolved(this.alias),this.resolveReferences(e),e.pushCode("return { offset: offset, result: vars };"),e.pushCode("}"),e},e.prototype.resolveReferences=function(e){var t=e.getUnresolvedReferences();e.markRequested(t),t.forEach((function(t){o[t].addAliasedCode(e)}))},e.prototype.compile=function(){var e=this.getContext("imports");this.compiled=new Function("imports","TextDecoder","return function (buffer, constructorFn) { "+e.code+" };")(e.imports,"undefined"==typeof TextDecoder?p(18).TextDecoder:TextDecoder)},e.prototype.sizeOf=function(){var t=NaN;if(Object.keys(i).indexOf(this.type)>=0)t=i[this.type];else if("string"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("buffer"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("array"===this.type&&"number"==typeof this.options.length){var p=NaN;"string"==typeof this.options.type?p=i[this.options.type]:this.options.type instanceof e&&(p=this.options.type.sizeOf()),t=this.options.length*p}else"seek"===this.type?t=this.options.length:"nest"===this.type?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t},e.prototype.parse=function(e){return this.compiled||this.compile(),this.compiled(e,this.constructorFn)},e.prototype.setNextParser=function(t,p,r){var o=new e;return o.type=t,o.varName=p,o.options=r||o.options,o.endian=this.endian,this.head?this.head.next=o:this.next=o,this.head=o,this},e.prototype.generate=function(e){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,e);break;case"bit":this.generateBit(e);break;case"string":this.generateString(e);break;case"buffer":this.generateBuffer(e);break;case"seek":this.generateSeek(e);break;case"nest":this.generateNest(e);break;case"array":this.generateArray(e);break;case"choice":this.generateChoice(e);break;case"pointer":this.generatePointer(e);break;case"saveOffset":this.generateSaveOffset(e)}this.generateAssert(e)}var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},e.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":var p=e.addImport(this.options.assert);e.pushCode("if (!"+p+".call(vars, "+t+")) {");break;case"number":e.pushCode("if ("+this.options.assert+" !== "+t+") {");break;case"string":e.pushCode('if ("'+this.options.assert+'" !== '+t+") {");break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: '+t+' is " + '+this.options.assert),e.pushCode("}")}},e.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},e.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){var p=0;e.bitFields.forEach((function(e){return p+=e.options.length}));var r=e.generateTmpVariable();if(p<=8)e.pushCode("var "+r+" = dataView.getUint8(offset);"),p=8;else if(p<=16)e.pushCode("var "+r+" = dataView.getUint16(offset);"),p=16;else if(p<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var "+o+" = dataView.getUint16(offset);"),e.pushCode("var "+i+" = dataView.getUint8(offset + 2);"),e.pushCode("var "+r+" = ("+o+" << 8) | "+i+";"),p=24}else{if(!(p<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var "+r+" = dataView.getUint32(offset);"),p=32}e.pushCode("offset += "+p/8+";");var s=0,n="be"===this.endian;e.bitFields.forEach((function(t){var o=t.options.length,i=n?p-s-o:s,a=(1<> "+i+" & "+a+";"),s+=o})),e.bitFields=[]}},e.prototype.generateSeek=function(e){var t=e.generateOption(this.options.length);e.pushCode("offset += "+t+";")},e.prototype.generateString=function(e){var t=e.generateVariable(this.varName),p=e.generateTmpVariable(),r=this.options.encoding,o="hex"===r.toLowerCase(),i='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){var s=this.options.length;e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0 && offset - "+p+" < "+s+");");var n="offset - "+p+" < "+s+" ? offset - 1 : offset";e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", "+n+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", "+n+"));")}else if(this.options.length){s=e.generateOption(this.options.length);e.pushCode(o?t+" = Array.from(buffer.subarray(offset, offset + "+s+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray(offset, offset + "+s+"));"),e.pushCode("offset += "+s+";")}else this.options.zeroTerminated?(e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset - 1)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset - 1));")):this.options.greedy&&(e.pushCode("var "+p+" = offset;"),e.pushCode("while(buffer.length > offset++);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset));"));this.options.stripNull&&e.pushCode(t+" = "+t+".replace(/\\x00+$/g, '')")},e.prototype.generateBuffer=function(e){var t=e.generateVariable(this.varName);if("function"==typeof this.options.readUntil){var p=this.options.readUntil,r=e.generateTmpVariable(),o=e.generateTmpVariable();e.pushCode("var "+r+" = offset;"),e.pushCode("var "+o+" = 0;"),e.pushCode("while (offset < buffer.length) {"),e.pushCode(o+" = dataView.getUint8(offset);");var i=e.addImport(p);e.pushCode("if ("+i+".call(this, "+o+", buffer.subarray(offset))) break;"),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(t+" = buffer.subarray("+r+", offset);")}else if("eof"===this.options.readUntil)e.pushCode(t+" = buffer.subarray(offset);");else{var s=e.generateOption(this.options.length);e.pushCode(t+" = buffer.subarray(offset, offset + "+s+");"),e.pushCode("offset += "+s+";")}this.options.clone&&e.pushCode(t+" = buffer.constructor.from("+t+");")},e.prototype.generateArray=function(t){var p=t.generateOption(this.options.length),r=t.generateOption(this.options.lengthInBytes),a=this.options.type,l=t.generateTmpVariable(),c=t.generateVariable(this.varName),u=t.generateTmpVariable(),y=this.options.key,f="string"==typeof y;if(f?t.pushCode(c+" = {};"):t.pushCode(c+" = [];"),"function"==typeof this.options.readUntil?t.pushCode("do {"):"eof"===this.options.readUntil?t.pushCode("for (var "+l+" = 0; offset < buffer.length; "+l+"++) {"):void 0!==r?t.pushCode("for (var "+l+" = offset + "+r+"; offset < "+l+"; ) {"):t.pushCode("for (var "+l+" = "+p+"; "+l+" > 0; "+l+"--) {"),"string"==typeof a)if(o[a]){var h=t.generateTmpVariable();t.pushCode("var "+h+" = ___parser_"+a+"(offset);"),t.pushCode("var "+u+" = "+h+".result; offset = "+h+".offset;"),a!==this.alias&&t.addReference(a)}else{var d=s[a],_=n[a];t.pushCode("var "+u+" = dataView.get"+d+"(offset, "+_+");"),t.pushCode("offset += "+i[a]+";")}else a instanceof e&&(t.pushCode("var "+u+" = {};"),t.pushScope(u),a.generate(t),t.popScope());if(f?t.pushCode(c+"["+u+"."+y+"] = "+u+";"):t.pushCode(c+".push("+u+");"),t.pushCode("}"),"function"==typeof this.options.readUntil){var S=this.options.readUntil,g=t.addImport(S);t.pushCode("while (!"+g+".call(this, "+u+", buffer.subarray(offset)));")}},e.prototype.generateChoiceCase=function(t,p,r){if("string"==typeof r){var a=t.generateVariable(this.varName);if(o[r]){var l=t.generateTmpVariable();t.pushCode("var "+l+" = ___parser_"+r+"(offset);"),t.pushCode(a+" = "+l+".result; offset = "+l+".offset;"),r!==this.alias&&t.addReference(r)}else{var c=s[r],u=n[r];t.pushCode(a+" = dataView.get"+c+"(offset, "+u+");"),t.pushCode("offset += "+i[r])}}else r instanceof e&&(t.pushPath(p),r.generate(t),t.popPath(p))},e.prototype.generateChoice=function(e){var t=this,p=e.generateOption(this.options.tag);this.varName&&e.pushCode(e.generateVariable(this.varName)+" = {};"),e.pushCode("switch("+p+") {"),Object.keys(this.options.choices).forEach((function(p){var r=t.options.choices[parseInt(p,10)];e.pushCode("case "+p+":"),t.generateChoiceCase(e,t.varName,r),e.pushCode("break;")})),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + '+p+' + " at choice"'),e.pushCode("}")},e.prototype.generateNest=function(t){var p=t.generateVariable(this.varName);if(this.options.type instanceof e)this.varName&&t.pushCode(p+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var r=t.generateTmpVariable();t.pushCode("var "+r+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(p+" = "+r+".result; offset = "+r+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}},e.prototype.generateFormatter=function(e,t,p){if("function"==typeof p){var r=e.addImport(p);e.pushCode(t+" = "+r+".call(this, "+t+");")}},e.prototype.generatePointer=function(t){var p=this.options.type,r=t.generateOption(this.options.offset),a=t.generateTmpVariable(),l=t.generateVariable(this.varName);if(t.pushCode("var "+a+" = offset;"),t.pushCode("offset = "+r+";"),this.options.type instanceof e)t.pushCode(l+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var c=t.generateTmpVariable();t.pushCode("var "+c+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(l+" = "+c+".result; offset = "+c+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(i).indexOf(this.options.type)>=0){var u=s[p],y=n[p];t.pushCode(l+" = dataView.get"+u+"(offset, "+y+");"),t.pushCode("offset += "+i[p]+";")}t.pushCode("offset = "+a+";")},e.prototype.generateSaveOffset=function(e){var t=e.generateVariable(this.varName);e.pushCode(t+" = offset")},e}();t.Parser=a},function(e,t,p){(function(e,r){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],p=0;p=i)return e;switch(e){case"%s":return String(r[p++]);case"%d":return Number(r[p++]);case"%j":try{return JSON.stringify(r[p++])}catch(e){return"[Circular]"}default:return e}})),a=r[p];p=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),h(p)?r.showHidden=p:p&&t._extend(r,p),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),c(r,e,r.depth)}function a(e,t){var p=n.styles[t];return p?"["+n.colors[p][0]+"m"+e+"["+n.colors[p][1]+"m":e}function l(e,t){return e}function c(e,p,r){if(e.customInspect&&p&&I(p.inspect)&&p.inspect!==t.inspect&&(!p.constructor||p.constructor.prototype!==p)){var o=p.inspect(r,e);return S(o)||(o=c(e,o,r)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var p="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(p,"string")}if(_(t))return e.stylize(""+t,"number");if(h(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,p);if(i)return i;var s=Object.keys(p),n=function(e){var t={};return e.forEach((function(e,p){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(p)),b(p)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return u(p);if(0===s.length){if(I(p)){var a=p.name?": "+p.name:"";return e.stylize("[Function"+a+"]","special")}if(w(p))return e.stylize(RegExp.prototype.toString.call(p),"regexp");if(m(p))return e.stylize(Date.prototype.toString.call(p),"date");if(b(p))return u(p)}var l,E="",L=!1,T=["{","}"];(f(p)&&(L=!0,T=["[","]"]),I(p))&&(E=" [Function"+(p.name?": "+p.name:"")+"]");return w(p)&&(E=" "+RegExp.prototype.toString.call(p)),m(p)&&(E=" "+Date.prototype.toUTCString.call(p)),b(p)&&(E=" "+u(p)),0!==s.length||L&&0!=p.length?r<0?w(p)?e.stylize(RegExp.prototype.toString.call(p),"regexp"):e.stylize("[Object]","special"):(e.seen.push(p),l=L?function(e,t,p,r,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return p[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+p[1];return p[0]+t+" "+e.join(", ")+" "+p[1]}(l,E,T)):T[0]+E+T[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function y(e,t,p,r,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(r,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(p)?c(e,a.value,null):c(e,a.value,p-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+n.split("\n").map((function(e){return" "+e})).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function f(e){return Array.isArray(e)}function h(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===L(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===L(e)}function b(e){return E(e)&&("[object Error]"===L(e)||e instanceof Error)}function I(e){return"function"==typeof e}function L(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var p=r.pid;s[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,p,r)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=h,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=I,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=p(29);var v=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function U(){var e=new Date,t=[T(e.getHours()),T(e.getMinutes()),T(e.getSeconds())].join(":");return[e.getDate(),v[e.getMonth()],t].join(" ")}function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",U(),t.format.apply(t,arguments))},t.inherits=p(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var p=Object.keys(t),r=p.length;r--;)e[p[r]]=t[p[r]];return e}}).call(this,p(5),p(9))},function(e,t,p){"use strict";(function(t,r){var o=p(11);e.exports=w;var i,s=p(16);w.ReadableState=g;p(13).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=p(20),l=p(12).Buffer,c=t.Uint8Array||function(){};var u=p(10);u.inherits=p(6);var y=p(32),f=void 0;f=y&&y.debuglog?y.debuglog("stream"):function(){};var h,d=p(33),_=p(21);u.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var r=t instanceof(i=i||p(7));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(h||(h=p(22).StringDecoder),this.decoder=new h(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||p(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,p,r,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var p=t.decoder.end();p&&p.length&&(t.buffer.push(p),t.length+=t.objectMode?1:p.length)}t.ended=!0,I(e)}(e,s)):(o||(i=function(e,t){var p;r=t,l.isBuffer(r)||r instanceof c||"string"==typeof t||void 0===t||e.objectMode||(p=new TypeError("Invalid non-string/buffer chunk"));var r;return p}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!p?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):T(e,s)):m(e,s,t,!1))):r||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(f("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(L,e):L(e))}function L(e){f("emit readable"),e.emit("readable"),D(e)}function T(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(v,e,t))}function v(e,t){for(var p=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(p=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):p=function(e,t,p){var r;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++r,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++r}return t.length-=r,o}(e,t):function(e,t){var p=l.allocUnsafe(e),r=t.head,o=1;r.data.copy(p),e-=r.data.length;for(;r=r.next;){var i=r.data,s=e>i.length?i.length:e;if(i.copy(p,p.length-e,0,s),0===(e-=s)){s===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++o}return t.length-=o,p}(e,t);return r}(e,t.buffer,t.decoder),p);var p}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function C(e,t){for(var p=0,r=e.length;p=t.highWaterMark||t.ended))return f("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):I(this),null;if(0===(e=b(e,t))&&t.ended)return 0===t.length&&G(this),null;var r,o=t.needReadable;return f("need readable",o),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),p!==e&&t.ended&&G(this)),null!==r&&this.emit("data",r),r},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var p=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,f("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?c:w;function l(t,r){f("onunpipe"),t===p&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,f("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",u),e.removeListener("error",_),e.removeListener("unpipe",l),p.removeListener("end",c),p.removeListener("end",w),p.removeListener("data",d),y=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}function c(){f("onend"),e.end()}i.endEmitted?o.nextTick(a):p.once("end",a),e.on("unpipe",l);var u=function(e){return function(){var t=e._readableState;f("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,D(e))}}(p);e.on("drain",u);var y=!1;var h=!1;function d(t){f("ondata"),h=!1,!1!==e.write(t)||h||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==C(i.pipes,e))&&!y&&(f("false write response, pause",p._readableState.awaitDrain),p._readableState.awaitDrain++,h=!0),p.pause())}function _(t){f("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){f("onfinish"),e.removeListener("close",S),w()}function w(){f("unpipe"),p.unpipe(e)}return p.on("data",d),function(e,t,p){if("function"==typeof e.prependListener)return e.prependListener(t,p);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(p):e._events[t]=[p,e._events[t]]:e.on(t,p)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",p),i.flowing||(f("pipe resume"),p.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,p={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,p)),this;if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,p=function(e,t,p){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==p?p:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var p=e.toString("utf16le",t);if(p){var r=p.charCodeAt(p.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],p.slice(0,-1)}return p}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var p=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,p)}return t}function c(e,t){var p=(e.length-t)%3;return 0===p?e.toString("base64",t):(this.lastNeed=3-p,this.lastTotal=3,1===p?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-p))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function y(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,p;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";p=this.lastNeed,this.lastNeed=0}else p=0;return p=0)return o>0&&(e.lastNeed=o-1),o;if(--r=0)return o>0&&(e.lastNeed=o-2),o;if(--r=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=p;var r=e.length-(p-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,p){"use strict";e.exports=s;var r=p(7),o=p(10);function i(e,t){var p=this._transformState;p.transforming=!1;var r=p.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));p.writechunk=null,p.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&p],t&=65535;return t}r.exports={preambleByte:85,crc16:S,sbpIdTable:f,sbpMessageTypesTable:h,decode:function(e){var t=d.parse(e),p=f[t.msg_type];return void 0===p?(console.log("Unknown message type: ",t.msg_type),new s(t)):new p(t)},dispatch:function(t,p,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof p?i=p:(i=o,s=p),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(p){t.pause();try{if((n=e.concat([n,p])).length<2)return;var o=function(){var e,t,p,o,i,a,l;for(l=0;ln.length)throw new c;e=n.slice(l+1,l+6),p=n.readUInt16LE(l+1),_=n.readUInt16LE(l+3),o=n.readUInt8(l+5);var y=s&&Array.isArray(s)&&-1!==s.indexOf(p),f=s&&"number"==typeof s&&s&p,h=s&&"function"==typeof s&&s(p);if(s&&!(y||f||h))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new c;a=S(n.slice(l+6,l+6+o),S(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[r.exports.decode(d),d];throw n=n.slice(l+1),new u}();if(null===o)return;var l=o[0],y=o[1];i(null,l,y)}catch(e){if(!(e instanceof c||e instanceof u))throw e}finally{t.resume(),n.length>0&&setTimeout((function(){a(new e(0))}),0)}};t.on("data",a)}},function(e){var p={function:!0,object:!0},i=p[typeof window]&&window||this,s=p[typeof t]&&t&&!t.nodeType&&t,n=p[typeof r]&&r&&!r.nodeType&&r,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(r.exports)}).call(this,p(8).Buffer,p(27)(e),p(5))},function(e,t,p){"use strict";t.byteLength=function(e){var t=l(e),p=t[0],r=t[1];return 3*(p+r)/4-r},t.toByteArray=function(e){for(var t,p=l(e),r=p[0],s=p[1],n=new i(function(e,t,p){return 3*(t+p)/4-p}(0,r,s)),a=0,c=s>0?r-4:r,u=0;u>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(u)]<<2|o[e.charCodeAt(u+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(u)]<<10|o[e.charCodeAt(u+1)]<<4|o[e.charCodeAt(u+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,p=e.length,o=p%3,i=[],s=0,n=p-o;sn?n:s+16383));1===o?(t=e[p-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[p-2]<<8)+e[p-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var p=e.indexOf("=");return-1===p&&(p=t),[p,p===t?0:4-p%4]}function c(e,t,p){for(var o,i,s=[],n=t;n>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,p,r,o){var i,s,n=8*o-r-1,a=(1<>1,c=-7,u=p?o-1:0,y=p?-1:1,f=e[t+u];for(u+=y,i=f&(1<<-c)-1,f>>=-c,c+=n;c>0;i=256*i+e[t+u],u+=y,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=r;c>0;s=256*s+e[t+u],u+=y,c-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,r),i-=l}return(f?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,p,r,o,i){var s,n,a,l=8*i-o-1,c=(1<>1,y=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:i-1,h=r?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+u>=1?y/a:y*Math.pow(2,1-u))*a>=2&&(s++,a/=2),s+u>=c?(n=0,s=c):s+u>=1?(n=(t*a-1)*Math.pow(2,o),s+=u):(n=t*Math.pow(2,u-1)*Math.pow(2,o),s=0));o>=8;e[p+f]=255&n,f+=h,n/=256,o-=8);for(s=s<0;e[p+f]=255&s,f+=h,s/=256,l-=8);e[p+f-h]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Context=void 0;var r=function(){function e(e){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references={},this.imports=[],this.reverseImports=new Map,this.importPath=e}return e.prototype.generateVariable=function(e){var t=[],p=this.scopes[this.scopes.length-1];return t.push.apply(t,p),e&&t.push(e),t.join(".")},e.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return this.addImport(e)+".call("+this.generateVariable()+", vars)"}},e.prototype.generateError=function(e){this.pushCode("throw new Error("+e+");")},e.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},e.prototype.pushCode=function(e){this.code+=e+"\n"},e.prototype.pushPath=function(e){e&&this.scopes[this.scopes.length-1].push(e)},e.prototype.popPath=function(e){e&&this.scopes[this.scopes.length-1].pop()},e.prototype.pushScope=function(e){this.scopes.push([e])},e.prototype.popScope=function(){this.scopes.pop()},e.prototype.addImport=function(e){if(!this.importPath)return"("+e+")";var t=this.reverseImports.get(e);return t||(t=this.imports.push(e)-1,this.reverseImports.set(e,t)),this.importPath+"["+t+"]"},e.prototype.addReference=function(e){this.references[e]||(this.references[e]={resolved:!1,requested:!1})},e.prototype.markResolved=function(e){this.references[e].resolved=!0},e.prototype.markRequested=function(e){var t=this;e.forEach((function(e){t.references[e].requested=!0}))},e.prototype.getUnresolvedReferences=function(){var e=this.references;return Object.keys(this.references).filter((function(t){return!e[t].resolved&&!e[t].requested}))},e}();t.Context=r},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,p){(function(e){function p(e,t){for(var p=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),p++):p&&(e.splice(r,1),p--)}if(t)for(;p--;p)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var p=[],r=0;r=-1&&!r;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,r="/"===s.charAt(0))}return(r?"/":"")+(t=p(i(t.split("/"),(function(e){return!!e})),!r).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===s(e,-1);return(e=p(i(e.split("/"),(function(e){return!!e})),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,p){function r(e){for(var t=0;t=0&&""===e[p];p--);return t>p?[]:e.slice(t,p-t+1)}e=t.resolve(e).substr(1),p=t.resolve(p).substr(1);for(var o=r(e.split("/")),i=r(p.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,p=""+t.data;t=t.next;)p+=e+t.data;return p},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t=r.allocUnsafe(e>>>0),p=this.head,o=0;p;)i(p.data,t,o),o+=p.data.length,p=p.next;return t},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,p){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},p(36),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,p(5))},function(e,t,p){(function(e,t){!function(e,p){"use strict";if(!e.setImmediate){var r,o,i,s,n,a=1,l={},c=!1,u=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){h(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,p=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=p,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){h(e.data)},r=function(e){i.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,r=function(e){var t=u.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(h,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&h(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(t){e.postMessage(s+t,"*")}),y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),p=0;p=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function h(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var p=e.length;if(0===p)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return p;case"utf8":case"utf-8":case void 0:return k(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*p;case"hex":return p>>>1;case"base64":return B(e).length;default:if(r)return k(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,p){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===p||p>this.length)&&(p=this.length),p<=0)return"";if((p>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,p);case"utf8":case"utf-8":return v(this,t,p);case"ascii":return U(this,t,p);case"latin1":case"binary":return M(this,t,p);case"base64":return T(this,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,p);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function _(e,t,p){var r=e[t];e[t]=e[p],e[p]=r}function S(e,t,p,r,o){if(0===e.length)return-1;if("string"==typeof p?(r=p,p=0):p>2147483647?p=2147483647:p<-2147483648&&(p=-2147483648),p=+p,isNaN(p)&&(p=o?0:e.length-1),p<0&&(p=e.length+p),p>=e.length){if(o)return-1;p=e.length-1}else if(p<0){if(!o)return-1;p=0}if("string"==typeof t&&(t=a.from(t,r)),a.isBuffer(t))return 0===t.length?-1:g(e,t,p,r,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,p):Uint8Array.prototype.lastIndexOf.call(e,t,p):g(e,[t],p,r,o);throw new TypeError("val must be string, number or Buffer")}function g(e,t,p,r,o){var i,s=1,n=e.length,a=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,p/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var c=-1;for(i=p;in&&(p=n-a),i=p;i>=0;i--){for(var u=!0,y=0;yo&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=p%256,i.push(o),i.push(r);return i}(t,e.length-p),e,p,r)}function T(e,t,p){return 0===t&&p===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,p))}function v(e,t,p){p=Math.min(e.length,p);for(var r=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+u<=p)switch(u){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(c=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(c=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(c=a)}null===c?(c=65533,u=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),o+=u}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var p="",r=0;for(;r0&&(e=this.toString("hex",0,p).match(/.{2}/g).join(" "),this.length>p&&(e+=" ... ")),""},a.prototype.compare=function(e,t,p,r,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===p&&(p=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||p>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=p)return 0;if(r>=o)return-1;if(t>=p)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(p>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(r,o),c=e.slice(t,p),u=0;uo)&&(p=o),e.length>0&&(p<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return w(this,e,t,p);case"utf8":case"utf-8":return E(this,e,t,p);case"ascii":return m(this,e,t,p);case"latin1":case"binary":return b(this,e,t,p);case"base64":return I(this,e,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,t,p);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function U(e,t,p){var r="";p=Math.min(e.length,p);for(var o=t;or)&&(p=r);for(var o="",i=t;ip)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,p,r,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function C(e,t,p,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-p,2);o>>8*(r?o:1-o)}function R(e,t,p,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-p,4);o>>8*(r?o:3-o)&255}function P(e,t,p,r,o,i){if(p+r>e.length)throw new RangeError("Index out of range");if(p<0)throw new RangeError("Index out of range")}function N(e,t,p,r,i){return i||P(e,0,p,4),o.write(e,t,p,r,23,4),p+4}function j(e,t,p,r,i){return i||P(e,0,p,8),o.write(e,t,p,r,52,8),p+8}a.prototype.slice=function(e,t){var p,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},a.prototype.readUInt8=function(e,t){return t||G(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||G(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||G(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||G(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||G(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},a.prototype.readIntBE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||G(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||G(e,2,this.length);var p=this[e]|this[e+1]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt16BE=function(e,t){t||G(e,2,this.length);var p=this[e+1]|this[e]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt32LE=function(e,t){return t||G(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||G(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,p,r){(e=+e,t|=0,p|=0,r)||A(this,e,t,p,Math.pow(2,8*p)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+p},a.prototype.writeUInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+p},a.prototype.writeIntBE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=p-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+p},a.prototype.writeInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,p){return N(this,e,t,!0,p)},a.prototype.writeFloatBE=function(e,t,p){return N(this,e,t,!1,p)},a.prototype.writeDoubleLE=function(e,t,p){return j(this,e,t,!0,p)},a.prototype.writeDoubleBE=function(e,t,p){return j(this,e,t,!1,p)},a.prototype.copy=function(e,t,p,r){if(p||(p=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+p];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,p=void 0===p?this.length:p>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&p<57344){if(!o){if(p>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=p;continue}if(p<56320){(t-=3)>-1&&i.push(239,191,189),o=p;continue}p=65536+(o-55296<<10|p-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,p<128){if((t-=1)<0)break;i.push(p)}else if(p<2048){if((t-=2)<0)break;i.push(p>>6|192,63&p|128)}else if(p<65536){if((t-=3)<0)break;i.push(p>>12|224,p>>6&63|128,63&p|128)}else{if(!(p<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(p>>18|240,p>>12&63|128,p>>6&63|128,63&p|128)}}return i}function B(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,p,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+p]=e[o];return o}}).call(this,p(5))},function(e,t){var p,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(p===setTimeout)return setTimeout(e,0);if((p===i||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}!function(){try{p="function"==typeof setTimeout?setTimeout:i}catch(e){p=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var a,l=[],c=!1,u=-1;function y(){c&&a&&(c=!1,a.length?l=a.concat(l):u=-1,l.length&&f())}function f(){if(!c){var e=n(y);c=!0;for(var t=l.length;t;){for(a=l,l=[];++u1)for(var p=1;p0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},p.prototype.on=p.prototype.addListener,p.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var p=!1;function o(){this.removeListener(e,o),p||(p=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},p.prototype.removeListener=function(e,t){var p,i,s,n;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(p=this._events[e]).length,i=-1,p===t||r(p.listener)&&p.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(p)){for(n=s;n-- >0;)if(p[n]===t||p[n].listener&&p[n].listener===t){i=n;break}if(i<0)return this;1===p.length?(p.length=0,delete this._events[e]):p.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},p.prototype.removeAllListeners=function(e){var t,p;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(p=this._events[e]))this.removeListener(e,p);else if(p)for(;p.length;)this.removeListener(e,p[p.length-1]);return delete this._events[e],this},p.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},p.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},p.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,p){(t=e.exports=p(19)).Stream=t,t.Readable=t,t.Writable=p(15),t.Duplex=p(7),t.Transform=p(23),t.PassThrough=p(38)},function(e,t,p){"use strict";(function(t,r,o){var i=p(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,p){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(p),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;g.WritableState=S;var l=p(10);l.inherits=p(6);var c={deprecate:p(37)},u=p(20),y=p(12).Buffer,f=o.Uint8Array||function(){};var h,d=p(21);function _(){}function S(e,t){n=n||p(7),e=e||{};var r=t instanceof n;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var p=e._writableState,r=p.sync,o=p.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(p),t)!function(e,t,p,r,o){--t.pendingcb,p?(i.nextTick(o,r),i.nextTick(L,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),L(e,t))}(e,p,r,t,o);else{var s=b(p);s||p.corked||p.bufferProcessing||!p.bufferedRequest||m(e,p),r?a(E,e,p,s,o):E(e,p,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||p(7),!(h.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function w(e,t,p,r,o,i,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,p?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,p,r){p||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),L(e,t)}function m(e,t){t.bufferProcessing=!0;var p=t.bufferedRequest;if(e._writev&&p&&p.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=p;for(var n=0,a=!0;p;)o[n]=p,p.isBuf||(a=!1),p=p.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;p;){var l=p.chunk,c=p.encoding,u=p.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,c,u),p=p.next,t.bufferedRequestCount--,t.writing)break}null===p&&(t.lastBufferedRequest=null)}t.bufferedRequest=p,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function I(e,t){e._final((function(p){t.pendingcb--,p&&e.emit("error",p),t.prefinished=!0,e.emit("prefinish"),L(e,t)}))}function L(e,t){var p=b(t);return p&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(I,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),p}l.inherits(g,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(h=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!h.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):h=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,p){var r,o=this._writableState,s=!1,n=!o.objectMode&&(r=e,y.isBuffer(r)||r instanceof f);return n&&!y.isBuffer(e)&&(e=function(e){return y.from(e)}(e)),"function"==typeof t&&(p=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof p&&(p=_),o.ended?function(e,t){var p=new Error("write after end");e.emit("error",p),i.nextTick(t,p)}(this,p):(n||function(e,t,p,r){var o=!0,s=!1;return null===p?s=new TypeError("May not write null values to stream"):"string"==typeof p||void 0===p||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(r,s),o=!1),o}(this,o,e,p))&&(o.pendingcb++,s=function(e,t,p,r,o,i){if(!p){var s=function(e,t,p){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=y.from(t,p));return t}(t,r,o);r!==s&&(p=!0,o="buffer",r=s)}var n=t.objectMode?1:r.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,p){p(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,p){var r=this._writableState;"function"==typeof e?(p=e,e=null,t=null):"function"==typeof t&&(p=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,p){t.ending=!0,L(e,t),p&&(t.finished?i.nextTick(p):e.once("finish",p));t.ended=!0,e.writable=!1}(this,r,p)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,p(9),p(35).setImmediate,p(5))},function(e,t){var p={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==p.call(e)}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var r=p(28),o={},i={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},s={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},n={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1},a=function(){function e(){this.varName="",this.type="",this.options={},this.next=null,this.head=null,this.compiled=null,this.endian="be",this.constructorFn=null,this.alias=null}return e.start=function(){return new e},e.prototype.primitiveGenerateN=function(e,t){var p=s[e],r=n[e];t.pushCode(t.generateVariable(this.varName)+" = dataView.get"+p+"(offset, "+r+");"),t.pushCode("offset += "+i[e]+";")},e.prototype.primitiveN=function(e,t,p){return this.setNextParser(e,t,p)},e.prototype.useThisEndian=function(e){return e+this.endian.toLowerCase()},e.prototype.uint8=function(e,t){return this.primitiveN("uint8",e,t)},e.prototype.uint16=function(e,t){return this.primitiveN(this.useThisEndian("uint16"),e,t)},e.prototype.uint16le=function(e,t){return this.primitiveN("uint16le",e,t)},e.prototype.uint16be=function(e,t){return this.primitiveN("uint16be",e,t)},e.prototype.uint32=function(e,t){return this.primitiveN(this.useThisEndian("uint32"),e,t)},e.prototype.uint32le=function(e,t){return this.primitiveN("uint32le",e,t)},e.prototype.uint32be=function(e,t){return this.primitiveN("uint32be",e,t)},e.prototype.int8=function(e,t){return this.primitiveN("int8",e,t)},e.prototype.int16=function(e,t){return this.primitiveN(this.useThisEndian("int16"),e,t)},e.prototype.int16le=function(e,t){return this.primitiveN("int16le",e,t)},e.prototype.int16be=function(e,t){return this.primitiveN("int16be",e,t)},e.prototype.int32=function(e,t){return this.primitiveN(this.useThisEndian("int32"),e,t)},e.prototype.int32le=function(e,t){return this.primitiveN("int32le",e,t)},e.prototype.int32be=function(e,t){return this.primitiveN("int32be",e,t)},e.prototype.bigIntVersionCheck=function(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported in this runtime")},e.prototype.int64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),e,t)},e.prototype.int64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64be",e,t)},e.prototype.int64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64le",e,t)},e.prototype.uint64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),e,t)},e.prototype.uint64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64be",e,t)},e.prototype.uint64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64le",e,t)},e.prototype.floatle=function(e,t){return this.primitiveN("floatle",e,t)},e.prototype.floatbe=function(e,t){return this.primitiveN("floatbe",e,t)},e.prototype.doublele=function(e,t){return this.primitiveN("doublele",e,t)},e.prototype.doublebe=function(e,t){return this.primitiveN("doublebe",e,t)},e.prototype.bitN=function(e,t,p){return p||(p={}),p.length=e,this.setNextParser("bit",t,p)},e.prototype.bit1=function(e,t){return this.bitN(1,e,t)},e.prototype.bit2=function(e,t){return this.bitN(2,e,t)},e.prototype.bit3=function(e,t){return this.bitN(3,e,t)},e.prototype.bit4=function(e,t){return this.bitN(4,e,t)},e.prototype.bit5=function(e,t){return this.bitN(5,e,t)},e.prototype.bit6=function(e,t){return this.bitN(6,e,t)},e.prototype.bit7=function(e,t){return this.bitN(7,e,t)},e.prototype.bit8=function(e,t){return this.bitN(8,e,t)},e.prototype.bit9=function(e,t){return this.bitN(9,e,t)},e.prototype.bit10=function(e,t){return this.bitN(10,e,t)},e.prototype.bit11=function(e,t){return this.bitN(11,e,t)},e.prototype.bit12=function(e,t){return this.bitN(12,e,t)},e.prototype.bit13=function(e,t){return this.bitN(13,e,t)},e.prototype.bit14=function(e,t){return this.bitN(14,e,t)},e.prototype.bit15=function(e,t){return this.bitN(15,e,t)},e.prototype.bit16=function(e,t){return this.bitN(16,e,t)},e.prototype.bit17=function(e,t){return this.bitN(17,e,t)},e.prototype.bit18=function(e,t){return this.bitN(18,e,t)},e.prototype.bit19=function(e,t){return this.bitN(19,e,t)},e.prototype.bit20=function(e,t){return this.bitN(20,e,t)},e.prototype.bit21=function(e,t){return this.bitN(21,e,t)},e.prototype.bit22=function(e,t){return this.bitN(22,e,t)},e.prototype.bit23=function(e,t){return this.bitN(23,e,t)},e.prototype.bit24=function(e,t){return this.bitN(24,e,t)},e.prototype.bit25=function(e,t){return this.bitN(25,e,t)},e.prototype.bit26=function(e,t){return this.bitN(26,e,t)},e.prototype.bit27=function(e,t){return this.bitN(27,e,t)},e.prototype.bit28=function(e,t){return this.bitN(28,e,t)},e.prototype.bit29=function(e,t){return this.bitN(29,e,t)},e.prototype.bit30=function(e,t){return this.bitN(30,e,t)},e.prototype.bit31=function(e,t){return this.bitN(31,e,t)},e.prototype.bit32=function(e,t){return this.bitN(32,e,t)},e.prototype.namely=function(e){return o[e]=this,this.alias=e,this},e.prototype.skip=function(e,t){return this.seek(e,t)},e.prototype.seek=function(e,t){if(t&&t.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:e})},e.prototype.string=function(e,t){if(!t.zeroTerminated&&!t.length&&!t.greedy)throw new Error("Neither length, zeroTerminated, nor greedy is defined for string.");if((t.zeroTerminated||t.length)&&t.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(t.stripNull&&!t.length&&!t.greedy)throw new Error("Length or greedy must be defined if stripNull is defined.");return t.encoding=t.encoding||"utf8",this.setNextParser("string",e,t)},e.prototype.buffer=function(e,t){if(!t.length&&!t.readUntil)throw new Error("Length nor readUntil is defined in buffer parser");return this.setNextParser("buffer",e,t)},e.prototype.array=function(e,t){if(!t.readUntil&&!t.length&&!t.lengthInBytes)throw new Error("Length option of array is not defined.");if(!t.type)throw new Error("Type option of array is not defined.");if("string"==typeof t.type&&!o[t.type]&&Object.keys(i).indexOf(t.type)<0)throw new Error('Specified primitive type "'+t.type+'" is not supported.');return this.setNextParser("array",e,t)},e.prototype.choice=function(e,t){if("object"!=typeof t&&"object"==typeof e&&(t=e,e=null),!t.tag)throw new Error("Tag option of array is not defined.");if(!t.choices)throw new Error("Choices option of array is not defined.");return Object.keys(t.choices).forEach((function(p){var r=parseInt(p,10),s=t.choices[r];if(isNaN(r))throw new Error("Key of choices must be a number.");if(!s)throw new Error("Choice Case "+p+" of "+e+" is not valid.");if("string"==typeof s&&!o[s]&&Object.keys(i).indexOf(s)<0)throw new Error('Specified primitive type "'+s+'" is not supported.')})),this.setNextParser("choice",e,t)},e.prototype.nest=function(t,p){if("object"!=typeof p&&"object"==typeof t&&(p=t,t=null),!p.type)throw new Error("Type option of nest is not defined.");if(!(p.type instanceof e||o[p.type]))throw new Error("Type option of nest must be a Parser object.");if(!(p.type instanceof e||t))throw new Error("options.type must be a object if variable name is omitted.");return this.setNextParser("nest",t,p)},e.prototype.pointer=function(t,p){if(!p.offset)throw new Error("Offset option of pointer is not defined.");if(!p.type)throw new Error("Type option of pointer is not defined.");if("string"==typeof p.type){if(Object.keys(i).indexOf(p.type)<0&&!o[p.type])throw new Error('Specified type "'+p.type+'" is not supported.')}else if(!(p.type instanceof e))throw new Error("Type option of pointer must be a string or a Parser object.");return this.setNextParser("pointer",t,p)},e.prototype.saveOffset=function(e,t){return this.setNextParser("saveOffset",e,t)},e.prototype.endianess=function(e){switch(e.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error("Invalid endianess: "+e)}return this},e.prototype.create=function(e){if(!(e instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=e,this},e.prototype.getContext=function(e){var t=new r.Context(e);return t.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(t),t.pushCode("return ___parser_"+this.alias+"(0).result;")):this.addRawCode(t),t},e.prototype.getCode=function(){return this.getContext().code},e.prototype.addRawCode=function(e){e.pushCode("var offset = 0;"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),this.resolveReferences(e),e.pushCode("return vars;")},e.prototype.addAliasedCode=function(e){return e.pushCode("function ___parser_"+this.alias+"(offset) {"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),e.markResolved(this.alias),this.resolveReferences(e),e.pushCode("return { offset: offset, result: vars };"),e.pushCode("}"),e},e.prototype.resolveReferences=function(e){var t=e.getUnresolvedReferences();e.markRequested(t),t.forEach((function(t){o[t].addAliasedCode(e)}))},e.prototype.compile=function(){var e=this.getContext("imports");this.compiled=new Function("imports","TextDecoder","return function (buffer, constructorFn) { "+e.code+" };")(e.imports,"undefined"==typeof TextDecoder?p(18).TextDecoder:TextDecoder)},e.prototype.sizeOf=function(){var t=NaN;if(Object.keys(i).indexOf(this.type)>=0)t=i[this.type];else if("string"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("buffer"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("array"===this.type&&"number"==typeof this.options.length){var p=NaN;"string"==typeof this.options.type?p=i[this.options.type]:this.options.type instanceof e&&(p=this.options.type.sizeOf()),t=this.options.length*p}else"seek"===this.type?t=this.options.length:"nest"===this.type?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t},e.prototype.parse=function(e){return this.compiled||this.compile(),this.compiled(e,this.constructorFn)},e.prototype.setNextParser=function(t,p,r){var o=new e;return o.type=t,o.varName=p,o.options=r||o.options,o.endian=this.endian,this.head?this.head.next=o:this.next=o,this.head=o,this},e.prototype.generate=function(e){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,e);break;case"bit":this.generateBit(e);break;case"string":this.generateString(e);break;case"buffer":this.generateBuffer(e);break;case"seek":this.generateSeek(e);break;case"nest":this.generateNest(e);break;case"array":this.generateArray(e);break;case"choice":this.generateChoice(e);break;case"pointer":this.generatePointer(e);break;case"saveOffset":this.generateSaveOffset(e)}this.generateAssert(e)}var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},e.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":var p=e.addImport(this.options.assert);e.pushCode("if (!"+p+".call(vars, "+t+")) {");break;case"number":e.pushCode("if ("+this.options.assert+" !== "+t+") {");break;case"string":e.pushCode('if ("'+this.options.assert+'" !== '+t+") {");break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: '+t+' is " + '+this.options.assert),e.pushCode("}")}},e.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},e.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){var p=0;e.bitFields.forEach((function(e){return p+=e.options.length}));var r=e.generateTmpVariable();if(p<=8)e.pushCode("var "+r+" = dataView.getUint8(offset);"),p=8;else if(p<=16)e.pushCode("var "+r+" = dataView.getUint16(offset);"),p=16;else if(p<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var "+o+" = dataView.getUint16(offset);"),e.pushCode("var "+i+" = dataView.getUint8(offset + 2);"),e.pushCode("var "+r+" = ("+o+" << 8) | "+i+";"),p=24}else{if(!(p<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var "+r+" = dataView.getUint32(offset);"),p=32}e.pushCode("offset += "+p/8+";");var s=0,n="be"===this.endian;e.bitFields.forEach((function(t){var o=t.options.length,i=n?p-s-o:s,a=(1<> "+i+" & "+a+";"),s+=o})),e.bitFields=[]}},e.prototype.generateSeek=function(e){var t=e.generateOption(this.options.length);e.pushCode("offset += "+t+";")},e.prototype.generateString=function(e){var t=e.generateVariable(this.varName),p=e.generateTmpVariable(),r=this.options.encoding,o="hex"===r.toLowerCase(),i='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){var s=this.options.length;e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0 && offset - "+p+" < "+s+");");var n="offset - "+p+" < "+s+" ? offset - 1 : offset";e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", "+n+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", "+n+"));")}else if(this.options.length){s=e.generateOption(this.options.length);e.pushCode(o?t+" = Array.from(buffer.subarray(offset, offset + "+s+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray(offset, offset + "+s+"));"),e.pushCode("offset += "+s+";")}else this.options.zeroTerminated?(e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset - 1)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset - 1));")):this.options.greedy&&(e.pushCode("var "+p+" = offset;"),e.pushCode("while(buffer.length > offset++);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset));"));this.options.stripNull&&e.pushCode(t+" = "+t+".replace(/\\x00+$/g, '')")},e.prototype.generateBuffer=function(e){var t=e.generateVariable(this.varName);if("function"==typeof this.options.readUntil){var p=this.options.readUntil,r=e.generateTmpVariable(),o=e.generateTmpVariable();e.pushCode("var "+r+" = offset;"),e.pushCode("var "+o+" = 0;"),e.pushCode("while (offset < buffer.length) {"),e.pushCode(o+" = dataView.getUint8(offset);");var i=e.addImport(p);e.pushCode("if ("+i+".call(this, "+o+", buffer.subarray(offset))) break;"),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(t+" = buffer.subarray("+r+", offset);")}else if("eof"===this.options.readUntil)e.pushCode(t+" = buffer.subarray(offset);");else{var s=e.generateOption(this.options.length);e.pushCode(t+" = buffer.subarray(offset, offset + "+s+");"),e.pushCode("offset += "+s+";")}this.options.clone&&e.pushCode(t+" = buffer.constructor.from("+t+");")},e.prototype.generateArray=function(t){var p=t.generateOption(this.options.length),r=t.generateOption(this.options.lengthInBytes),a=this.options.type,l=t.generateTmpVariable(),c=t.generateVariable(this.varName),u=t.generateTmpVariable(),y=this.options.key,f="string"==typeof y;if(f?t.pushCode(c+" = {};"):t.pushCode(c+" = [];"),"function"==typeof this.options.readUntil?t.pushCode("do {"):"eof"===this.options.readUntil?t.pushCode("for (var "+l+" = 0; offset < buffer.length; "+l+"++) {"):void 0!==r?t.pushCode("for (var "+l+" = offset + "+r+"; offset < "+l+"; ) {"):t.pushCode("for (var "+l+" = "+p+"; "+l+" > 0; "+l+"--) {"),"string"==typeof a)if(o[a]){var h=t.generateTmpVariable();t.pushCode("var "+h+" = ___parser_"+a+"(offset);"),t.pushCode("var "+u+" = "+h+".result; offset = "+h+".offset;"),a!==this.alias&&t.addReference(a)}else{var d=s[a],_=n[a];t.pushCode("var "+u+" = dataView.get"+d+"(offset, "+_+");"),t.pushCode("offset += "+i[a]+";")}else a instanceof e&&(t.pushCode("var "+u+" = {};"),t.pushScope(u),a.generate(t),t.popScope());if(f?t.pushCode(c+"["+u+"."+y+"] = "+u+";"):t.pushCode(c+".push("+u+");"),t.pushCode("}"),"function"==typeof this.options.readUntil){var S=this.options.readUntil,g=t.addImport(S);t.pushCode("while (!"+g+".call(this, "+u+", buffer.subarray(offset)));")}},e.prototype.generateChoiceCase=function(t,p,r){if("string"==typeof r){var a=t.generateVariable(this.varName);if(o[r]){var l=t.generateTmpVariable();t.pushCode("var "+l+" = ___parser_"+r+"(offset);"),t.pushCode(a+" = "+l+".result; offset = "+l+".offset;"),r!==this.alias&&t.addReference(r)}else{var c=s[r],u=n[r];t.pushCode(a+" = dataView.get"+c+"(offset, "+u+");"),t.pushCode("offset += "+i[r])}}else r instanceof e&&(t.pushPath(p),r.generate(t),t.popPath(p))},e.prototype.generateChoice=function(e){var t=this,p=e.generateOption(this.options.tag);this.varName&&e.pushCode(e.generateVariable(this.varName)+" = {};"),e.pushCode("switch("+p+") {"),Object.keys(this.options.choices).forEach((function(p){var r=t.options.choices[parseInt(p,10)];e.pushCode("case "+p+":"),t.generateChoiceCase(e,t.varName,r),e.pushCode("break;")})),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + '+p+' + " at choice"'),e.pushCode("}")},e.prototype.generateNest=function(t){var p=t.generateVariable(this.varName);if(this.options.type instanceof e)this.varName&&t.pushCode(p+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var r=t.generateTmpVariable();t.pushCode("var "+r+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(p+" = "+r+".result; offset = "+r+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}},e.prototype.generateFormatter=function(e,t,p){if("function"==typeof p){var r=e.addImport(p);e.pushCode(t+" = "+r+".call(this, "+t+");")}},e.prototype.generatePointer=function(t){var p=this.options.type,r=t.generateOption(this.options.offset),a=t.generateTmpVariable(),l=t.generateVariable(this.varName);if(t.pushCode("var "+a+" = offset;"),t.pushCode("offset = "+r+";"),this.options.type instanceof e)t.pushCode(l+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var c=t.generateTmpVariable();t.pushCode("var "+c+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(l+" = "+c+".result; offset = "+c+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(i).indexOf(this.options.type)>=0){var u=s[p],y=n[p];t.pushCode(l+" = dataView.get"+u+"(offset, "+y+");"),t.pushCode("offset += "+i[p]+";")}t.pushCode("offset = "+a+";")},e.prototype.generateSaveOffset=function(e){var t=e.generateVariable(this.varName);e.pushCode(t+" = offset")},e}();t.Parser=a},function(e,t,p){(function(e,r){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],p=0;p=i)return e;switch(e){case"%s":return String(r[p++]);case"%d":return Number(r[p++]);case"%j":try{return JSON.stringify(r[p++])}catch(e){return"[Circular]"}default:return e}})),a=r[p];p=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),h(p)?r.showHidden=p:p&&t._extend(r,p),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),c(r,e,r.depth)}function a(e,t){var p=n.styles[t];return p?"["+n.colors[p][0]+"m"+e+"["+n.colors[p][1]+"m":e}function l(e,t){return e}function c(e,p,r){if(e.customInspect&&p&&I(p.inspect)&&p.inspect!==t.inspect&&(!p.constructor||p.constructor.prototype!==p)){var o=p.inspect(r,e);return S(o)||(o=c(e,o,r)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var p="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(p,"string")}if(_(t))return e.stylize(""+t,"number");if(h(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,p);if(i)return i;var s=Object.keys(p),n=function(e){var t={};return e.forEach((function(e,p){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(p)),b(p)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return u(p);if(0===s.length){if(I(p)){var a=p.name?": "+p.name:"";return e.stylize("[Function"+a+"]","special")}if(w(p))return e.stylize(RegExp.prototype.toString.call(p),"regexp");if(m(p))return e.stylize(Date.prototype.toString.call(p),"date");if(b(p))return u(p)}var l,E="",L=!1,T=["{","}"];(f(p)&&(L=!0,T=["[","]"]),I(p))&&(E=" [Function"+(p.name?": "+p.name:"")+"]");return w(p)&&(E=" "+RegExp.prototype.toString.call(p)),m(p)&&(E=" "+Date.prototype.toUTCString.call(p)),b(p)&&(E=" "+u(p)),0!==s.length||L&&0!=p.length?r<0?w(p)?e.stylize(RegExp.prototype.toString.call(p),"regexp"):e.stylize("[Object]","special"):(e.seen.push(p),l=L?function(e,t,p,r,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return p[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+p[1];return p[0]+t+" "+e.join(", ")+" "+p[1]}(l,E,T)):T[0]+E+T[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function y(e,t,p,r,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(r,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(p)?c(e,a.value,null):c(e,a.value,p-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+n.split("\n").map((function(e){return" "+e})).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function f(e){return Array.isArray(e)}function h(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===L(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===L(e)}function b(e){return E(e)&&("[object Error]"===L(e)||e instanceof Error)}function I(e){return"function"==typeof e}function L(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var p=r.pid;s[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,p,r)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=h,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=I,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=p(29);var v=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function U(){var e=new Date,t=[T(e.getHours()),T(e.getMinutes()),T(e.getSeconds())].join(":");return[e.getDate(),v[e.getMonth()],t].join(" ")}function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",U(),t.format.apply(t,arguments))},t.inherits=p(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var p=Object.keys(t),r=p.length;r--;)e[p[r]]=t[p[r]];return e}}).call(this,p(5),p(9))},function(e,t,p){"use strict";(function(t,r){var o=p(11);e.exports=w;var i,s=p(16);w.ReadableState=g;p(13).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=p(20),l=p(12).Buffer,c=t.Uint8Array||function(){};var u=p(10);u.inherits=p(6);var y=p(32),f=void 0;f=y&&y.debuglog?y.debuglog("stream"):function(){};var h,d=p(33),_=p(21);u.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var r=t instanceof(i=i||p(7));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(h||(h=p(22).StringDecoder),this.decoder=new h(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||p(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,p,r,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var p=t.decoder.end();p&&p.length&&(t.buffer.push(p),t.length+=t.objectMode?1:p.length)}t.ended=!0,I(e)}(e,s)):(o||(i=function(e,t){var p;r=t,l.isBuffer(r)||r instanceof c||"string"==typeof t||void 0===t||e.objectMode||(p=new TypeError("Invalid non-string/buffer chunk"));var r;return p}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!p?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):T(e,s)):m(e,s,t,!1))):r||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(f("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(L,e):L(e))}function L(e){f("emit readable"),e.emit("readable"),D(e)}function T(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(v,e,t))}function v(e,t){for(var p=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(p=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):p=function(e,t,p){var r;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++r,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++r}return t.length-=r,o}(e,t):function(e,t){var p=l.allocUnsafe(e),r=t.head,o=1;r.data.copy(p),e-=r.data.length;for(;r=r.next;){var i=r.data,s=e>i.length?i.length:e;if(i.copy(p,p.length-e,0,s),0===(e-=s)){s===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++o}return t.length-=o,p}(e,t);return r}(e,t.buffer,t.decoder),p);var p}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function C(e,t){for(var p=0,r=e.length;p=t.highWaterMark||t.ended))return f("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):I(this),null;if(0===(e=b(e,t))&&t.ended)return 0===t.length&&G(this),null;var r,o=t.needReadable;return f("need readable",o),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),p!==e&&t.ended&&G(this)),null!==r&&this.emit("data",r),r},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var p=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,f("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?c:w;function l(t,r){f("onunpipe"),t===p&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,f("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",u),e.removeListener("error",_),e.removeListener("unpipe",l),p.removeListener("end",c),p.removeListener("end",w),p.removeListener("data",d),y=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}function c(){f("onend"),e.end()}i.endEmitted?o.nextTick(a):p.once("end",a),e.on("unpipe",l);var u=function(e){return function(){var t=e._readableState;f("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,D(e))}}(p);e.on("drain",u);var y=!1;var h=!1;function d(t){f("ondata"),h=!1,!1!==e.write(t)||h||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==C(i.pipes,e))&&!y&&(f("false write response, pause",p._readableState.awaitDrain),p._readableState.awaitDrain++,h=!0),p.pause())}function _(t){f("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){f("onfinish"),e.removeListener("close",S),w()}function w(){f("unpipe"),p.unpipe(e)}return p.on("data",d),function(e,t,p){if("function"==typeof e.prependListener)return e.prependListener(t,p);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(p):e._events[t]=[p,e._events[t]]:e.on(t,p)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",p),i.flowing||(f("pipe resume"),p.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,p={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,p)),this;if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,p=function(e,t,p){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==p?p:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var p=e.toString("utf16le",t);if(p){var r=p.charCodeAt(p.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],p.slice(0,-1)}return p}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var p=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,p)}return t}function c(e,t){var p=(e.length-t)%3;return 0===p?e.toString("base64",t):(this.lastNeed=3-p,this.lastTotal=3,1===p?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-p))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function y(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,p;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";p=this.lastNeed,this.lastNeed=0}else p=0;return p=0)return o>0&&(e.lastNeed=o-1),o;if(--r=0)return o>0&&(e.lastNeed=o-2),o;if(--r=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=p;var r=e.length-(p-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,p){"use strict";e.exports=s;var r=p(7),o=p(10);function i(e,t){var p=this._transformState;p.transforming=!1;var r=p.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));p.writechunk=null,p.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&p],t&=65535;return t}r.exports={preambleByte:85,crc16:S,sbpIdTable:f,sbpMessageTypesTable:h,decode:function(e){var t=d.parse(e),p=f[t.msg_type];return void 0===p?(console.log("Unknown message type: ",t.msg_type),new s(t)):new p(t)},dispatch:function(t,p,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof p?i=p:(i=o,s=p),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(p){t.pause();try{if((n=e.concat([n,p])).length<2)return;var o=function(){var e,t,p,o,i,a,l;for(l=0;ln.length)throw new c;e=n.slice(l+1,l+6),p=n.readUInt16LE(l+1),_=n.readUInt16LE(l+3),o=n.readUInt8(l+5);var y=s&&Array.isArray(s)&&-1!==s.indexOf(p),f=s&&"number"==typeof s&&s&p,h=s&&"function"==typeof s&&s(p);if(s&&!(y||f||h))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new c;a=S(n.slice(l+6,l+6+o),S(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[r.exports.decode(d),d];throw n=n.slice(l+1),new u}();if(null===o)return;var l=o[0],y=o[1];i(null,l,y)}catch(e){if(!(e instanceof c||e instanceof u))throw e}finally{t.resume(),n.length>0&&setTimeout((function(){a(new e(0))}),0)}};t.on("data",a)}},function(e){var p={function:!0,object:!0},i=p[typeof window]&&window||this,s=p[typeof t]&&t&&!t.nodeType&&t,n=p[typeof r]&&r&&!r.nodeType&&r,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(r.exports)}).call(this,p(8).Buffer,p(27)(e),p(5))},function(e,t,p){"use strict";t.byteLength=function(e){var t=l(e),p=t[0],r=t[1];return 3*(p+r)/4-r},t.toByteArray=function(e){for(var t,p=l(e),r=p[0],s=p[1],n=new i(function(e,t,p){return 3*(t+p)/4-p}(0,r,s)),a=0,c=s>0?r-4:r,u=0;u>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(u)]<<2|o[e.charCodeAt(u+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(u)]<<10|o[e.charCodeAt(u+1)]<<4|o[e.charCodeAt(u+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,p=e.length,o=p%3,i=[],s=0,n=p-o;sn?n:s+16383));1===o?(t=e[p-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[p-2]<<8)+e[p-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var p=e.indexOf("=");return-1===p&&(p=t),[p,p===t?0:4-p%4]}function c(e,t,p){for(var o,i,s=[],n=t;n>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,p,r,o){var i,s,n=8*o-r-1,a=(1<>1,c=-7,u=p?o-1:0,y=p?-1:1,f=e[t+u];for(u+=y,i=f&(1<<-c)-1,f>>=-c,c+=n;c>0;i=256*i+e[t+u],u+=y,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=r;c>0;s=256*s+e[t+u],u+=y,c-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,r),i-=l}return(f?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,p,r,o,i){var s,n,a,l=8*i-o-1,c=(1<>1,y=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:i-1,h=r?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+u>=1?y/a:y*Math.pow(2,1-u))*a>=2&&(s++,a/=2),s+u>=c?(n=0,s=c):s+u>=1?(n=(t*a-1)*Math.pow(2,o),s+=u):(n=t*Math.pow(2,u-1)*Math.pow(2,o),s=0));o>=8;e[p+f]=255&n,f+=h,n/=256,o-=8);for(s=s<0;e[p+f]=255&s,f+=h,s/=256,l-=8);e[p+f-h]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Context=void 0;var r=function(){function e(e){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references={},this.imports=[],this.reverseImports=new Map,this.importPath=e}return e.prototype.generateVariable=function(e){var t=[],p=this.scopes[this.scopes.length-1];return t.push.apply(t,p),e&&t.push(e),t.join(".")},e.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return this.addImport(e)+".call("+this.generateVariable()+", vars)"}},e.prototype.generateError=function(e){this.pushCode("throw new Error("+e+");")},e.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},e.prototype.pushCode=function(e){this.code+=e+"\n"},e.prototype.pushPath=function(e){e&&this.scopes[this.scopes.length-1].push(e)},e.prototype.popPath=function(e){e&&this.scopes[this.scopes.length-1].pop()},e.prototype.pushScope=function(e){this.scopes.push([e])},e.prototype.popScope=function(){this.scopes.pop()},e.prototype.addImport=function(e){if(!this.importPath)return"("+e+")";var t=this.reverseImports.get(e);return t||(t=this.imports.push(e)-1,this.reverseImports.set(e,t)),this.importPath+"["+t+"]"},e.prototype.addReference=function(e){this.references[e]||(this.references[e]={resolved:!1,requested:!1})},e.prototype.markResolved=function(e){this.references[e].resolved=!0},e.prototype.markRequested=function(e){var t=this;e.forEach((function(e){t.references[e].requested=!0}))},e.prototype.getUnresolvedReferences=function(){var e=this.references;return Object.keys(this.references).filter((function(t){return!e[t].resolved&&!e[t].requested}))},e}();t.Context=r},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,p){(function(e){function p(e,t){for(var p=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),p++):p&&(e.splice(r,1),p--)}if(t)for(;p--;p)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var p=[],r=0;r=-1&&!r;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,r="/"===s.charAt(0))}return(r?"/":"")+(t=p(i(t.split("/"),(function(e){return!!e})),!r).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===s(e,-1);return(e=p(i(e.split("/"),(function(e){return!!e})),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,p){function r(e){for(var t=0;t=0&&""===e[p];p--);return t>p?[]:e.slice(t,p-t+1)}e=t.resolve(e).substr(1),p=t.resolve(p).substr(1);for(var o=r(e.split("/")),i=r(p.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,p=""+t.data;t=t.next;)p+=e+t.data;return p},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t=r.allocUnsafe(e>>>0),p=this.head,o=0;p;)i(p.data,t,o),o+=p.data.length,p=p.next;return t},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,p){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},p(36),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,p(5))},function(e,t,p){(function(e,t){!function(e,p){"use strict";if(!e.setImmediate){var r,o,i,s,n,a=1,l={},c=!1,u=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){h(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,p=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=p,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){h(e.data)},r=function(e){i.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,r=function(e){var t=u.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(h,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&h(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(t){e.postMessage(s+t,"*")}),y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),p=0;p * @license MIT */ -function r(e,t){if(e===t)return 0;for(var p=e.length,r=t.length,o=0,i=Math.min(p,r);o=0;l--)if(c[l]!==u[l])return!1;for(l=c.length-1;l>=0;l--)if(a=c[l],!g(e[a],t[a],p,r))return!1;return!0}(e,t,p,s))}return p?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function m(e,t,p,r){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof p&&(r=p,p=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(p&&p.name?" ("+p.name+").":".")+(r?" "+r:"."),e&&!o&&_(o,p,"Missing expected exception"+r);var s="string"==typeof r,n=!e&&o&&!p;if((!e&&i.isError(o)&&s&&E(o,p)||n)&&_(o,p,"Got unwanted exception"+r),e&&o&&p&&!E(o,p)||!e&&o)throw o}u.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return h(d(e.actual),128)+" "+e.operator+" "+h(d(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||_;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var p=new Error;if(p.stack){var r=p.stack,o=f(t),i=r.indexOf("\n"+o);if(i>=0){var s=r.indexOf("\n",i+1);r=r.substring(s+1)}this.stack=r}}},i.inherits(u.AssertionError,Error),u.fail=_,u.ok=S,u.equal=function(e,t,p){e!=t&&_(e,t,p,"==",u.equal)},u.notEqual=function(e,t,p){e==t&&_(e,t,p,"!=",u.notEqual)},u.deepEqual=function(e,t,p){g(e,t,!1)||_(e,t,p,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,p){g(e,t,!0)||_(e,t,p,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,p){g(e,t,!1)&&_(e,t,p,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,p,r){g(t,p,!0)&&_(t,p,r,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,p){e!==t&&_(e,t,p,"===",u.strictEqual)},u.notStrictEqual=function(e,t,p){e===t&&_(e,t,p,"!==",u.notStrictEqual)},u.throws=function(e,t,p){m(!0,e,t,p)},u.doesNotThrow=function(e,t,p){m(!1,e,t,p)},u.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var p in e)s.call(e,p)&&t.push(p);return t}}).call(this,p(5))},function(e,t,p){var r;!function(p){o(Math.pow(36,5)),o(Math.pow(16,7)),o(Math.pow(10,9)),o(Math.pow(2,30)),o(36),o(16),o(10),o(2);function o(e,t){return this instanceof o?(this._low=0,this._high=0,this.remainder=null,void 0===t?s.call(this,e):"string"==typeof e?n.call(this,e,t):void i.call(this,e,t)):new o(e,t)}function i(e,t){return this._low=0|e,this._high=0|t,this}function s(e){return this._low=65535&e,this._high=e>>>16,this}function n(e,t){var p=parseInt(e,t||10);return this._low=65535&p,this._high=p>>>16,this}o.prototype.fromBits=i,o.prototype.fromNumber=s,o.prototype.fromString=n,o.prototype.toNumber=function(){return 65536*this._high+this._low},o.prototype.toString=function(e){return this.toNumber().toString(e||10)},o.prototype.add=function(e){var t=this._low+e._low,p=t>>>16;return p+=this._high+e._high,this._low=65535&t,this._high=65535&p,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,p,r=this._high,o=this._low,i=e._high,s=e._low;return t=(p=o*s)>>>16,t+=r*s,t&=65535,t+=o*i,this._low=65535&p,this._high=65535&t,this},o.prototype.div=function(e){if(0==e._low&&0==e._high)throw Error("division by zero");if(0==e._high&&1==e._low)return this.remainder=new o(0),this;if(e.gt(this))return this.remainder=this.clone(),this._low=0,this._high=0,this;if(this.eq(e))return this.remainder=new o(0),this._low=1,this._high=0,this;for(var t=e.clone(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._low=0,this._high=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=16?this._high|=1<>>16)&65535,this},o.prototype.equals=o.prototype.eq=function(e){return this._low==e._low&&this._high==e._high},o.prototype.greaterThan=o.prototype.gt=function(e){return this._high>e._high||!(this._highe._low},o.prototype.lessThan=o.prototype.lt=function(e){return this._highe._high)&&this._low16?(this._low=this._high>>e-16,this._high=0):16==e?(this._low=this._high,this._high=0):(this._low=this._low>>e|this._high<<16-e&65535,this._high>>=e),this},o.prototype.shiftLeft=o.prototype.shiftl=function(e,t){return e>16?(this._high=this._low<>16-e,this._low=this._low<>>32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.rotateRight=o.prototype.rotr=function(e){var t=this._high<<16|this._low;return t=t>>>e|t<<32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.clone=function(){return new o(this._low,this._high)},void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r;!function(p){var o={16:s(Math.pow(16,5)),10:s(Math.pow(10,5)),2:s(Math.pow(2,5))},i={16:s(16),10:s(10),2:s(2)};function s(e,t,p,r){return this instanceof s?(this.remainder=null,"string"==typeof e?l.call(this,e,t):void 0===t?a.call(this,e):void n.apply(this,arguments)):new s(e,t,p,r)}function n(e,t,p,r){return void 0===p?(this._a00=65535&e,this._a16=e>>>16,this._a32=65535&t,this._a48=t>>>16,this):(this._a00=0|e,this._a16=0|t,this._a32=0|p,this._a48=0|r,this)}function a(e){return this._a00=65535&e,this._a16=e>>>16,this._a32=0,this._a48=0,this}function l(e,t){t=t||10,this._a00=0,this._a16=0,this._a32=0,this._a48=0;for(var p=o[t]||new s(Math.pow(t,5)),r=0,i=e.length;r=0&&(p.div(t),r[o]=p.remainder.toNumber().toString(e),p.gt(t));o--);return r[o-1]=p.toNumber().toString(e),r.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,p=t>>>16,r=(p+=this._a16+e._a16)>>>16,o=(r+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&p,this._a32=65535&r,this._a48=65535&o,this},s.prototype.subtract=function(e){return this.add(e.clone().negate())},s.prototype.multiply=function(e){var t=this._a00,p=this._a16,r=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,c=(l+=t*s)>>>16;l&=65535,c+=(l+=p*i)>>>16;var u=(c+=t*n)>>>16;return c&=65535,u+=(c+=p*s)>>>16,c&=65535,u+=(c+=r*i)>>>16,u+=t*e._a48,u&=65535,u+=p*n,u&=65535,u+=r*s,u&=65535,u+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&c,this._a48=65535&u,this},s.prototype.div=function(e){if(0==e._a16&&0==e._a32&&0==e._a48){if(0==e._a00)throw Error("division by zero");if(1==e._a00)return this.remainder=new s(0),this}if(e.gt(this))return this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0,this;if(this.eq(e))return this.remainder=new s(0),this._a00=1,this._a16=0,this._a32=0,this._a48=0,this;for(var t=e.clone(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=48?this._a48|=1<=32?this._a32|=1<=16?this._a16|=1<>>16),this._a16=65535&e,e=(65535&~this._a32)+(e>>>16),this._a32=65535&e,this._a48=~this._a48+(e>>>16)&65535,this},s.prototype.equals=s.prototype.eq=function(e){return this._a48==e._a48&&this._a00==e._a00&&this._a32==e._a32&&this._a16==e._a16},s.prototype.greaterThan=s.prototype.gt=function(e){return this._a48>e._a48||!(this._a48e._a32||!(this._a32e._a16||!(this._a16e._a00))},s.prototype.lessThan=s.prototype.lt=function(e){return this._a48e._a48)&&(this._a32e._a32)&&(this._a16e._a16)&&this._a00=48?(this._a00=this._a48>>e-48,this._a16=0,this._a32=0,this._a48=0):e>=32?(e-=32,this._a00=65535&(this._a32>>e|this._a48<<16-e),this._a16=this._a48>>e&65535,this._a32=0,this._a48=0):e>=16?(e-=16,this._a00=65535&(this._a16>>e|this._a32<<16-e),this._a16=65535&(this._a32>>e|this._a48<<16-e),this._a32=this._a48>>e&65535,this._a48=0):(this._a00=65535&(this._a00>>e|this._a16<<16-e),this._a16=65535&(this._a16>>e|this._a32<<16-e),this._a32=65535&(this._a32>>e|this._a48<<16-e),this._a48=this._a48>>e&65535),this},s.prototype.shiftLeft=s.prototype.shiftl=function(e,t){return(e%=64)>=48?(this._a48=this._a00<=32?(e-=32,this._a48=this._a16<>16-e,this._a32=this._a00<=16?(e-=16,this._a48=this._a32<>16-e,this._a32=65535&(this._a16<>16-e),this._a16=this._a00<>16-e,this._a32=65535&(this._a32<>16-e),this._a16=65535&(this._a16<>16-e),this._a00=this._a00<=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p<>>32-e,i=r<>>32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.rotateRight=s.prototype.rotr=function(e){if(0==(e%=64))return this;if(e>=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p>>>e|r<<32-e,i=r>>>e|p<<32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.clone=function(){return new s(this._a00,this._a16,this._a32,this._a48)},void 0===(r=function(){return s}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=(p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT",n.prototype.msg_type=47,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:i.prototype.parser}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),n.prototype.fieldSpec.push(["cp","writeFloatLE",4]),n.prototype.fieldSpec.push(["cf","writeFloatLE",4]),n.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_C",a.prototype.msg_type=31,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),a.prototype.fieldSpec.push(["cp","writeFloatLE",4]),a.prototype.fieldSpec.push(["cf","writeFloatLE",4]),a.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_B",l.prototype.msg_type=20,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["snr","writeFloatLE",4]),l.prototype.fieldSpec.push(["cp","writeFloatLE",4]),l.prototype.fieldSpec.push(["cf","writeFloatLE",4]),l.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",c.prototype.msg_type=21,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["snr","writeFloatLE",4]),c.prototype.fieldSpec.push(["cp","writeFloatLE",4]),c.prototype.fieldSpec.push(["cf","writeFloatLE",4]),c.prototype.fieldSpec.push(["prn","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="AcqSvProfile",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:i.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["job_type","writeUInt8",1]),u.prototype.fieldSpec.push(["status","writeUInt8",1]),u.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),u.prototype.fieldSpec.push(["int_time","writeUInt8",1]),u.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),u.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),u.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),u.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf","writeInt32LE",4]),u.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="AcqSvProfileDep",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:s.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["job_type","writeUInt8",1]),y.prototype.fieldSpec.push(["status","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),y.prototype.fieldSpec.push(["int_time","writeUInt8",1]),y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),y.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),y.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),y.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf","writeInt32LE",4]),y.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_SV_PROFILE",f.prototype.msg_type=46,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:u.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["acq_sv_profile","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_SV_PROFILE_DEP",h.prototype.msg_type=30,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:y.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["acq_sv_profile","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={47:n,MsgAcqResult:n,31:a,MsgAcqResultDepC:a,20:l,MsgAcqResultDepB:l,21:c,MsgAcqResultDepA:c,AcqSvProfile:u,AcqSvProfileDep:y,46:f,MsgAcqSvProfile:f,30:h,MsgAcqSvProfileDep:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",i.prototype.msg_type=179,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];let s=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",s.prototype.msg_type=180,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("flags").string("version",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),s.prototype.fieldSpec.push(["version","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_JUMP_TO_APP",n.prototype.msg_type=177,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("jump"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["jump","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_NAP_DEVICE_DNA_REQ",a.prototype.msg_type=222,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little"),a.prototype.fieldSpec=[];let l=function(e,t){return r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_NAP_DEVICE_DNA_RESP",l.prototype.msg_type=221,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("dna",{length:8,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["dna","array","writeUInt8",function(){return 1},8]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",c.prototype.msg_type=176,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["handshake","array","writeUInt8",function(){return 1},null]),e.exports={179:i,MsgBootloaderHandshakeReq:i,180:s,MsgBootloaderHandshakeResp:s,177:n,MsgBootloaderJumpToApp:n,222:a,MsgNapDeviceDnaReq:a,221:l,MsgNapDeviceDnaResp:l,176:c,MsgBootloaderHandshakeDepA:c}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_EXT_EVENT",i.prototype.msg_type=257,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags").uint8("pin"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),i.prototype.fieldSpec.push(["pin","writeUInt8",1]),e.exports={257:i,MsgExtEvent:i}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_REQ",i.prototype.msg_type=168,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").uint8("chunk_size").string("filename",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),i.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),i.prototype.fieldSpec.push(["chunk_size","writeUInt8",1]),i.prototype.fieldSpec.push(["filename","string",null]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_RESP",s.prototype.msg_type=163,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),s.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_DIR_REQ",n.prototype.msg_type=169,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("dirname",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),n.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),n.prototype.fieldSpec.push(["dirname","string",null]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_DIR_RESP",a.prototype.msg_type=170,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("sequence").string("contents",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),a.prototype.fieldSpec.push(["contents","string",null]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_REMOVE",l.prototype.msg_type=172,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("filename",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["filename","string",null]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_REQ",c.prototype.msg_type=173,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),c.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),c.prototype.fieldSpec.push(["filename","string",null]),c.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_RESP",u.prototype.msg_type=171,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_CONFIG_REQ",y.prototype.msg_type=4097,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sequence"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_CONFIG_RESP",f.prototype.msg_type=4098,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("window_size").uint32("batch_size").uint32("fileio_version"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),f.prototype.fieldSpec.push(["window_size","writeUInt32LE",4]),f.prototype.fieldSpec.push(["batch_size","writeUInt32LE",4]),f.prototype.fieldSpec.push(["fileio_version","writeUInt32LE",4]),e.exports={168:i,MsgFileioReadReq:i,163:s,MsgFileioReadResp:s,169:n,MsgFileioReadDirReq:n,170:a,MsgFileioReadDirResp:a,172:l,MsgFileioRemove:l,173:c,MsgFileioWriteReq:c,171:u,MsgFileioWriteResp:u,4097:y,MsgFileioConfigReq:y,4098:f,MsgFileioConfigResp:f}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_PROGRAM",i.prototype.msg_type=230,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len").array("data",{type:"uint8",length:"addr_len"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["target","writeUInt8",1]),i.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),i.prototype.fieldSpec.push(["addr_len","writeUInt8",1]),i.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},"addr_len"]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_DONE",s.prototype.msg_type=224,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("response"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["response","writeUInt8",1]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_READ_REQ",n.prototype.msg_type=231,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["target","writeUInt8",1]),n.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),n.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_READ_RESP",a.prototype.msg_type=225,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["target","writeUInt8",1]),a.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),a.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_ERASE",l.prototype.msg_type=226,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("target").uint32("sector_num"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["target","writeUInt8",1]),l.prototype.fieldSpec.push(["sector_num","writeUInt32LE",4]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",c.prototype.msg_type=227,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",u.prototype.msg_type=228,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_STM_UNIQUE_ID_REQ",y.prototype.msg_type=232,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];let f=function(e,t){return r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_STM_UNIQUE_ID_RESP",f.prototype.msg_type=229,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("stm_id",{length:12,type:"uint8"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["stm_id","array","writeUInt8",function(){return 1},12]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_M25_FLASH_WRITE_STATUS",h.prototype.msg_type=243,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("status",{length:1,type:"uint8"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["status","array","writeUInt8",function(){return 1},1]),e.exports={230:i,MsgFlashProgram:i,224:s,MsgFlashDone:s,231:n,MsgFlashReadReq:n,225:a,MsgFlashReadResp:a,226:l,MsgFlashErase:l,227:c,MsgStmFlashLockSector:c,228:u,MsgStmFlashUnlockSector:u,232:y,MsgStmUniqueIdReq:y,229:f,MsgStmUniqueIdResp:f,243:h,MsgM25FlashWriteStatus:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_IMU_RAW",i.prototype.msg_type=2304,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("acc_x").int16("acc_y").int16("acc_z").int16("gyr_x").int16("gyr_y").int16("gyr_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["acc_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_z","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_z","writeInt16LE",2]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_IMU_AUX",s.prototype.msg_type=2305,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("imu_type").int16("temp").uint8("imu_conf"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["imu_type","writeUInt8",1]),s.prototype.fieldSpec.push(["temp","writeInt16LE",2]),s.prototype.fieldSpec.push(["imu_conf","writeUInt8",1]),e.exports={2304:i,MsgImuRaw:i,2305:s,MsgImuAux:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal,p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),s=p(0).SvId,n=function(e,t){return r.call(this,e),this.messageType="IntegritySSRHeader",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="IntegritySSRHeader",n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),n.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),n.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),n.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),n.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["chain_id","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_HIGH_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_HIGH_LEVEL",a.prototype.msg_type=3001,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).nest("corr_time",{type:i.prototype.parser}).uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("use_gps_sat").uint8("use_gal_sat").uint8("use_bds_sat").array("reserved",{length:6,type:"uint8"}).uint8("use_tropo_grid_points").uint8("use_iono_grid_points").uint8("use_iono_tile_sat_los").uint8("use_iono_grid_point_sat_los"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["corr_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),a.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),a.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),a.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),a.prototype.fieldSpec.push(["use_gps_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["use_gal_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["use_bds_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},6]),a.prototype.fieldSpec.push(["use_tropo_grid_points","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_grid_points","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_tile_sat_los","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_grid_point_sat_los","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_SATELLITES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_SATELLITES",l.prototype.msg_type=3005,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint8("chain_id").uint8("const_id").uint8("n_faulty_sats").array("faulty_sats",{type:"uint8",length:"n_faulty_sats"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),l.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),l.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),l.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),l.prototype.fieldSpec.push(["const_id","writeUInt8",1]),l.prototype.fieldSpec.push(["n_faulty_sats","writeUInt8",1]),l.prototype.fieldSpec.push(["faulty_sats","array","writeUInt8",function(){return 1},"n_faulty_sats"]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",c.prototype.msg_type=3011,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),c.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),c.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",u.prototype.msg_type=3015,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),u.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",y.prototype.msg_type=3021,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),y.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),y.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",f.prototype.msg_type=3025,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint16("grid_point_id").uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),f.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),f.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),f.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_ACKNOWLEDGE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_ACKNOWLEDGE",h.prototype.msg_type=3026,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("request_id").uint32("area_id").uint8("response_code").uint16("correction_mask_on_demand").uint16("correction_mask_stream").uint8("solution_id"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["request_id","writeUInt8",1]),h.prototype.fieldSpec.push(["area_id","writeUInt32LE",4]),h.prototype.fieldSpec.push(["response_code","writeUInt8",1]),h.prototype.fieldSpec.push(["correction_mask_on_demand","writeUInt16LE",2]),h.prototype.fieldSpec.push(["correction_mask_stream","writeUInt16LE",2]),h.prototype.fieldSpec.push(["solution_id","writeUInt8",1]),e.exports={IntegritySSRHeader:n,3001:a,MsgSsrFlagHighLevel:a,3005:l,MsgSsrFlagSatellites:l,3011:c,MsgSsrFlagTropoGridPoints:c,3015:u,MsgSsrFlagIonoGridPoints:u,3021:y,MsgSsrFlagIonoTileSatLos:y,3025:f,MsgSsrFlagIonoGridPointSatLos:f,3026:h,MsgAcknowledge:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_CPU_STATE_DEP_A",i.prototype.msg_type=32512,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").string("tname",{length:15}).string("cmdline",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["index","writeUInt8",1]),i.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),i.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),i.prototype.fieldSpec.push(["tname","string",15]),i.prototype.fieldSpec.push(["cmdline","string",null]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_MEM_STATE_DEP_A",s.prototype.msg_type=32513,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").string("tname",{length:15}).string("cmdline",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["index","writeUInt8",1]),s.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),s.prototype.fieldSpec.push(["pmem","writeUInt8",1]),s.prototype.fieldSpec.push(["tname","string",15]),s.prototype.fieldSpec.push(["cmdline","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SYS_STATE_DEP_A",n.prototype.msg_type=32514,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),n.prototype.fieldSpec.push(["pmem","writeUInt8",1]),n.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),n.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",a.prototype.msg_type=32515,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("socket_count").uint16("socket_types").uint16("socket_states").string("cmdline",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["index","writeUInt8",1]),a.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_count","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),a.prototype.fieldSpec.push(["cmdline","string",null]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",l.prototype.msg_type=32516,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("recv_queued").uint16("send_queued").uint16("socket_types").uint16("socket_states").string("address_of_largest",{length:64}).string("cmdline",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["index","writeUInt8",1]),l.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),l.prototype.fieldSpec.push(["recv_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["send_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),l.prototype.fieldSpec.push(["address_of_largest","string",64]),l.prototype.fieldSpec.push(["cmdline","string",null]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",c.prototype.msg_type=32517,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("avg_queue_depth").uint32("max_queue_depth").array("socket_state_counts",{length:16,type:"uint16le"}).array("socket_type_counts",{length:16,type:"uint16le"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),c.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",u.prototype.msg_type=32518,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt8",1]),u.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),u.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),u.prototype.fieldSpec.push(["cmdline","string",null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_FD_SUMMARY",y.prototype.msg_type=32519,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sys_fd_count").string("most_opened",{greedy:!0}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sys_fd_count","writeUInt32LE",4]),y.prototype.fieldSpec.push(["most_opened","string",null]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_CPU_STATE",f.prototype.msg_type=32520,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["index","writeUInt8",1]),f.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),f.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),f.prototype.fieldSpec.push(["time","writeUInt32LE",4]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["tname","string",15]),f.prototype.fieldSpec.push(["cmdline","string",null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_MEM_STATE",h.prototype.msg_type=32521,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["index","writeUInt8",1]),h.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),h.prototype.fieldSpec.push(["pmem","writeUInt8",1]),h.prototype.fieldSpec.push(["time","writeUInt32LE",4]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["tname","string",15]),h.prototype.fieldSpec.push(["cmdline","string",null]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SYS_STATE",d.prototype.msg_type=32522,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count").uint32("time").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),d.prototype.fieldSpec.push(["pmem","writeUInt8",1]),d.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),d.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]),d.prototype.fieldSpec.push(["time","writeUInt32LE",4]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={32512:i,MsgLinuxCpuStateDepA:i,32513:s,MsgLinuxMemStateDepA:s,32514:n,MsgLinuxSysStateDepA:n,32515:a,MsgLinuxProcessSocketCounts:a,32516:l,MsgLinuxProcessSocketQueues:l,32517:c,MsgLinuxSocketUsage:c,32518:u,MsgLinuxProcessFdCount:u,32519:y,MsgLinuxProcessFdSummary:y,32520:f,MsgLinuxCpuState:f,32521:h,MsgLinuxMemState:h,32522:d,MsgLinuxSysState:d}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_LOG",i.prototype.msg_type=1025,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("level").string("text",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["level","writeUInt8",1]),i.prototype.fieldSpec.push(["text","string",null]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_FWD",s.prototype.msg_type=1026,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("source").uint8("protocol").array("fwd_payload",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["protocol","writeUInt8",1]),s.prototype.fieldSpec.push(["fwd_payload","array","writeUInt8",function(){return 1},null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_PRINT_DEP",n.prototype.msg_type=16,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").string("text",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["text","string",null]),e.exports={1025:i,MsgLog:i,1026:s,MsgFwd:s,16:n,MsgPrintDep:n}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_MAG_RAW",i.prototype.msg_type=2306,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("mag_x").int16("mag_y").int16("mag_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["mag_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_z","writeInt16LE",2]),e.exports={2306:i,MsgMagRaw:i}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_GPS_TIME",i.prototype.msg_type=258,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_GPS_TIME_GNSS",s.prototype.msg_type=260,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_UTC_TIME",n.prototype.msg_type=259,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt8",1]),n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["year","writeUInt16LE",2]),n.prototype.fieldSpec.push(["month","writeUInt8",1]),n.prototype.fieldSpec.push(["day","writeUInt8",1]),n.prototype.fieldSpec.push(["hours","writeUInt8",1]),n.prototype.fieldSpec.push(["minutes","writeUInt8",1]),n.prototype.fieldSpec.push(["seconds","writeUInt8",1]),n.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_UTC_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_UTC_TIME_GNSS",a.prototype.msg_type=261,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]),a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["year","writeUInt16LE",2]),a.prototype.fieldSpec.push(["month","writeUInt8",1]),a.prototype.fieldSpec.push(["day","writeUInt8",1]),a.prototype.fieldSpec.push(["hours","writeUInt8",1]),a.prototype.fieldSpec.push(["minutes","writeUInt8",1]),a.prototype.fieldSpec.push(["seconds","writeUInt8",1]),a.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_DOPS",l.prototype.msg_type=520,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["flags","writeUInt8",1]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF",c.prototype.msg_type=521,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),c.prototype.fieldSpec.push(["x","writeDoubleLE",8]),c.prototype.fieldSpec.push(["y","writeDoubleLE",8]),c.prototype.fieldSpec.push(["z","writeDoubleLE",8]),c.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV",u.prototype.msg_type=532,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),u.prototype.fieldSpec.push(["x","writeDoubleLE",8]),u.prototype.fieldSpec.push(["y","writeDoubleLE",8]),u.prototype.fieldSpec.push(["z","writeDoubleLE",8]),u.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH",y.prototype.msg_type=522,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),y.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),y.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),y.prototype.fieldSpec.push(["height","writeDoubleLE",8]),y.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),y.prototype.fieldSpec.push(["flags","writeUInt8",1]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_COV",f.prototype.msg_type=529,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),f.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),f.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),f.prototype.fieldSpec.push(["height","writeDoubleLE",8]),f.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),f.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]);let h=function(e,t){return r.call(this,e),this.messageType="EstimatedHorizontalErrorEllipse",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="EstimatedHorizontalErrorEllipse",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").floatle("semi_major").floatle("semi_minor").floatle("orientation"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["semi_major","writeFloatLE",4]),h.prototype.fieldSpec.push(["semi_minor","writeFloatLE",4]),h.prototype.fieldSpec.push(["orientation","writeFloatLE",4]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_ACC",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_ACC",d.prototype.msg_type=536,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").doublele("orthometric_height").floatle("h_accuracy").floatle("v_accuracy").floatle("ct_accuracy").floatle("at_accuracy").nest("h_ellipse",{type:h.prototype.parser}).uint8("confidence_and_geoid").uint8("n_sats").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),d.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),d.prototype.fieldSpec.push(["height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["orthometric_height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["h_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["v_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["ct_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["at_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["h_ellipse",h.prototype.fieldSpec]),d.prototype.fieldSpec.push(["confidence_and_geoid","writeUInt8",1]),d.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_ECEF",_.prototype.msg_type=523,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),_.prototype.fieldSpec.push(["x","writeInt32LE",4]),_.prototype.fieldSpec.push(["y","writeInt32LE",4]),_.prototype.fieldSpec.push(["z","writeInt32LE",4]),_.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_NED",S.prototype.msg_type=524,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),S.prototype.fieldSpec.push(["n","writeInt32LE",4]),S.prototype.fieldSpec.push(["e","writeInt32LE",4]),S.prototype.fieldSpec.push(["d","writeInt32LE",4]),S.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);let g=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF",g.prototype.msg_type=525,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),g.prototype.fieldSpec.push(["x","writeInt32LE",4]),g.prototype.fieldSpec.push(["y","writeInt32LE",4]),g.prototype.fieldSpec.push(["z","writeInt32LE",4]),g.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),g.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt8",1]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_COV",w.prototype.msg_type=533,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),w.prototype.fieldSpec.push(["x","writeInt32LE",4]),w.prototype.fieldSpec.push(["y","writeInt32LE",4]),w.prototype.fieldSpec.push(["z","writeInt32LE",4]),w.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),w.prototype.fieldSpec.push(["flags","writeUInt8",1]);let E=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED",E.prototype.msg_type=526,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),E.prototype.fieldSpec.push(["n","writeInt32LE",4]),E.prototype.fieldSpec.push(["e","writeInt32LE",4]),E.prototype.fieldSpec.push(["d","writeInt32LE",4]),E.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),E.prototype.fieldSpec.push(["flags","writeUInt8",1]);let m=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_COV",m.prototype.msg_type=530,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),m.prototype.fieldSpec.push(["n","writeInt32LE",4]),m.prototype.fieldSpec.push(["e","writeInt32LE",4]),m.prototype.fieldSpec.push(["d","writeInt32LE",4]),m.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),m.prototype.fieldSpec.push(["flags","writeUInt8",1]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_GNSS",b.prototype.msg_type=553,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),b.prototype.fieldSpec.push(["x","writeDoubleLE",8]),b.prototype.fieldSpec.push(["y","writeDoubleLE",8]),b.prototype.fieldSpec.push(["z","writeDoubleLE",8]),b.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["flags","writeUInt8",1]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",I.prototype.msg_type=564,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeDoubleLE",8]),I.prototype.fieldSpec.push(["y","writeDoubleLE",8]),I.prototype.fieldSpec.push(["z","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_GNSS",L.prototype.msg_type=554,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),L.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),L.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),L.prototype.fieldSpec.push(["height","writeDoubleLE",8]),L.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["flags","writeUInt8",1]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_COV_GNSS",T.prototype.msg_type=561,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),T.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),T.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),T.prototype.fieldSpec.push(["height","writeDoubleLE",8]),T.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["flags","writeUInt8",1]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_GNSS",v.prototype.msg_type=557,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["x","writeInt32LE",4]),v.prototype.fieldSpec.push(["y","writeInt32LE",4]),v.prototype.fieldSpec.push(["z","writeInt32LE",4]),v.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_COV_GNSS",U.prototype.msg_type=565,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),U.prototype.fieldSpec.push(["x","writeInt32LE",4]),U.prototype.fieldSpec.push(["y","writeInt32LE",4]),U.prototype.fieldSpec.push(["z","writeInt32LE",4]),U.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),U.prototype.fieldSpec.push(["flags","writeUInt8",1]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_GNSS",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_GNSS",M.prototype.msg_type=558,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),M.prototype.fieldSpec.push(["n","writeInt32LE",4]),M.prototype.fieldSpec.push(["e","writeInt32LE",4]),M.prototype.fieldSpec.push(["d","writeInt32LE",4]),M.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),M.prototype.fieldSpec.push(["flags","writeUInt8",1]);let D=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_COV_GNSS",D.prototype.msg_type=562,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),D.prototype.fieldSpec.push(["n","writeInt32LE",4]),D.prototype.fieldSpec.push(["e","writeInt32LE",4]),D.prototype.fieldSpec.push(["d","writeInt32LE",4]),D.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),D.prototype.fieldSpec.push(["flags","writeUInt8",1]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_VEL_BODY",O.prototype.msg_type=531,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),O.prototype.fieldSpec.push(["x","writeInt32LE",4]),O.prototype.fieldSpec.push(["y","writeInt32LE",4]),O.prototype.fieldSpec.push(["z","writeInt32LE",4]),O.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),O.prototype.fieldSpec.push(["flags","writeUInt8",1]);let G=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_COG",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_VEL_COG",G.prototype.msg_type=540,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").uint32("tow").uint32("cog").uint32("sog").int32("v_up").uint32("cog_accuracy").uint32("sog_accuracy").uint32("v_up_accuracy").uint16("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),G.prototype.fieldSpec.push(["cog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up","writeInt32LE",4]),G.prototype.fieldSpec.push(["cog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["flags","writeUInt16LE",2]);let A=function(e,t){return r.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="MSG_AGE_CORRECTIONS",A.prototype.msg_type=528,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint32("tow").uint16("age"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),A.prototype.fieldSpec.push(["age","writeUInt16LE",2]);let C=function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="MSG_GPS_TIME_DEP_A",C.prototype.msg_type=256,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),C.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),C.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),C.prototype.fieldSpec.push(["flags","writeUInt8",1]);let R=function(e,t){return r.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_DOPS_DEP_A",R.prototype.msg_type=518,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),R.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]);let P=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_DEP_A",P.prototype.msg_type=512,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),P.prototype.fieldSpec.push(["x","writeDoubleLE",8]),P.prototype.fieldSpec.push(["y","writeDoubleLE",8]),P.prototype.fieldSpec.push(["z","writeDoubleLE",8]),P.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),P.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),P.prototype.fieldSpec.push(["flags","writeUInt8",1]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_DEP_A",N.prototype.msg_type=513,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),N.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),N.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),N.prototype.fieldSpec.push(["height","writeDoubleLE",8]),N.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),N.prototype.fieldSpec.push(["flags","writeUInt8",1]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_ECEF_DEP_A",j.prototype.msg_type=514,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),j.prototype.fieldSpec.push(["x","writeInt32LE",4]),j.prototype.fieldSpec.push(["y","writeInt32LE",4]),j.prototype.fieldSpec.push(["z","writeInt32LE",4]),j.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),j.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),j.prototype.fieldSpec.push(["flags","writeUInt8",1]);let x=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_NED_DEP_A",x.prototype.msg_type=515,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),x.prototype.fieldSpec.push(["n","writeInt32LE",4]),x.prototype.fieldSpec.push(["e","writeInt32LE",4]),x.prototype.fieldSpec.push(["d","writeInt32LE",4]),x.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),x.prototype.fieldSpec.push(["flags","writeUInt8",1]);let F=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_DEP_A",F.prototype.msg_type=516,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),F.prototype.fieldSpec.push(["x","writeInt32LE",4]),F.prototype.fieldSpec.push(["y","writeInt32LE",4]),F.prototype.fieldSpec.push(["z","writeInt32LE",4]),F.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),F.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),F.prototype.fieldSpec.push(["flags","writeUInt8",1]);let k=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_DEP_A",k.prototype.msg_type=517,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),k.prototype.fieldSpec.push(["n","writeInt32LE",4]),k.prototype.fieldSpec.push(["e","writeInt32LE",4]),k.prototype.fieldSpec.push(["d","writeInt32LE",4]),k.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),k.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["flags","writeUInt8",1]);let B=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_HEADING_DEP_A",B.prototype.msg_type=519,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),B.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),B.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),B.prototype.fieldSpec.push(["flags","writeUInt8",1]);let q=function(e,t){return r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="MSG_PROTECTION_LEVEL_DEP_A",q.prototype.msg_type=534,q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("tow").uint16("vpl").uint16("hpl").doublele("lat").doublele("lon").doublele("height").uint8("flags"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),q.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),q.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),q.prototype.fieldSpec.push(["height","writeDoubleLE",8]),q.prototype.fieldSpec.push(["flags","writeUInt8",1]);let z=function(e,t){return r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="MSG_PROTECTION_LEVEL",z.prototype.msg_type=535,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("tow").int16("wn").uint16("hpl").uint16("vpl").uint16("atpl").uint16("ctpl").uint16("hvpl").uint16("vvpl").uint16("hopl").uint16("popl").uint16("ropl").doublele("lat").doublele("lon").doublele("height").int32("v_x").int32("v_y").int32("v_z").int32("roll").int32("pitch").int32("heading").uint32("flags"),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),z.prototype.fieldSpec.push(["wn","writeInt16LE",2]),z.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["atpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ctpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hopl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["popl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ropl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),z.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),z.prototype.fieldSpec.push(["height","writeDoubleLE",8]),z.prototype.fieldSpec.push(["v_x","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_y","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_z","writeInt32LE",4]),z.prototype.fieldSpec.push(["roll","writeInt32LE",4]),z.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),z.prototype.fieldSpec.push(["heading","writeInt32LE",4]),z.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let H=function(e,t){return r.call(this,e),this.messageType="MSG_UTC_LEAP_SECOND",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.prototype)).messageType="MSG_UTC_LEAP_SECOND",H.prototype.msg_type=570,H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").int16("reserved_0").int16("reserved_1").int8("reserved_2").int8("count_before").uint16("reserved_3").uint16("reserved_4").uint16("ref_wn").uint8("ref_dn").int8("count_after"),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["reserved_0","writeInt16LE",2]),H.prototype.fieldSpec.push(["reserved_1","writeInt16LE",2]),H.prototype.fieldSpec.push(["reserved_2","writeInt8",1]),H.prototype.fieldSpec.push(["count_before","writeInt8",1]),H.prototype.fieldSpec.push(["reserved_3","writeUInt16LE",2]),H.prototype.fieldSpec.push(["reserved_4","writeUInt16LE",2]),H.prototype.fieldSpec.push(["ref_wn","writeUInt16LE",2]),H.prototype.fieldSpec.push(["ref_dn","writeUInt8",1]),H.prototype.fieldSpec.push(["count_after","writeInt8",1]);let V=function(e,t){return r.call(this,e),this.messageType="MSG_REFERENCE_FRAME_PARAM",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.prototype)).messageType="MSG_REFERENCE_FRAME_PARAM",V.prototype.msg_type=580,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").uint8("ssr_iod").string("sn",{length:32}).string("tn",{length:32}).uint8("sin").uint16("utn").uint16("re_t0").int32("delta_X0").int32("delta_Y0").int32("delta_Z0").int32("theta_01").int32("theta_02").int32("theta_03").int32("scale").int32("dot_delta_X0").int32("dot_delta_Y0").int32("dot_delta_Z0").int32("dot_theta_01").int32("dot_theta_02").int32("dot_theta_03").int16("dot_scale"),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),V.prototype.fieldSpec.push(["sn","string",32]),V.prototype.fieldSpec.push(["tn","string",32]),V.prototype.fieldSpec.push(["sin","writeUInt8",1]),V.prototype.fieldSpec.push(["utn","writeUInt16LE",2]),V.prototype.fieldSpec.push(["re_t0","writeUInt16LE",2]),V.prototype.fieldSpec.push(["delta_X0","writeInt32LE",4]),V.prototype.fieldSpec.push(["delta_Y0","writeInt32LE",4]),V.prototype.fieldSpec.push(["delta_Z0","writeInt32LE",4]),V.prototype.fieldSpec.push(["theta_01","writeInt32LE",4]),V.prototype.fieldSpec.push(["theta_02","writeInt32LE",4]),V.prototype.fieldSpec.push(["theta_03","writeInt32LE",4]),V.prototype.fieldSpec.push(["scale","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_delta_X0","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_delta_Y0","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_delta_Z0","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_theta_01","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_theta_02","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_theta_03","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_scale","writeInt16LE",2]);let Y=function(e,t){return r.call(this,e),this.messageType="MSG_POSE_RELATIVE",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(r.prototype)).messageType="MSG_POSE_RELATIVE",Y.prototype.msg_type=581,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").uint32("tow").uint8("sensor_id").uint32("timestamp_1").uint32("timestamp_2").array("trans",{length:3,type:"int32le"}).int32("w").int32("x").int32("y").int32("z").floatle("cov_r_x_x").floatle("cov_r_x_y").floatle("cov_r_x_z").floatle("cov_r_y_y").floatle("cov_r_y_z").floatle("cov_r_z_z").floatle("cov_c_x_x").floatle("cov_c_x_y").floatle("cov_c_x_z").floatle("cov_c_y_y").floatle("cov_c_y_z").floatle("cov_c_z_z").uint8("flags"),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),Y.prototype.fieldSpec.push(["sensor_id","writeUInt8",1]),Y.prototype.fieldSpec.push(["timestamp_1","writeUInt32LE",4]),Y.prototype.fieldSpec.push(["timestamp_2","writeUInt32LE",4]),Y.prototype.fieldSpec.push(["trans","array","writeInt32LE",function(){return 4},3]),Y.prototype.fieldSpec.push(["w","writeInt32LE",4]),Y.prototype.fieldSpec.push(["x","writeInt32LE",4]),Y.prototype.fieldSpec.push(["y","writeInt32LE",4]),Y.prototype.fieldSpec.push(["z","writeInt32LE",4]),Y.prototype.fieldSpec.push(["cov_r_x_x","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_x_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_x_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_y_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_y_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_z_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_x_x","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_x_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_x_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_y_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_y_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_z_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={258:i,MsgGpsTime:i,260:s,MsgGpsTimeGnss:s,259:n,MsgUtcTime:n,261:a,MsgUtcTimeGnss:a,520:l,MsgDops:l,521:c,MsgPosEcef:c,532:u,MsgPosEcefCov:u,522:y,MsgPosLlh:y,529:f,MsgPosLlhCov:f,EstimatedHorizontalErrorEllipse:h,536:d,MsgPosLlhAcc:d,523:_,MsgBaselineEcef:_,524:S,MsgBaselineNed:S,525:g,MsgVelEcef:g,533:w,MsgVelEcefCov:w,526:E,MsgVelNed:E,530:m,MsgVelNedCov:m,553:b,MsgPosEcefGnss:b,564:I,MsgPosEcefCovGnss:I,554:L,MsgPosLlhGnss:L,561:T,MsgPosLlhCovGnss:T,557:v,MsgVelEcefGnss:v,565:U,MsgVelEcefCovGnss:U,558:M,MsgVelNedGnss:M,562:D,MsgVelNedCovGnss:D,531:O,MsgVelBody:O,540:G,MsgVelCog:G,528:A,MsgAgeCorrections:A,256:C,MsgGpsTimeDepA:C,518:R,MsgDopsDepA:R,512:P,MsgPosEcefDepA:P,513:N,MsgPosLlhDepA:N,514:j,MsgBaselineEcefDepA:j,515:x,MsgBaselineNedDepA:x,516:F,MsgVelEcefDepA:F,517:k,MsgVelNedDepA:k,519:B,MsgBaselineHeadingDepA:B,534:q,MsgProtectionLevelDepA:q,535:z,MsgProtectionLevel:z,570:H,MsgUtcLeapSecond:H,580:V,MsgReferenceFrameParam:V,581:Y,MsgPoseRelative:Y}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.prototype)).messageType="MSG_NDB_EVENT",s.prototype.msg_type=1024,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("recv_time").uint8("event").uint8("object_type").uint8("result").uint8("data_source").nest("object_sid",{type:i.prototype.parser}).nest("src_sid",{type:i.prototype.parser}).uint16("original_sender"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["event","writeUInt8",1]),s.prototype.fieldSpec.push(["object_type","writeUInt8",1]),s.prototype.fieldSpec.push(["result","writeUInt8",1]),s.prototype.fieldSpec.push(["data_source","writeUInt8",1]),s.prototype.fieldSpec.push(["object_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["src_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["original_sender","writeUInt16LE",2]),e.exports={1024:s,MsgNdbEvent:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,c=p(0).GPSTimeSec,u=(p(0).SvId,function(e,t){return r.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(r.prototype)).messageType="ObservationHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("t",{type:a.prototype.parser}).uint8("n_obs"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="Doppler",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").int16("i").uint8("f"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["i","writeInt16LE",2]),y.prototype.fieldSpec.push(["f","writeUInt8",1]);let f=function(e,t){return r.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="PackedObsContent",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).nest("D",{type:y.prototype.parser}).uint8("cn0").uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["P","writeUInt32LE",4]),f.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["D",y.prototype.fieldSpec]),f.prototype.fieldSpec.push(["cn0","writeUInt8",1]),f.prototype.fieldSpec.push(["lock","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let h=function(e,t){return r.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="PackedOsrContent",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}).uint16("iono_std").uint16("tropo_std").uint16("range_std"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["P","writeUInt32LE",4]),h.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),h.prototype.fieldSpec.push(["lock","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),h.prototype.fieldSpec.push(["iono_std","writeUInt16LE",2]),h.prototype.fieldSpec.push(["tropo_std","writeUInt16LE",2]),h.prototype.fieldSpec.push(["range_std","writeUInt16LE",2]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_BASE_POS_LLH",_.prototype.msg_type=68,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").doublele("lat").doublele("lon").doublele("height"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),_.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),_.prototype.fieldSpec.push(["height","writeDoubleLE",8]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_BASE_POS_ECEF",S.prototype.msg_type=72,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").doublele("x").doublele("y").doublele("z"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["x","writeDoubleLE",8]),S.prototype.fieldSpec.push(["y","writeDoubleLE",8]),S.prototype.fieldSpec.push(["z","writeDoubleLE",8]);let g=function(e,t){return r.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).floatle("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),g.prototype.fieldSpec.push(["ura","writeFloatLE",4]),g.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),g.prototype.fieldSpec.push(["valid","writeUInt8",1]),g.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let w=function(e,t){return r.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),w.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),w.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),w.prototype.fieldSpec.push(["valid","writeUInt8",1]),w.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let E=function(e,t){return r.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContentDepA",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toe",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),E.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),E.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),E.prototype.fieldSpec.push(["valid","writeUInt8",1]),E.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let m=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_E",m.prototype.msg_type=129,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),m.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),m.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["w","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),m.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),m.prototype.fieldSpec.push(["iode","writeUInt8",1]),m.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_F",b.prototype.msg_type=134,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),b.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),b.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),b.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["w","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),b.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS",I.prototype.msg_type=138,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),I.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),I.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["w","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af0","writeFloatLE",4]),I.prototype.fieldSpec.push(["af1","writeFloatLE",4]),I.prototype.fieldSpec.push(["af2","writeFloatLE",4]),I.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt8",1]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_QZSS",L.prototype.msg_type=142,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),L.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),L.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["w","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af0","writeFloatLE",4]),L.prototype.fieldSpec.push(["af1","writeFloatLE",4]),L.prototype.fieldSpec.push(["af2","writeFloatLE",4]),L.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_BDS",T.prototype.msg_type=137,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd1").floatle("tgd2").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),T.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),T.prototype.fieldSpec.push(["tgd2","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),T.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),T.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["w","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af1","writeFloatLE",4]),T.prototype.fieldSpec.push(["af2","writeFloatLE",4]),T.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt8",1]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GAL_DEP_A",v.prototype.msg_type=149,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),v.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GAL",U.prototype.msg_type=141,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc").uint8("source"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),U.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),U.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),U.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),U.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["w","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af2","writeFloatLE",4]),U.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),U.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),U.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),U.prototype.fieldSpec.push(["source","writeUInt8",1]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_A",M.prototype.msg_type=130,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),M.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),M.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);let D=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_A",D.prototype.msg_type=131,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),D.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),D.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),D.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_B",O.prototype.msg_type=132,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),O.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),O.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);let G=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_SBAS",G.prototype.msg_type=140,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"floatle"}).array("acc",{length:3,type:"floatle"}).floatle("a_gf0").floatle("a_gf1"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),G.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["vel","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["a_gf0","writeFloatLE",4]),G.prototype.fieldSpec.push(["a_gf1","writeFloatLE",4]);let A=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_B",A.prototype.msg_type=133,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),A.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),A.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),A.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);let C=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_C",C.prototype.msg_type=135,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),C.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),C.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["fcn","writeUInt8",1]);let R=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_D",R.prototype.msg_type=136,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn").uint8("iod"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),R.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),R.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["fcn","writeUInt8",1]),R.prototype.fieldSpec.push(["iod","writeUInt8",1]);let P=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO",P.prototype.msg_type=139,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("gamma").floatle("tau").floatle("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"floatle"}).uint8("fcn").uint8("iod"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),P.prototype.fieldSpec.push(["gamma","writeFloatLE",4]),P.prototype.fieldSpec.push(["tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["d_tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),P.prototype.fieldSpec.push(["fcn","writeUInt8",1]),P.prototype.fieldSpec.push(["iod","writeUInt8",1]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_D",N.prototype.msg_type=128,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),N.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),N.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["w","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["valid","writeUInt8",1]),N.prototype.fieldSpec.push(["healthy","writeUInt8",1]),N.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["iode","writeUInt8",1]),N.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),N.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_A",j.prototype.msg_type=26,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),j.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),j.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["w","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["valid","writeUInt8",1]),j.prototype.fieldSpec.push(["healthy","writeUInt8",1]),j.prototype.fieldSpec.push(["prn","writeUInt8",1]);let x=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_B",x.prototype.msg_type=70,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn").uint8("iode"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),x.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),x.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["w","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["valid","writeUInt8",1]),x.prototype.fieldSpec.push(["healthy","writeUInt8",1]),x.prototype.fieldSpec.push(["prn","writeUInt8",1]),x.prototype.fieldSpec.push(["iode","writeUInt8",1]);let F=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_C",F.prototype.msg_type=71,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),F.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),F.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),F.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),F.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),F.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),F.prototype.fieldSpec.push(["w","writeDoubleLE",8]),F.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),F.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),F.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),F.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),F.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),F.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),F.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),F.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),F.prototype.fieldSpec.push(["valid","writeUInt8",1]),F.prototype.fieldSpec.push(["healthy","writeUInt8",1]),F.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),F.prototype.fieldSpec.push(["iode","writeUInt8",1]),F.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),F.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);let k=function(e,t){return r.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="ObservationHeaderDep",k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("t",{type:l.prototype.parser}).uint8("n_obs"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["t",l.prototype.fieldSpec]),k.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);let B=function(e,t){return r.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="CarrierPhaseDepA",B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["i","writeInt32LE",4]),B.prototype.fieldSpec.push(["f","writeUInt8",1]);let q=function(e,t){return r.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="PackedObsContentDepA",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").uint8("prn"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["P","writeUInt32LE",4]),q.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),q.prototype.fieldSpec.push(["cn0","writeUInt8",1]),q.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),q.prototype.fieldSpec.push(["prn","writeUInt8",1]);let z=function(e,t){return r.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="PackedObsContentDepB",z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["P","writeUInt32LE",4]),z.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),z.prototype.fieldSpec.push(["cn0","writeUInt8",1]),z.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),z.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);let H=function(e,t){return r.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.prototype)).messageType="PackedObsContentDepC",H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["P","writeUInt32LE",4]),H.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),H.prototype.fieldSpec.push(["cn0","writeUInt8",1]),H.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),H.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);let V=function(e,t){return r.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.prototype)).messageType="MSG_OBS_DEP_A",V.prototype.msg_type=69,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),V.prototype.fieldSpec.push(["obs","array",q.prototype.fieldSpec,function(){return this.fields.array.length},null]);let Y=function(e,t){return r.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(r.prototype)).messageType="MSG_OBS_DEP_B",Y.prototype.msg_type=67,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:z.prototype.parser,readUntil:"eof"}),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),Y.prototype.fieldSpec.push(["obs","array",z.prototype.fieldSpec,function(){return this.fields.array.length},null]);let W=function(e,t){return r.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(r.prototype)).messageType="MSG_OBS_DEP_C",W.prototype.msg_type=73,W.prototype.constructor=W,W.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:H.prototype.parser,readUntil:"eof"}),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),W.prototype.fieldSpec.push(["obs","array",H.prototype.fieldSpec,function(){return this.fields.array.length},null]);let Q=function(e,t){return r.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(r.prototype)).messageType="MSG_IONO",Q.prototype.msg_type=144,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).doublele("a0").doublele("a1").doublele("a2").doublele("a3").doublele("b0").doublele("b1").doublele("b2").doublele("b3"),Q.prototype.fieldSpec=[],Q.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),Q.prototype.fieldSpec.push(["a0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a3","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b3","writeDoubleLE",8]);let K=function(e,t){return r.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(r.prototype)).messageType="MSG_SV_CONFIGURATION_GPS_DEP",K.prototype.msg_type=145,K.prototype.constructor=K,K.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).uint32("l2c_mask"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),K.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);let X=function(e,t){return r.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(r.prototype)).messageType="GnssCapb",X.prototype.constructor=X,X.prototype.parser=(new o).endianess("little").uint64("gps_active").uint64("gps_l2c").uint64("gps_l5").uint32("glo_active").uint32("glo_l2of").uint32("glo_l3").uint64("sbas_active").uint64("sbas_l5").uint64("bds_active").uint64("bds_d2nav").uint64("bds_b2").uint64("bds_b2a").uint32("qzss_active").uint64("gal_active").uint64("gal_e5"),X.prototype.fieldSpec=[],X.prototype.fieldSpec.push(["gps_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l2c","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["glo_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l2of","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l3","writeUInt32LE",4]),X.prototype.fieldSpec.push(["sbas_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["sbas_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_d2nav","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2a","writeUInt64LE",8]),X.prototype.fieldSpec.push(["qzss_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["gal_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gal_e5","writeUInt64LE",8]);let J=function(e,t){return r.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(r.prototype)).messageType="MSG_GNSS_CAPB",J.prototype.msg_type=150,J.prototype.constructor=J,J.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).nest("gc",{type:X.prototype.parser}),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),J.prototype.fieldSpec.push(["gc",X.prototype.fieldSpec]);let Z=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_DELAY_DEP_A",Z.prototype.msg_type=146,Z.prototype.constructor=Z,Z.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).uint8("prn").uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),Z.prototype.fieldSpec=[],Z.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["prn","writeUInt8",1]),Z.prototype.fieldSpec.push(["valid","writeUInt8",1]),Z.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);let $=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_DELAY_DEP_B",$.prototype.msg_type=147,$.prototype.constructor=$,$.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:n.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),$.prototype.fieldSpec=[],$.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),$.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),$.prototype.fieldSpec.push(["valid","writeUInt8",1]),$.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);let ee=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_DELAY",ee.prototype.msg_type=148,ee.prototype.constructor=ee,ee.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:s.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),ee.prototype.fieldSpec=[],ee.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["valid","writeUInt8",1]),ee.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);let te=function(e,t){return r.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContent",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),te.prototype.fieldSpec=[],te.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),te.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),te.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),te.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),te.prototype.fieldSpec.push(["valid","writeUInt8",1]),te.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let pe=function(e,t){return r.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContentDep",pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),pe.prototype.fieldSpec.push(["valid","writeUInt8",1]),pe.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let re=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GPS_DEP",re.prototype.msg_type=112,re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("common",{type:pe.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["common",pe.prototype.fieldSpec]),re.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),re.prototype.fieldSpec.push(["w","writeDoubleLE",8]),re.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);let oe=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GPS",oe.prototype.msg_type=114,oe.prototype.constructor=oe,oe.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),oe.prototype.fieldSpec=[],oe.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),oe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);let ie=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GLO_DEP",ie.prototype.msg_type=113,ie.prototype.constructor=ie,ie.prototype.parser=(new o).endianess("little").nest("common",{type:pe.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),ie.prototype.fieldSpec=[],ie.prototype.fieldSpec.push(["common",pe.prototype.fieldSpec]),ie.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["i","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);let se=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GLO",se.prototype.msg_type=115,se.prototype.constructor=se,se.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),se.prototype.fieldSpec=[],se.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),se.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["i","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),se.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),se.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);let ne=function(e,t){return r.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(r.prototype)).messageType="MSG_GLO_BIASES",ne.prototype.msg_type=117,ne.prototype.constructor=ne,ne.prototype.parser=(new o).endianess("little").uint8("mask").int16("l1ca_bias").int16("l1p_bias").int16("l2ca_bias").int16("l2p_bias"),ne.prototype.fieldSpec=[],ne.prototype.fieldSpec.push(["mask","writeUInt8",1]),ne.prototype.fieldSpec.push(["l1ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l1p_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2p_bias","writeInt16LE",2]);let ae=function(e,t){return r.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(r.prototype)).messageType="SvAzEl",ae.prototype.constructor=ae,ae.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("az").int8("el"),ae.prototype.fieldSpec=[],ae.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ae.prototype.fieldSpec.push(["az","writeUInt8",1]),ae.prototype.fieldSpec.push(["el","writeInt8",1]);let le=function(e,t){return r.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(r.prototype)).messageType="MSG_SV_AZ_EL",le.prototype.msg_type=151,le.prototype.constructor=le,le.prototype.parser=(new o).endianess("little").array("azel",{type:ae.prototype.parser,readUntil:"eof"}),le.prototype.fieldSpec=[],le.prototype.fieldSpec.push(["azel","array",ae.prototype.fieldSpec,function(){return this.fields.array.length},null]);let ce=function(e,t){return r.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(ce.prototype=Object.create(r.prototype)).messageType="MSG_OSR",ce.prototype.msg_type=1600,ce.prototype.constructor=ce,ce.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:h.prototype.parser,readUntil:"eof"}),ce.prototype.fieldSpec=[],ce.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),ce.prototype.fieldSpec.push(["obs","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:u,Doppler:y,PackedObsContent:f,PackedOsrContent:h,74:d,MsgObs:d,68:_,MsgBasePosLlh:_,72:S,MsgBasePosEcef:S,EphemerisCommonContent:g,EphemerisCommonContentDepB:w,EphemerisCommonContentDepA:E,129:m,MsgEphemerisGpsDepE:m,134:b,MsgEphemerisGpsDepF:b,138:I,MsgEphemerisGps:I,142:L,MsgEphemerisQzss:L,137:T,MsgEphemerisBds:T,149:v,MsgEphemerisGalDepA:v,141:U,MsgEphemerisGal:U,130:M,MsgEphemerisSbasDepA:M,131:D,MsgEphemerisGloDepA:D,132:O,MsgEphemerisSbasDepB:O,140:G,MsgEphemerisSbas:G,133:A,MsgEphemerisGloDepB:A,135:C,MsgEphemerisGloDepC:C,136:R,MsgEphemerisGloDepD:R,139:P,MsgEphemerisGlo:P,128:N,MsgEphemerisDepD:N,26:j,MsgEphemerisDepA:j,70:x,MsgEphemerisDepB:x,71:F,MsgEphemerisDepC:F,ObservationHeaderDep:k,CarrierPhaseDepA:B,PackedObsContentDepA:q,PackedObsContentDepB:z,PackedObsContentDepC:H,69:V,MsgObsDepA:V,67:Y,MsgObsDepB:Y,73:W,MsgObsDepC:W,144:Q,MsgIono:Q,145:K,MsgSvConfigurationGpsDep:K,GnssCapb:X,150:J,MsgGnssCapb:J,146:Z,MsgGroupDelayDepA:Z,147:$,MsgGroupDelayDepB:$,148:ee,MsgGroupDelay:ee,AlmanacCommonContent:te,AlmanacCommonContentDep:pe,112:re,MsgAlmanacGpsDep:re,114:oe,MsgAlmanacGps:oe,113:ie,MsgAlmanacGloDep:ie,115:se,MsgAlmanacGlo:se,117:ne,MsgGloBiases:ne,SvAzEl:ae,151:le,MsgSvAzEl:le,1600:ce,MsgOsr:ce}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_HEADING",i.prototype.msg_type=527,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),i.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_ORIENT_QUAT",s.prototype.msg_type=544,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("tow").int32("w").int32("x").int32("y").int32("z").floatle("w_accuracy").floatle("x_accuracy").floatle("y_accuracy").floatle("z_accuracy").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["w","writeInt32LE",4]),s.prototype.fieldSpec.push(["x","writeInt32LE",4]),s.prototype.fieldSpec.push(["y","writeInt32LE",4]),s.prototype.fieldSpec.push(["z","writeInt32LE",4]),s.prototype.fieldSpec.push(["w_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["x_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["y_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["z_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_ORIENT_EULER",n.prototype.msg_type=545,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").int32("roll").int32("pitch").int32("yaw").floatle("roll_accuracy").floatle("pitch_accuracy").floatle("yaw_accuracy").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["roll","writeInt32LE",4]),n.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),n.prototype.fieldSpec.push(["yaw","writeInt32LE",4]),n.prototype.fieldSpec.push(["roll_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["pitch_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["yaw_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_ANGULAR_RATE",a.prototype.msg_type=546,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeInt32LE",4]),a.prototype.fieldSpec.push(["y","writeInt32LE",4]),a.prototype.fieldSpec.push(["z","writeInt32LE",4]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={527:i,MsgBaselineHeading:i,544:s,MsgOrientQuat:s,545:n,MsgOrientEuler:n,546:a,MsgAngularRate:a}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=p(0).GPSTime,a=p(0).GPSTimeDep,l=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];let c=function(e,t){return r.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SET_TIME",c.prototype.msg_type=104,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little"),c.prototype.fieldSpec=[];let u=function(e,t){return r.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_RESET",u.prototype.msg_type=182,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_RESET_DEP",y.prototype.msg_type=178,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];let f=function(e,t){return r.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_CW_RESULTS",f.prototype.msg_type=192,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little"),f.prototype.fieldSpec=[];let h=function(e,t){return r.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_CW_START",h.prototype.msg_type=193,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];let d=function(e,t){return r.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_RESET_FILTERS",d.prototype.msg_type=34,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("filter"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["filter","writeUInt8",1]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_INIT_BASE_DEP",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_INIT_BASE_DEP",_.prototype.msg_type=35,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little"),_.prototype.fieldSpec=[];let S=function(e,t){return r.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_THREAD_STATE",S.prototype.msg_type=23,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").string("name",{length:20}).uint16("cpu").uint32("stack_free"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["name","string",20]),S.prototype.fieldSpec.push(["cpu","writeUInt16LE",2]),S.prototype.fieldSpec.push(["stack_free","writeUInt32LE",4]);let g=function(e,t){return r.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="UARTChannel",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").floatle("tx_throughput").floatle("rx_throughput").uint16("crc_error_count").uint16("io_error_count").uint8("tx_buffer_level").uint8("rx_buffer_level"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["rx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["crc_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["io_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["tx_buffer_level","writeUInt8",1]),g.prototype.fieldSpec.push(["rx_buffer_level","writeUInt8",1]);let w=function(e,t){return r.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="Period",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").int32("avg").int32("pmin").int32("pmax").int32("current"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["avg","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmin","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmax","writeInt32LE",4]),w.prototype.fieldSpec.push(["current","writeInt32LE",4]);let E=function(e,t){return r.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="Latency",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").int32("avg").int32("lmin").int32("lmax").int32("current"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["avg","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmin","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmax","writeInt32LE",4]),E.prototype.fieldSpec.push(["current","writeInt32LE",4]);let m=function(e,t){return r.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="MSG_UART_STATE",m.prototype.msg_type=29,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}).nest("obs_period",{type:w.prototype.parser}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["obs_period",w.prototype.fieldSpec]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_UART_STATE_DEPA",b.prototype.msg_type=24,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_IAR_STATE",I.prototype.msg_type=25,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("num_hyps"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_MASK_SATELLITE",L.prototype.msg_type=43,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_MASK_SATELLITE_DEP",T.prototype.msg_type=27,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["mask","writeUInt8",1]),T.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_DEVICE_MONITOR",v.prototype.msg_type=181,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").int16("dev_vin").int16("cpu_vint").int16("cpu_vaux").int16("cpu_temperature").int16("fe_temperature"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["dev_vin","writeInt16LE",2]),v.prototype.fieldSpec.push(["cpu_vint","writeInt16LE",2]),v.prototype.fieldSpec.push(["cpu_vaux","writeInt16LE",2]),v.prototype.fieldSpec.push(["cpu_temperature","writeInt16LE",2]),v.prototype.fieldSpec.push(["fe_temperature","writeInt16LE",2]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_COMMAND_REQ",U.prototype.msg_type=184,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("sequence").string("command",{greedy:!0}),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),U.prototype.fieldSpec.push(["command","string",null]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_COMMAND_RESP",M.prototype.msg_type=185,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("sequence").int32("code"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),M.prototype.fieldSpec.push(["code","writeInt32LE",4]);let D=function(e,t){return r.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_COMMAND_OUTPUT",D.prototype.msg_type=188,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("sequence").string("line",{greedy:!0}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),D.prototype.fieldSpec.push(["line","string",null]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_NETWORK_STATE_REQ",O.prototype.msg_type=186,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little"),O.prototype.fieldSpec=[];let G=function(e,t){return r.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_NETWORK_STATE_RESP",G.prototype.msg_type=187,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").array("ipv4_address",{length:4,type:"uint8"}).uint8("ipv4_mask_size").array("ipv6_address",{length:16,type:"uint8"}).uint8("ipv6_mask_size").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}).uint32("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["ipv4_address","array","writeUInt8",function(){return 1},4]),G.prototype.fieldSpec.push(["ipv4_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["ipv6_address","array","writeUInt8",function(){return 1},16]),G.prototype.fieldSpec.push(["ipv6_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["interface_name","string",16]),G.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let A=function(e,t){return r.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="NetworkUsage",A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint64("duration").uint64("total_bytes").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["duration","writeUInt64LE",8]),A.prototype.fieldSpec.push(["total_bytes","writeUInt64LE",8]),A.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["interface_name","string",16]);let C=function(e,t){return r.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="MSG_NETWORK_BANDWIDTH_USAGE",C.prototype.msg_type=189,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").array("interfaces",{type:A.prototype.parser,readUntil:"eof"}),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["interfaces","array",A.prototype.fieldSpec,function(){return this.fields.array.length},null]);let R=function(e,t){return r.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_CELL_MODEM_STATUS",R.prototype.msg_type=190,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").int8("signal_strength").floatle("signal_error_rate").array("reserved",{type:"uint8",readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["signal_strength","writeInt8",1]),R.prototype.fieldSpec.push(["signal_error_rate","writeFloatLE",4]),R.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},null]);let P=function(e,t){return r.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_SPECAN_DEP",P.prototype.msg_type=80,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:a.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),P.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),P.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_SPECAN",N.prototype.msg_type=81,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:n.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),N.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_FRONT_END_GAIN",j.prototype.msg_type=191,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").array("rf_gain",{length:8,type:"int8"}).array("if_gain",{length:8,type:"int8"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["rf_gain","array","writeInt8",function(){return 1},8]),j.prototype.fieldSpec.push(["if_gain","array","writeInt8",function(){return 1},8]),e.exports={105:l,MsgAlmanac:l,104:c,MsgSetTime:c,182:u,MsgReset:u,178:y,MsgResetDep:y,192:f,MsgCwResults:f,193:h,MsgCwStart:h,34:d,MsgResetFilters:d,35:_,MsgInitBaseDep:_,23:S,MsgThreadState:S,UARTChannel:g,Period:w,Latency:E,29:m,MsgUartState:m,24:b,MsgUartStateDepa:b,25:I,MsgIarState:I,43:L,MsgMaskSatellite:L,27:T,MsgMaskSatelliteDep:T,181:v,MsgDeviceMonitor:v,184:U,MsgCommandReq:U,185:M,MsgCommandResp:M,188:D,MsgCommandOutput:D,186:O,MsgNetworkStateReq:O,187:G,MsgNetworkStateResp:G,NetworkUsage:A,189:C,MsgNetworkBandwidthUsage:C,190:R,MsgCellModemStatus:R,80:P,MsgSpecanDep:P,81:N,MsgSpecan:N,191:j,MsgFrontEndGain:j}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.prototype)).messageType="MSG_SBAS_RAW",s.prototype.msg_type=30583,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint32("tow").uint8("message_type").array("data",{length:27,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["message_type","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},27]),e.exports={30583:s,MsgSbasRaw:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_SAVE",i.prototype.msg_type=161,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];let s=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_WRITE",s.prototype.msg_type=160,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["setting","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_WRITE_RESP",n.prototype.msg_type=175,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["status","writeUInt8",1]),n.prototype.fieldSpec.push(["setting","string",null]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_REQ",a.prototype.msg_type=164,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["setting","string",null]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_RESP",l.prototype.msg_type=165,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["setting","string",null]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",c.prototype.msg_type=162,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",u.prototype.msg_type=167,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]),u.prototype.fieldSpec.push(["setting","string",null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",y.prototype.msg_type=166,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];let f=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_REGISTER",f.prototype.msg_type=174,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["setting","string",null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_REGISTER_RESP",h.prototype.msg_type=431,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["status","writeUInt8",1]),h.prototype.fieldSpec.push(["setting","string",null]),e.exports={161:i,MsgSettingsSave:i,160:s,MsgSettingsWrite:s,175:n,MsgSettingsWriteResp:n,164:a,MsgSettingsReadReq:a,165:l,MsgSettingsReadResp:l,162:c,MsgSettingsReadByIndexReq:c,167:u,MsgSettingsReadByIndexResp:u,166:y,MsgSettingsReadByIndexDone:y,174:f,MsgSettingsRegister:f,431:h,MsgSettingsRegisterResp:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="UtcTime",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="UtcTime",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["year","writeUInt16LE",2]),i.prototype.fieldSpec.push(["month","writeUInt8",1]),i.prototype.fieldSpec.push(["day","writeUInt8",1]),i.prototype.fieldSpec.push(["hours","writeUInt8",1]),i.prototype.fieldSpec.push(["minutes","writeUInt8",1]),i.prototype.fieldSpec.push(["seconds","writeUInt8",1]),i.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);let s=function(e,t){return r.call(this,e),this.messageType="ECDSASignature",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="ECDSASignature",s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("len").array("data",{length:72,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["len","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},72]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_CERTIFICATE",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_CERTIFICATE",n.prototype.msg_type=3076,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("n_msg").array("certificate_id",{length:4,type:"uint8"}).uint8("flags").array("certificate_bytes",{type:"uint8",readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["n_msg","writeUInt8",1]),n.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]),n.prototype.fieldSpec.push(["certificate_bytes","array","writeUInt8",function(){return 1},null]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_CERTIFICATE_CHAIN",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_CERTIFICATE_CHAIN",a.prototype.msg_type=3081,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").array("root_certificate",{length:20,type:"uint8"}).array("intermediate_certificate",{length:20,type:"uint8"}).array("corrections_certificate",{length:20,type:"uint8"}).nest("expiration",{type:i.prototype.parser}).nest("signature",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["root_certificate","array","writeUInt8",function(){return 1},20]),a.prototype.fieldSpec.push(["intermediate_certificate","array","writeUInt8",function(){return 1},20]),a.prototype.fieldSpec.push(["corrections_certificate","array","writeUInt8",function(){return 1},20]),a.prototype.fieldSpec.push(["expiration",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["signature",s.prototype.fieldSpec]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_CERTIFICATE_CHAIN_DEP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_CERTIFICATE_CHAIN_DEP",l.prototype.msg_type=3077,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("root_certificate",{length:20,type:"uint8"}).array("intermediate_certificate",{length:20,type:"uint8"}).array("corrections_certificate",{length:20,type:"uint8"}).nest("expiration",{type:i.prototype.parser}).array("signature",{length:64,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["root_certificate","array","writeUInt8",function(){return 1},20]),l.prototype.fieldSpec.push(["intermediate_certificate","array","writeUInt8",function(){return 1},20]),l.prototype.fieldSpec.push(["corrections_certificate","array","writeUInt8",function(){return 1},20]),l.prototype.fieldSpec.push(["expiration",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_SIGNATURE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_SIGNATURE",c.prototype.msg_type=3080,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("flags").uint8("stream_counter").uint8("on_demand_counter").array("certificate_id",{length:4,type:"uint8"}).nest("signature",{type:s.prototype.parser}).array("signed_messages",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt8",1]),c.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),c.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),c.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),c.prototype.fieldSpec.push(["signature",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["signed_messages","array","writeUInt8",function(){return 1},null]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_SIGNATURE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_SIGNATURE_DEP_B",u.prototype.msg_type=3079,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("flags").uint8("stream_counter").uint8("on_demand_counter").array("certificate_id",{length:4,type:"uint8"}).uint8("n_signature_bytes").array("signature",{length:72,type:"uint8"}).array("signed_messages",{type:"uint8",readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt8",1]),u.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),u.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),u.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),u.prototype.fieldSpec.push(["n_signature_bytes","writeUInt8",1]),u.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},72]),u.prototype.fieldSpec.push(["signed_messages","array","writeUInt8",function(){return 1},null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_SIGNATURE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_SIGNATURE_DEP_A",y.prototype.msg_type=3078,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("flags").uint8("stream_counter").uint8("on_demand_counter").array("certificate_id",{length:4,type:"uint8"}).array("signature",{length:64,type:"uint8"}).array("signed_messages",{type:"uint8",readUntil:"eof"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["flags","writeUInt8",1]),y.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),y.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),y.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),y.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]),y.prototype.fieldSpec.push(["signed_messages","array","writeUInt8",function(){return 1},null]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_ED25519_CERTIFICATE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_ED25519_CERTIFICATE_DEP",f.prototype.msg_type=3074,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("n_msg").array("fingerprint",{length:20,type:"uint8"}).array("certificate_bytes",{type:"uint8",readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["n_msg","writeUInt8",1]),f.prototype.fieldSpec.push(["fingerprint","array","writeUInt8",function(){return 1},20]),f.prototype.fieldSpec.push(["certificate_bytes","array","writeUInt8",function(){return 1},null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_ED25519_SIGNATURE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_ED25519_SIGNATURE_DEP_A",h.prototype.msg_type=3073,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("signature",{length:64,type:"uint8"}).array("fingerprint",{length:20,type:"uint8"}).array("signed_messages",{type:"uint32le",readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]),h.prototype.fieldSpec.push(["fingerprint","array","writeUInt8",function(){return 1},20]),h.prototype.fieldSpec.push(["signed_messages","array","writeUInt32LE",function(){return 4},null]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_ED25519_SIGNATURE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_ED25519_SIGNATURE_DEP_B",d.prototype.msg_type=3075,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("stream_counter").uint8("on_demand_counter").array("signature",{length:64,type:"uint8"}).array("fingerprint",{length:20,type:"uint8"}).array("signed_messages",{type:"uint32le",readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),d.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),d.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]),d.prototype.fieldSpec.push(["fingerprint","array","writeUInt8",function(){return 1},20]),d.prototype.fieldSpec.push(["signed_messages","array","writeUInt32LE",function(){return 4},null]),e.exports={UtcTime:i,ECDSASignature:s,3076:n,MsgEcdsaCertificate:n,3081:a,MsgCertificateChain:a,3077:l,MsgCertificateChainDep:l,3080:c,MsgEcdsaSignature:c,3079:u,MsgEcdsaSignatureDepB:u,3078:y,MsgEcdsaSignatureDepA:y,3074:f,MsgEd25519CertificateDep:f,3073:h,MsgEd25519SignatureDepA:h,3075:d,MsgEd25519SignatureDepB:d}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="SolutionInputType",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="SolutionInputType",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("sensor_type").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_SOLN_META_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_SOLN_META_DEP_A",s.prototype.msg_type=65295,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("pdop").uint16("hdop").uint16("vdop").uint8("n_sats").uint16("age_corrections").uint8("alignment_status").uint32("last_used_gnss_pos_tow").uint32("last_used_gnss_vel_tow").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),s.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),s.prototype.fieldSpec.push(["alignment_status","writeUInt8",1]),s.prototype.fieldSpec.push(["last_used_gnss_pos_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["last_used_gnss_vel_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_SOLN_META",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_SOLN_META",n.prototype.msg_type=65294,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").uint16("pdop").uint16("hdop").uint16("vdop").uint16("age_corrections").uint32("age_gnss").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_gnss","writeUInt32LE",4]),n.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);let a=function(e,t){return r.call(this,e),this.messageType="GNSSInputType",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="GNSSInputType",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="IMUInputType",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="IMUInputType",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["flags","writeUInt8",1]);let c=function(e,t){return r.call(this,e),this.messageType="OdoInputType",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="OdoInputType",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={SolutionInputType:i,65295:s,MsgSolnMetaDepA:s,65294:n,MsgSolnMeta:n,GNSSInputType:a,IMUInputType:l,OdoInputType:c}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),n=p(0).SvId,a=function(e,t){return r.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="CodeBiasesContent",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("code").int16("value"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["code","writeUInt8",1]),a.prototype.fieldSpec.push(["value","writeInt16LE",2]);let l=function(e,t){return r.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="PhaseBiasesContent",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("code").uint8("integer_indicator").uint8("widelane_integer_indicator").uint8("discontinuity_counter").int32("bias"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["code","writeUInt8",1]),l.prototype.fieldSpec.push(["integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["widelane_integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["discontinuity_counter","writeUInt8",1]),l.prototype.fieldSpec.push(["bias","writeInt32LE",4]);let c=function(e,t){return r.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="STECHeader",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),c.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),c.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),c.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),u.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),u.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),u.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),u.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="STECSatElement",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).uint8("stec_quality_indicator").array("stec_coeff",{length:4,type:"int16le"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),y.prototype.fieldSpec.push(["stec_quality_indicator","writeUInt8",1]),y.prototype.fieldSpec.push(["stec_coeff","array","writeInt16LE",function(){return 2},4]);let f=function(e,t){return r.call(this,e),this.messageType="TroposphericDelayCorrectionNoStd",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="TroposphericDelayCorrectionNoStd",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),f.prototype.fieldSpec.push(["wet","writeInt8",1]);let h=function(e,t){return r.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="TroposphericDelayCorrection",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet").uint8("stddev"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),h.prototype.fieldSpec.push(["wet","writeInt8",1]),h.prototype.fieldSpec.push(["stddev","writeUInt8",1]);let d=function(e,t){return r.call(this,e),this.messageType="STECResidualNoStd",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="STECResidualNoStd",d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),d.prototype.fieldSpec.push(["residual","writeInt16LE",2]);let _=function(e,t){return r.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="STECResidual",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual").uint8("stddev"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),_.prototype.fieldSpec.push(["residual","writeInt16LE",2]),_.prototype.fieldSpec.push(["stddev","writeUInt8",1]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK",S.prototype.msg_type=1501,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint32("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),S.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),S.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),S.prototype.fieldSpec.push(["iod","writeUInt32LE",4]),S.prototype.fieldSpec.push(["radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["along","writeInt32LE",4]),S.prototype.fieldSpec.push(["cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["c0","writeInt32LE",4]),S.prototype.fieldSpec.push(["c1","writeInt32LE",4]),S.prototype.fieldSpec.push(["c2","writeInt32LE",4]);let g=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="MSG_SSR_CODE_BIASES",g.prototype.msg_type=1505,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").array("biases",{type:a.prototype.parser,readUntil:"eof"}),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),g.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),g.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),g.prototype.fieldSpec.push(["biases","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_SSR_PHASE_BIASES",w.prototype.msg_type=1510,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("dispersive_bias").uint8("mw_consistency").uint16("yaw").int8("yaw_rate").array("biases",{type:l.prototype.parser,readUntil:"eof"}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),w.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),w.prototype.fieldSpec.push(["dispersive_bias","writeUInt8",1]),w.prototype.fieldSpec.push(["mw_consistency","writeUInt8",1]),w.prototype.fieldSpec.push(["yaw","writeUInt16LE",2]),w.prototype.fieldSpec.push(["yaw_rate","writeInt8",1]),w.prototype.fieldSpec.push(["biases","array",l.prototype.fieldSpec,function(){return this.fields.array.length},null]);let E=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP",E.prototype.msg_type=1531,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),E.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);let m=function(e,t){return r.call(this,e),this.messageType="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="BoundsHeader",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),m.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),m.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),m.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),m.prototype.fieldSpec.push(["sol_id","writeUInt8",1]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION",b.prototype.msg_type=1533,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("n_sats").array("stec_sat_list",{type:y.prototype.parser,length:"n_sats"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),b.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",I.prototype.msg_type=1532,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),I.prototype.fieldSpec.push(["index","writeUInt16LE",2]),I.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),I.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);let L=function(e,t){return r.call(this,e),this.messageType="STECSatElementIntegrity",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="STECSatElementIntegrity",L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("stec_residual",{type:_.prototype.parser}).uint8("stec_bound_mu").uint8("stec_bound_sig").uint8("stec_bound_mu_dot").uint8("stec_bound_sig_dot"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["stec_residual",_.prototype.fieldSpec]),L.prototype.fieldSpec.push(["stec_bound_mu","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_bound_sig","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_bound_mu_dot","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_bound_sig_dot","writeUInt8",1]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",T.prototype.msg_type=1534,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("tropo_qi").uint16("grid_point_id").nest("tropo_delay_correction",{type:h.prototype.parser}).uint8("tropo_v_hydro_bound_mu").uint8("tropo_v_hydro_bound_sig").uint8("tropo_v_wet_bound_mu").uint8("tropo_v_wet_bound_sig").uint8("n_sats").array("stec_sat_list",{type:L.prototype.parser,length:"n_sats"}),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),T.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),T.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tropo_qi","writeUInt8",1]),T.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),T.prototype.fieldSpec.push(["tropo_v_hydro_bound_mu","writeUInt8",1]),T.prototype.fieldSpec.push(["tropo_v_hydro_bound_sig","writeUInt8",1]),T.prototype.fieldSpec.push(["tropo_v_wet_bound_mu","writeUInt8",1]),T.prototype.fieldSpec.push(["tropo_v_wet_bound_sig","writeUInt8",1]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["stec_sat_list","array",L.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP_A",v.prototype.msg_type=1526,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),v.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),v.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),v.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),v.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),v.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),v.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),v.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),v.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP_B",U.prototype.msg_type=1527,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),U.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),U.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),U.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),U.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION",M.prototype.msg_type=1528,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("update_interval").uint8("sol_id").uint8("iod_atmo").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),M.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),M.prototype.fieldSpec.push(["sol_id","writeUInt8",1]),M.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),M.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),M.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),M.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),M.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),M.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),M.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),M.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),M.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),M.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);let D=function(e,t){return r.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="SatelliteAPC",D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("sat_info").uint16("svn").array("pco",{length:3,type:"int16le"}).array("pcv",{length:21,type:"int8"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),D.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),D.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),D.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),D.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC_DEP",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_SSR_SATELLITE_APC_DEP",O.prototype.msg_type=1540,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").array("apc",{type:D.prototype.parser,readUntil:"eof"}),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["apc","array",D.prototype.fieldSpec,function(){return this.fields.array.length},null]);let G=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_SSR_SATELLITE_APC",G.prototype.msg_type=1541,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("update_interval").uint8("sol_id").uint8("iod_ssr").array("apc",{type:D.prototype.parser,readUntil:"eof"}),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),G.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),G.prototype.fieldSpec.push(["sol_id","writeUInt8",1]),G.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),G.prototype.fieldSpec.push(["apc","array",D.prototype.fieldSpec,function(){return this.fields.array.length},null]);let A=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",A.prototype.msg_type=1500,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),A.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),A.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),A.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),A.prototype.fieldSpec.push(["iod","writeUInt8",1]),A.prototype.fieldSpec.push(["radial","writeInt32LE",4]),A.prototype.fieldSpec.push(["along","writeInt32LE",4]),A.prototype.fieldSpec.push(["cross","writeInt32LE",4]),A.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),A.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),A.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),A.prototype.fieldSpec.push(["c0","writeInt32LE",4]),A.prototype.fieldSpec.push(["c1","writeInt32LE",4]),A.prototype.fieldSpec.push(["c2","writeInt32LE",4]);let C=function(e,t){return r.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="STECHeaderDepA",C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),C.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),C.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),C.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),C.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);let R=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeaderDepA",R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),R.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),R.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),R.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),R.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),R.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);let P=function(e,t){return r.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="GridDefinitionHeaderDepA",P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint8("region_size_inverse").uint16("area_width").uint16("lat_nw_corner_enc").uint16("lon_nw_corner_enc").uint8("num_msgs").uint8("seq_num"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),P.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),P.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),P.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),P.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),P.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",N.prototype.msg_type=1515,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),N.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",j.prototype.msg_type=1520,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").nest("header",{type:R.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["header",R.prototype.fieldSpec]),j.prototype.fieldSpec.push(["index","writeUInt16LE",2]),j.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),j.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);let x=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",x.prototype.msg_type=1530,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").nest("header",{type:R.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["header",R.prototype.fieldSpec]),x.prototype.fieldSpec.push(["index","writeUInt16LE",2]),x.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),x.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);let F=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",F.prototype.msg_type=1525,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").nest("header",{type:P.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["header",P.prototype.fieldSpec]),F.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]);let k=function(e,t){return r.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="OrbitClockBound",k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").uint8("sat_id").uint8("orb_radial_bound_mu").uint8("orb_along_bound_mu").uint8("orb_cross_bound_mu").uint8("orb_radial_bound_sig").uint8("orb_along_bound_sig").uint8("orb_cross_bound_sig").uint8("clock_bound_mu").uint8("clock_bound_sig"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),k.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);let B=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",B.prototype.msg_type=1502,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:k.prototype.parser,length:"n_sats"}),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),B.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),B.prototype.fieldSpec.push(["const_id","writeUInt8",1]),B.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),B.prototype.fieldSpec.push(["orbit_clock_bounds","array",k.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);let q=function(e,t){return r.call(this,e),this.messageType="CodePhaseBiasesSatSig",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="CodePhaseBiasesSatSig",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint8("sat_id").uint8("signal_id").uint8("code_bias_bound_mu").uint8("code_bias_bound_sig").uint8("phase_bias_bound_mu").uint8("phase_bias_bound_sig"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),q.prototype.fieldSpec.push(["signal_id","writeUInt8",1]),q.prototype.fieldSpec.push(["code_bias_bound_mu","writeUInt8",1]),q.prototype.fieldSpec.push(["code_bias_bound_sig","writeUInt8",1]),q.prototype.fieldSpec.push(["phase_bias_bound_mu","writeUInt8",1]),q.prototype.fieldSpec.push(["phase_bias_bound_sig","writeUInt8",1]);let z=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",z.prototype.msg_type=1516,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats_signals").array("satellites_signals",{type:q.prototype.parser,length:"n_sats_signals"}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),z.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),z.prototype.fieldSpec.push(["const_id","writeUInt8",1]),z.prototype.fieldSpec.push(["n_sats_signals","writeUInt8",1]),z.prototype.fieldSpec.push(["satellites_signals","array",q.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats_signals"]);let H=function(e,t){return r.call(this,e),this.messageType="OrbitClockBoundDegradation",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.prototype)).messageType="OrbitClockBoundDegradation",H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").uint8("orb_radial_bound_mu_dot").uint8("orb_along_bound_mu_dot").uint8("orb_cross_bound_mu_dot").uint8("orb_radial_bound_sig_dot").uint8("orb_along_bound_sig_dot").uint8("orb_cross_bound_sig_dot").uint8("clock_bound_mu_dot").uint8("clock_bound_sig_dot"),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["orb_radial_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_along_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_cross_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_radial_bound_sig_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_along_bound_sig_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_cross_bound_sig_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["clock_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["clock_bound_sig_dot","writeUInt8",1]);let V=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",V.prototype.msg_type=1503,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint64("sat_bitmask").nest("orbit_clock_bounds_degradation",{type:H.prototype.parser}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),V.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),V.prototype.fieldSpec.push(["const_id","writeUInt8",1]),V.prototype.fieldSpec.push(["sat_bitmask","writeUInt64LE",8]),V.prototype.fieldSpec.push(["orbit_clock_bounds_degradation",H.prototype.fieldSpec]),e.exports={CodeBiasesContent:a,PhaseBiasesContent:l,STECHeader:c,GriddedCorrectionHeader:u,STECSatElement:y,TroposphericDelayCorrectionNoStd:f,TroposphericDelayCorrection:h,STECResidualNoStd:d,STECResidual:_,1501:S,MsgSsrOrbitClock:S,1505:g,MsgSsrCodeBiases:g,1510:w,MsgSsrPhaseBiases:w,1531:E,MsgSsrStecCorrectionDep:E,BoundsHeader:m,1533:b,MsgSsrStecCorrection:b,1532:I,MsgSsrGriddedCorrection:I,STECSatElementIntegrity:L,1534:T,MsgSsrGriddedCorrectionBounds:T,1526:v,MsgSsrTileDefinitionDepA:v,1527:U,MsgSsrTileDefinitionDepB:U,1528:M,MsgSsrTileDefinition:M,SatelliteAPC:D,1540:O,MsgSsrSatelliteApcDep:O,1541:G,MsgSsrSatelliteApc:G,1500:A,MsgSsrOrbitClockDepA:A,STECHeaderDepA:C,GriddedCorrectionHeaderDepA:R,GridDefinitionHeaderDepA:P,1515:N,MsgSsrStecCorrectionDepA:N,1520:j,MsgSsrGriddedCorrectionNoStdDepA:j,1530:x,MsgSsrGriddedCorrectionDepA:x,1525:F,MsgSsrGridDefinitionDepA:F,OrbitClockBound:k,1502:B,MsgSsrOrbitClockBounds:B,CodePhaseBiasesSatSig:q,1516:z,MsgSsrCodePhaseBiasesBounds:z,OrbitClockBoundDegradation:H,1503:V,MsgSsrOrbitClockBoundsDegradation:V}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_STARTUP",i.prototype.msg_type=65280,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("cause").uint8("startup_type").uint16("reserved"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["cause","writeUInt8",1]),i.prototype.fieldSpec.push(["startup_type","writeUInt8",1]),i.prototype.fieldSpec.push(["reserved","writeUInt16LE",2]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_DGNSS_STATUS",s.prototype.msg_type=65282,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint16("latency").uint8("num_signals").string("source",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["latency","writeUInt16LE",2]),s.prototype.fieldSpec.push(["num_signals","writeUInt8",1]),s.prototype.fieldSpec.push(["source","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_HEARTBEAT",n.prototype.msg_type=65535,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let a=function(e,t){return r.call(this,e),this.messageType="SubSystemReport",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="SubSystemReport",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint16("component").uint8("generic").uint8("specific"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["component","writeUInt16LE",2]),a.prototype.fieldSpec.push(["generic","writeUInt8",1]),a.prototype.fieldSpec.push(["specific","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_STATUS_REPORT",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_STATUS_REPORT",l.prototype.msg_type=65534,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("sequence").uint32("uptime").array("status",{type:a.prototype.parser,readUntil:"eof"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),l.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),l.prototype.fieldSpec.push(["status","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);let c=function(e,t){return r.call(this,e),this.messageType="StatusJournalItem",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="StatusJournalItem",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("uptime").nest("report",{type:a.prototype.parser}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["report",a.prototype.fieldSpec]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_STATUS_JOURNAL",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_STATUS_JOURNAL",u.prototype.msg_type=65533,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("total_status_reports").uint8("sequence_descriptor").array("journal",{type:c.prototype.parser,readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),u.prototype.fieldSpec.push(["total_status_reports","writeUInt32LE",4]),u.prototype.fieldSpec.push(["sequence_descriptor","writeUInt8",1]),u.prototype.fieldSpec.push(["journal","array",c.prototype.fieldSpec,function(){return this.fields.array.length},null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_INS_STATUS",y.prototype.msg_type=65283,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_CSAC_TELEMETRY",f.prototype.msg_type=65284,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["id","writeUInt8",1]),f.prototype.fieldSpec.push(["telemetry","string",null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_CSAC_TELEMETRY_LABELS",h.prototype.msg_type=65285,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry_labels",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["id","writeUInt8",1]),h.prototype.fieldSpec.push(["telemetry_labels","string",null]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_INS_UPDATES",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_INS_UPDATES",d.prototype.msg_type=65286,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").uint8("gnsspos").uint8("gnssvel").uint8("wheelticks").uint8("speed").uint8("nhc").uint8("zerovel"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["gnsspos","writeUInt8",1]),d.prototype.fieldSpec.push(["gnssvel","writeUInt8",1]),d.prototype.fieldSpec.push(["wheelticks","writeUInt8",1]),d.prototype.fieldSpec.push(["speed","writeUInt8",1]),d.prototype.fieldSpec.push(["nhc","writeUInt8",1]),d.prototype.fieldSpec.push(["zerovel","writeUInt8",1]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_GNSS_TIME_OFFSET",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_GNSS_TIME_OFFSET",_.prototype.msg_type=65287,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("weeks").int32("milliseconds").int16("microseconds").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["weeks","writeInt16LE",2]),_.prototype.fieldSpec.push(["milliseconds","writeInt32LE",4]),_.prototype.fieldSpec.push(["microseconds","writeInt16LE",2]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_PPS_TIME",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_PPS_TIME",S.prototype.msg_type=65288,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["time","writeUInt64LE",8]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);let g=function(e,t){return r.call(this,e),this.messageType="MSG_SENSOR_AID_EVENT",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="MSG_SENSOR_AID_EVENT",g.prototype.msg_type=65289,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("time").uint8("sensor_type").uint16("sensor_id").uint8("sensor_state").uint8("n_available_meas").uint8("n_attempted_meas").uint8("n_accepted_meas").uint32("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time","writeUInt32LE",4]),g.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),g.prototype.fieldSpec.push(["sensor_id","writeUInt16LE",2]),g.prototype.fieldSpec.push(["sensor_state","writeUInt8",1]),g.prototype.fieldSpec.push(["n_available_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["n_attempted_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["n_accepted_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_META",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_META",w.prototype.msg_type=65290,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("group_id").uint8("flags").uint8("n_group_msgs").array("group_msgs",{type:"uint16le",length:"n_group_msgs"}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["group_id","writeUInt8",1]),w.prototype.fieldSpec.push(["flags","writeUInt8",1]),w.prototype.fieldSpec.push(["n_group_msgs","writeUInt8",1]),w.prototype.fieldSpec.push(["group_msgs","array","writeUInt16LE",function(){return 2},"n_group_msgs"]),e.exports={65280:i,MsgStartup:i,65282:s,MsgDgnssStatus:s,65535:n,MsgHeartbeat:n,SubSystemReport:a,65534:l,MsgStatusReport:l,StatusJournalItem:c,65533:u,MsgStatusJournal:u,65283:y,MsgInsStatus:y,65284:f,MsgCsacTelemetry:f,65285:h,MsgCsacTelemetryLabels:h,65286:d,MsgInsUpdates:d,65287:_,MsgGnssTimeOffset:_,65288:S,MsgPpsTime:S,65289:g,MsgSensorAidEvent:g,65290:w,MsgGroupMeta:w}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,c=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",c.prototype.msg_type=33,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:a.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["P","writeUInt32LE",4]),c.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["cn0","writeUInt8",1]),c.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),c.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),c.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),c.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),c.prototype.fieldSpec.push(["acceleration","writeInt8",1]),c.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",u.prototype.msg_type=17,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:l.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",l.prototype.fieldSpec]),u.prototype.fieldSpec.push(["P","writeUInt32LE",4]),u.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["cn0","writeUInt8",1]),u.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),u.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),u.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),u.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),u.prototype.fieldSpec.push(["acceleration","writeInt8",1]),u.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="TrackingChannelState",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("fcn").uint8("cn0"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["fcn","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt8",1]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE",f.prototype.msg_type=65,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("states",{type:y.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["states","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);let h=function(e,t){return r.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MeasurementState",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").nest("mesid",{type:s.prototype.parser}).uint8("cn0"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["mesid",s.prototype.fieldSpec]),h.prototype.fieldSpec.push(["cn0","writeUInt8",1]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_MEASUREMENT_STATE",d.prototype.msg_type=97,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").array("states",{type:h.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["states","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);let _=function(e,t){return r.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="TrackingChannelCorrelation",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("I").int16("Q"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["I","writeInt16LE",2]),_.prototype.fieldSpec.push(["Q","writeInt16LE",2]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_IQ",S.prototype.msg_type=45,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:_.prototype.parser}),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["channel","writeUInt8",1]),S.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["corrs","array",_.prototype.fieldSpec,function(){return this.fields.array.length},3]);let g=function(e,t){return r.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="TrackingChannelCorrelationDep",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").int32("I").int32("Q"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["I","writeInt32LE",4]),g.prototype.fieldSpec.push(["Q","writeInt32LE",4]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_IQ_DEP_B",w.prototype.msg_type=44,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["channel","writeUInt8",1]),w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);let E=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_IQ_DEP_A",E.prototype.msg_type=28,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:n.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["channel","writeUInt8",1]),E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);let m=function(e,t){return r.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="TrackingChannelStateDepA",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint8("state").uint8("prn").floatle("cn0"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["state","writeUInt8",1]),m.prototype.fieldSpec.push(["prn","writeUInt8",1]),m.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DEP_A",b.prototype.msg_type=22,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").array("states",{type:m.prototype.parser,readUntil:"eof"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["states","array",m.prototype.fieldSpec,function(){return this.fields.array.length},null]);let I=function(e,t){return r.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="TrackingChannelStateDepB",I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["state","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),I.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",L.prototype.msg_type=19,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("states",{type:I.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["states","array",I.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:c,MsgTrackingStateDetailedDepA:c,17:u,MsgTrackingStateDetailedDep:u,TrackingChannelState:y,65:f,MsgTrackingState:f,MeasurementState:h,97:d,MsgMeasurementState:d,TrackingChannelCorrelation:_,45:S,MsgTrackingIq:S,TrackingChannelCorrelationDep:g,44:w,MsgTrackingIqDepB:w,28:E,MsgTrackingIqDepA:E,TrackingChannelStateDepA:m,22:b,MsgTrackingStateDepA:b,TrackingChannelStateDepB:I,19:L,MsgTrackingStateDepB:L}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_USER_DATA",i.prototype.msg_type=2048,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").array("contents",{type:"uint8",readUntil:"eof"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]),e.exports={2048:i,MsgUserData:i}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_ODOMETRY",i.prototype.msg_type=2307,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").int32("velocity").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["velocity","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_WHEELTICK",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_WHEELTICK",s.prototype.msg_type=2308,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags").uint8("source").int32("ticks"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["ticks","writeInt32LE",4]),e.exports={2307:i,MsgOdometry:i,2308:s,MsgWheeltick:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="TelemetrySV",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.prototype)).messageType="TelemetrySV",s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("az").int8("el").uint8("availability_flags").int16("pseudorange_residual").int16("phase_residual").uint8("outlier_flags").uint8("ephemeris_flags").uint8("correction_flags").nest("sid",{type:i.prototype.parser}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["az","writeUInt8",1]),s.prototype.fieldSpec.push(["el","writeInt8",1]),s.prototype.fieldSpec.push(["availability_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["pseudorange_residual","writeInt16LE",2]),s.prototype.fieldSpec.push(["phase_residual","writeInt16LE",2]),s.prototype.fieldSpec.push(["outlier_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["ephemeris_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["correction_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_TEL_SV",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_TEL_SV",n.prototype.msg_type=288,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").uint8("n_obs").uint8("origin_flags").array("sv_tel",{type:s.prototype.parser,readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["n_obs","writeUInt8",1]),n.prototype.fieldSpec.push(["origin_flags","writeUInt8",1]),n.prototype.fieldSpec.push(["sv_tel","array",s.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={TelemetrySV:s,288:n,MsgTelSv:n}}]); \ No newline at end of file +function r(e,t){if(e===t)return 0;for(var p=e.length,r=t.length,o=0,i=Math.min(p,r);o=0;l--)if(c[l]!==u[l])return!1;for(l=c.length-1;l>=0;l--)if(a=c[l],!g(e[a],t[a],p,r))return!1;return!0}(e,t,p,s))}return p?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function m(e,t,p,r){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof p&&(r=p,p=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(p&&p.name?" ("+p.name+").":".")+(r?" "+r:"."),e&&!o&&_(o,p,"Missing expected exception"+r);var s="string"==typeof r,n=!e&&o&&!p;if((!e&&i.isError(o)&&s&&E(o,p)||n)&&_(o,p,"Got unwanted exception"+r),e&&o&&p&&!E(o,p)||!e&&o)throw o}u.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return h(d(e.actual),128)+" "+e.operator+" "+h(d(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||_;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var p=new Error;if(p.stack){var r=p.stack,o=f(t),i=r.indexOf("\n"+o);if(i>=0){var s=r.indexOf("\n",i+1);r=r.substring(s+1)}this.stack=r}}},i.inherits(u.AssertionError,Error),u.fail=_,u.ok=S,u.equal=function(e,t,p){e!=t&&_(e,t,p,"==",u.equal)},u.notEqual=function(e,t,p){e==t&&_(e,t,p,"!=",u.notEqual)},u.deepEqual=function(e,t,p){g(e,t,!1)||_(e,t,p,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,p){g(e,t,!0)||_(e,t,p,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,p){g(e,t,!1)&&_(e,t,p,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,p,r){g(t,p,!0)&&_(t,p,r,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,p){e!==t&&_(e,t,p,"===",u.strictEqual)},u.notStrictEqual=function(e,t,p){e===t&&_(e,t,p,"!==",u.notStrictEqual)},u.throws=function(e,t,p){m(!0,e,t,p)},u.doesNotThrow=function(e,t,p){m(!1,e,t,p)},u.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var p in e)s.call(e,p)&&t.push(p);return t}}).call(this,p(5))},function(e,t,p){var r;!function(p){o(Math.pow(36,5)),o(Math.pow(16,7)),o(Math.pow(10,9)),o(Math.pow(2,30)),o(36),o(16),o(10),o(2);function o(e,t){return this instanceof o?(this._low=0,this._high=0,this.remainder=null,void 0===t?s.call(this,e):"string"==typeof e?n.call(this,e,t):void i.call(this,e,t)):new o(e,t)}function i(e,t){return this._low=0|e,this._high=0|t,this}function s(e){return this._low=65535&e,this._high=e>>>16,this}function n(e,t){var p=parseInt(e,t||10);return this._low=65535&p,this._high=p>>>16,this}o.prototype.fromBits=i,o.prototype.fromNumber=s,o.prototype.fromString=n,o.prototype.toNumber=function(){return 65536*this._high+this._low},o.prototype.toString=function(e){return this.toNumber().toString(e||10)},o.prototype.add=function(e){var t=this._low+e._low,p=t>>>16;return p+=this._high+e._high,this._low=65535&t,this._high=65535&p,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,p,r=this._high,o=this._low,i=e._high,s=e._low;return t=(p=o*s)>>>16,t+=r*s,t&=65535,t+=o*i,this._low=65535&p,this._high=65535&t,this},o.prototype.div=function(e){if(0==e._low&&0==e._high)throw Error("division by zero");if(0==e._high&&1==e._low)return this.remainder=new o(0),this;if(e.gt(this))return this.remainder=this.clone(),this._low=0,this._high=0,this;if(this.eq(e))return this.remainder=new o(0),this._low=1,this._high=0,this;for(var t=e.clone(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._low=0,this._high=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=16?this._high|=1<>>16)&65535,this},o.prototype.equals=o.prototype.eq=function(e){return this._low==e._low&&this._high==e._high},o.prototype.greaterThan=o.prototype.gt=function(e){return this._high>e._high||!(this._highe._low},o.prototype.lessThan=o.prototype.lt=function(e){return this._highe._high)&&this._low16?(this._low=this._high>>e-16,this._high=0):16==e?(this._low=this._high,this._high=0):(this._low=this._low>>e|this._high<<16-e&65535,this._high>>=e),this},o.prototype.shiftLeft=o.prototype.shiftl=function(e,t){return e>16?(this._high=this._low<>16-e,this._low=this._low<>>32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.rotateRight=o.prototype.rotr=function(e){var t=this._high<<16|this._low;return t=t>>>e|t<<32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.clone=function(){return new o(this._low,this._high)},void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r;!function(p){var o={16:s(Math.pow(16,5)),10:s(Math.pow(10,5)),2:s(Math.pow(2,5))},i={16:s(16),10:s(10),2:s(2)};function s(e,t,p,r){return this instanceof s?(this.remainder=null,"string"==typeof e?l.call(this,e,t):void 0===t?a.call(this,e):void n.apply(this,arguments)):new s(e,t,p,r)}function n(e,t,p,r){return void 0===p?(this._a00=65535&e,this._a16=e>>>16,this._a32=65535&t,this._a48=t>>>16,this):(this._a00=0|e,this._a16=0|t,this._a32=0|p,this._a48=0|r,this)}function a(e){return this._a00=65535&e,this._a16=e>>>16,this._a32=0,this._a48=0,this}function l(e,t){t=t||10,this._a00=0,this._a16=0,this._a32=0,this._a48=0;for(var p=o[t]||new s(Math.pow(t,5)),r=0,i=e.length;r=0&&(p.div(t),r[o]=p.remainder.toNumber().toString(e),p.gt(t));o--);return r[o-1]=p.toNumber().toString(e),r.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,p=t>>>16,r=(p+=this._a16+e._a16)>>>16,o=(r+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&p,this._a32=65535&r,this._a48=65535&o,this},s.prototype.subtract=function(e){return this.add(e.clone().negate())},s.prototype.multiply=function(e){var t=this._a00,p=this._a16,r=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,c=(l+=t*s)>>>16;l&=65535,c+=(l+=p*i)>>>16;var u=(c+=t*n)>>>16;return c&=65535,u+=(c+=p*s)>>>16,c&=65535,u+=(c+=r*i)>>>16,u+=t*e._a48,u&=65535,u+=p*n,u&=65535,u+=r*s,u&=65535,u+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&c,this._a48=65535&u,this},s.prototype.div=function(e){if(0==e._a16&&0==e._a32&&0==e._a48){if(0==e._a00)throw Error("division by zero");if(1==e._a00)return this.remainder=new s(0),this}if(e.gt(this))return this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0,this;if(this.eq(e))return this.remainder=new s(0),this._a00=1,this._a16=0,this._a32=0,this._a48=0,this;for(var t=e.clone(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=48?this._a48|=1<=32?this._a32|=1<=16?this._a16|=1<>>16),this._a16=65535&e,e=(65535&~this._a32)+(e>>>16),this._a32=65535&e,this._a48=~this._a48+(e>>>16)&65535,this},s.prototype.equals=s.prototype.eq=function(e){return this._a48==e._a48&&this._a00==e._a00&&this._a32==e._a32&&this._a16==e._a16},s.prototype.greaterThan=s.prototype.gt=function(e){return this._a48>e._a48||!(this._a48e._a32||!(this._a32e._a16||!(this._a16e._a00))},s.prototype.lessThan=s.prototype.lt=function(e){return this._a48e._a48)&&(this._a32e._a32)&&(this._a16e._a16)&&this._a00=48?(this._a00=this._a48>>e-48,this._a16=0,this._a32=0,this._a48=0):e>=32?(e-=32,this._a00=65535&(this._a32>>e|this._a48<<16-e),this._a16=this._a48>>e&65535,this._a32=0,this._a48=0):e>=16?(e-=16,this._a00=65535&(this._a16>>e|this._a32<<16-e),this._a16=65535&(this._a32>>e|this._a48<<16-e),this._a32=this._a48>>e&65535,this._a48=0):(this._a00=65535&(this._a00>>e|this._a16<<16-e),this._a16=65535&(this._a16>>e|this._a32<<16-e),this._a32=65535&(this._a32>>e|this._a48<<16-e),this._a48=this._a48>>e&65535),this},s.prototype.shiftLeft=s.prototype.shiftl=function(e,t){return(e%=64)>=48?(this._a48=this._a00<=32?(e-=32,this._a48=this._a16<>16-e,this._a32=this._a00<=16?(e-=16,this._a48=this._a32<>16-e,this._a32=65535&(this._a16<>16-e),this._a16=this._a00<>16-e,this._a32=65535&(this._a32<>16-e),this._a16=65535&(this._a16<>16-e),this._a00=this._a00<=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p<>>32-e,i=r<>>32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.rotateRight=s.prototype.rotr=function(e){if(0==(e%=64))return this;if(e>=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p>>>e|r<<32-e,i=r>>>e|p<<32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.clone=function(){return new s(this._a00,this._a16,this._a32,this._a48)},void 0===(r=function(){return s}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=(p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT",n.prototype.msg_type=47,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:i.prototype.parser}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),n.prototype.fieldSpec.push(["cp","writeFloatLE",4]),n.prototype.fieldSpec.push(["cf","writeFloatLE",4]),n.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_C",a.prototype.msg_type=31,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),a.prototype.fieldSpec.push(["cp","writeFloatLE",4]),a.prototype.fieldSpec.push(["cf","writeFloatLE",4]),a.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_B",l.prototype.msg_type=20,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["snr","writeFloatLE",4]),l.prototype.fieldSpec.push(["cp","writeFloatLE",4]),l.prototype.fieldSpec.push(["cf","writeFloatLE",4]),l.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",c.prototype.msg_type=21,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["snr","writeFloatLE",4]),c.prototype.fieldSpec.push(["cp","writeFloatLE",4]),c.prototype.fieldSpec.push(["cf","writeFloatLE",4]),c.prototype.fieldSpec.push(["prn","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="AcqSvProfile",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:i.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["job_type","writeUInt8",1]),u.prototype.fieldSpec.push(["status","writeUInt8",1]),u.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),u.prototype.fieldSpec.push(["int_time","writeUInt8",1]),u.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),u.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),u.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),u.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf","writeInt32LE",4]),u.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="AcqSvProfileDep",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:s.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["job_type","writeUInt8",1]),y.prototype.fieldSpec.push(["status","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),y.prototype.fieldSpec.push(["int_time","writeUInt8",1]),y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),y.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),y.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),y.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf","writeInt32LE",4]),y.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_SV_PROFILE",f.prototype.msg_type=46,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:u.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["acq_sv_profile","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_SV_PROFILE_DEP",h.prototype.msg_type=30,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:y.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["acq_sv_profile","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={47:n,MsgAcqResult:n,31:a,MsgAcqResultDepC:a,20:l,MsgAcqResultDepB:l,21:c,MsgAcqResultDepA:c,AcqSvProfile:u,AcqSvProfileDep:y,46:f,MsgAcqSvProfile:f,30:h,MsgAcqSvProfileDep:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",i.prototype.msg_type=179,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];let s=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",s.prototype.msg_type=180,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("flags").string("version",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),s.prototype.fieldSpec.push(["version","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_JUMP_TO_APP",n.prototype.msg_type=177,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("jump"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["jump","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_NAP_DEVICE_DNA_REQ",a.prototype.msg_type=222,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little"),a.prototype.fieldSpec=[];let l=function(e,t){return r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_NAP_DEVICE_DNA_RESP",l.prototype.msg_type=221,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("dna",{length:8,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["dna","array","writeUInt8",function(){return 1},8]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",c.prototype.msg_type=176,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["handshake","array","writeUInt8",function(){return 1},null]),e.exports={179:i,MsgBootloaderHandshakeReq:i,180:s,MsgBootloaderHandshakeResp:s,177:n,MsgBootloaderJumpToApp:n,222:a,MsgNapDeviceDnaReq:a,221:l,MsgNapDeviceDnaResp:l,176:c,MsgBootloaderHandshakeDepA:c}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_EXT_EVENT",i.prototype.msg_type=257,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags").uint8("pin"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),i.prototype.fieldSpec.push(["pin","writeUInt8",1]),e.exports={257:i,MsgExtEvent:i}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_REQ",i.prototype.msg_type=168,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").uint8("chunk_size").string("filename",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),i.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),i.prototype.fieldSpec.push(["chunk_size","writeUInt8",1]),i.prototype.fieldSpec.push(["filename","string",null]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_RESP",s.prototype.msg_type=163,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),s.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_DIR_REQ",n.prototype.msg_type=169,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("dirname",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),n.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),n.prototype.fieldSpec.push(["dirname","string",null]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_READ_DIR_RESP",a.prototype.msg_type=170,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("sequence").string("contents",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),a.prototype.fieldSpec.push(["contents","string",null]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_REMOVE",l.prototype.msg_type=172,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("filename",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["filename","string",null]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_REQ",c.prototype.msg_type=173,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),c.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),c.prototype.fieldSpec.push(["filename","string",null]),c.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_RESP",u.prototype.msg_type=171,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_CONFIG_REQ",y.prototype.msg_type=4097,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sequence"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_CONFIG_RESP",f.prototype.msg_type=4098,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("window_size").uint32("batch_size").uint32("fileio_version"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),f.prototype.fieldSpec.push(["window_size","writeUInt32LE",4]),f.prototype.fieldSpec.push(["batch_size","writeUInt32LE",4]),f.prototype.fieldSpec.push(["fileio_version","writeUInt32LE",4]),e.exports={168:i,MsgFileioReadReq:i,163:s,MsgFileioReadResp:s,169:n,MsgFileioReadDirReq:n,170:a,MsgFileioReadDirResp:a,172:l,MsgFileioRemove:l,173:c,MsgFileioWriteReq:c,171:u,MsgFileioWriteResp:u,4097:y,MsgFileioConfigReq:y,4098:f,MsgFileioConfigResp:f}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_PROGRAM",i.prototype.msg_type=230,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len").array("data",{type:"uint8",length:"addr_len"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["target","writeUInt8",1]),i.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),i.prototype.fieldSpec.push(["addr_len","writeUInt8",1]),i.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},"addr_len"]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_DONE",s.prototype.msg_type=224,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("response"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["response","writeUInt8",1]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_READ_REQ",n.prototype.msg_type=231,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["target","writeUInt8",1]),n.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),n.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_READ_RESP",a.prototype.msg_type=225,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["target","writeUInt8",1]),a.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),a.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_FLASH_ERASE",l.prototype.msg_type=226,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("target").uint32("sector_num"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["target","writeUInt8",1]),l.prototype.fieldSpec.push(["sector_num","writeUInt32LE",4]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",c.prototype.msg_type=227,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",u.prototype.msg_type=228,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_STM_UNIQUE_ID_REQ",y.prototype.msg_type=232,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];let f=function(e,t){return r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_STM_UNIQUE_ID_RESP",f.prototype.msg_type=229,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("stm_id",{length:12,type:"uint8"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["stm_id","array","writeUInt8",function(){return 1},12]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_M25_FLASH_WRITE_STATUS",h.prototype.msg_type=243,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("status",{length:1,type:"uint8"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["status","array","writeUInt8",function(){return 1},1]),e.exports={230:i,MsgFlashProgram:i,224:s,MsgFlashDone:s,231:n,MsgFlashReadReq:n,225:a,MsgFlashReadResp:a,226:l,MsgFlashErase:l,227:c,MsgStmFlashLockSector:c,228:u,MsgStmFlashUnlockSector:u,232:y,MsgStmUniqueIdReq:y,229:f,MsgStmUniqueIdResp:f,243:h,MsgM25FlashWriteStatus:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_IMU_RAW",i.prototype.msg_type=2304,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("acc_x").int16("acc_y").int16("acc_z").int16("gyr_x").int16("gyr_y").int16("gyr_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["acc_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_z","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_z","writeInt16LE",2]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_IMU_AUX",s.prototype.msg_type=2305,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("imu_type").int16("temp").uint8("imu_conf"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["imu_type","writeUInt8",1]),s.prototype.fieldSpec.push(["temp","writeInt16LE",2]),s.prototype.fieldSpec.push(["imu_conf","writeUInt8",1]),e.exports={2304:i,MsgImuRaw:i,2305:s,MsgImuAux:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal,p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),s=p(0).SvId,n=function(e,t){return r.call(this,e),this.messageType="IntegritySSRHeader",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="IntegritySSRHeader",n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),n.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),n.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),n.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),n.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["chain_id","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_HIGH_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_HIGH_LEVEL",a.prototype.msg_type=3001,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).nest("corr_time",{type:i.prototype.parser}).uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("use_gps_sat").uint8("use_gal_sat").uint8("use_bds_sat").array("reserved",{length:6,type:"uint8"}).uint8("use_tropo_grid_points").uint8("use_iono_grid_points").uint8("use_iono_tile_sat_los").uint8("use_iono_grid_point_sat_los"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["corr_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),a.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),a.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),a.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),a.prototype.fieldSpec.push(["use_gps_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["use_gal_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["use_bds_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},6]),a.prototype.fieldSpec.push(["use_tropo_grid_points","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_grid_points","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_tile_sat_los","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_grid_point_sat_los","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_SATELLITES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_SATELLITES",l.prototype.msg_type=3005,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint8("chain_id").uint8("const_id").uint8("n_faulty_sats").array("faulty_sats",{type:"uint8",length:"n_faulty_sats"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),l.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),l.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),l.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),l.prototype.fieldSpec.push(["const_id","writeUInt8",1]),l.prototype.fieldSpec.push(["n_faulty_sats","writeUInt8",1]),l.prototype.fieldSpec.push(["faulty_sats","array","writeUInt8",function(){return 1},"n_faulty_sats"]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",c.prototype.msg_type=3011,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),c.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),c.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",u.prototype.msg_type=3015,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),u.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",y.prototype.msg_type=3021,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),y.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),y.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",f.prototype.msg_type=3025,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint16("grid_point_id").uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),f.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),f.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),f.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_ACKNOWLEDGE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_ACKNOWLEDGE",h.prototype.msg_type=3026,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("request_id").uint32("area_id").uint8("response_code").uint16("correction_mask_on_demand").uint16("correction_mask_stream").uint8("solution_id"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["request_id","writeUInt8",1]),h.prototype.fieldSpec.push(["area_id","writeUInt32LE",4]),h.prototype.fieldSpec.push(["response_code","writeUInt8",1]),h.prototype.fieldSpec.push(["correction_mask_on_demand","writeUInt16LE",2]),h.prototype.fieldSpec.push(["correction_mask_stream","writeUInt16LE",2]),h.prototype.fieldSpec.push(["solution_id","writeUInt8",1]),e.exports={IntegritySSRHeader:n,3001:a,MsgSsrFlagHighLevel:a,3005:l,MsgSsrFlagSatellites:l,3011:c,MsgSsrFlagTropoGridPoints:c,3015:u,MsgSsrFlagIonoGridPoints:u,3021:y,MsgSsrFlagIonoTileSatLos:y,3025:f,MsgSsrFlagIonoGridPointSatLos:f,3026:h,MsgAcknowledge:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_CPU_STATE_DEP_A",i.prototype.msg_type=32512,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").string("tname",{length:15}).string("cmdline",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["index","writeUInt8",1]),i.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),i.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),i.prototype.fieldSpec.push(["tname","string",15]),i.prototype.fieldSpec.push(["cmdline","string",null]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_MEM_STATE_DEP_A",s.prototype.msg_type=32513,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").string("tname",{length:15}).string("cmdline",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["index","writeUInt8",1]),s.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),s.prototype.fieldSpec.push(["pmem","writeUInt8",1]),s.prototype.fieldSpec.push(["tname","string",15]),s.prototype.fieldSpec.push(["cmdline","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SYS_STATE_DEP_A",n.prototype.msg_type=32514,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),n.prototype.fieldSpec.push(["pmem","writeUInt8",1]),n.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),n.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",a.prototype.msg_type=32515,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("socket_count").uint16("socket_types").uint16("socket_states").string("cmdline",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["index","writeUInt8",1]),a.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_count","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),a.prototype.fieldSpec.push(["cmdline","string",null]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",l.prototype.msg_type=32516,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("recv_queued").uint16("send_queued").uint16("socket_types").uint16("socket_states").string("address_of_largest",{length:64}).string("cmdline",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["index","writeUInt8",1]),l.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),l.prototype.fieldSpec.push(["recv_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["send_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),l.prototype.fieldSpec.push(["address_of_largest","string",64]),l.prototype.fieldSpec.push(["cmdline","string",null]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",c.prototype.msg_type=32517,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("avg_queue_depth").uint32("max_queue_depth").array("socket_state_counts",{length:16,type:"uint16le"}).array("socket_type_counts",{length:16,type:"uint16le"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),c.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",u.prototype.msg_type=32518,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt8",1]),u.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),u.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),u.prototype.fieldSpec.push(["cmdline","string",null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_FD_SUMMARY",y.prototype.msg_type=32519,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sys_fd_count").string("most_opened",{greedy:!0}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sys_fd_count","writeUInt32LE",4]),y.prototype.fieldSpec.push(["most_opened","string",null]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_CPU_STATE",f.prototype.msg_type=32520,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["index","writeUInt8",1]),f.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),f.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),f.prototype.fieldSpec.push(["time","writeUInt32LE",4]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["tname","string",15]),f.prototype.fieldSpec.push(["cmdline","string",null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_MEM_STATE",h.prototype.msg_type=32521,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["index","writeUInt8",1]),h.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),h.prototype.fieldSpec.push(["pmem","writeUInt8",1]),h.prototype.fieldSpec.push(["time","writeUInt32LE",4]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["tname","string",15]),h.prototype.fieldSpec.push(["cmdline","string",null]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SYS_STATE",d.prototype.msg_type=32522,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count").uint32("time").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),d.prototype.fieldSpec.push(["pmem","writeUInt8",1]),d.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),d.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]),d.prototype.fieldSpec.push(["time","writeUInt32LE",4]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={32512:i,MsgLinuxCpuStateDepA:i,32513:s,MsgLinuxMemStateDepA:s,32514:n,MsgLinuxSysStateDepA:n,32515:a,MsgLinuxProcessSocketCounts:a,32516:l,MsgLinuxProcessSocketQueues:l,32517:c,MsgLinuxSocketUsage:c,32518:u,MsgLinuxProcessFdCount:u,32519:y,MsgLinuxProcessFdSummary:y,32520:f,MsgLinuxCpuState:f,32521:h,MsgLinuxMemState:h,32522:d,MsgLinuxSysState:d}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_LOG",i.prototype.msg_type=1025,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("level").string("text",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["level","writeUInt8",1]),i.prototype.fieldSpec.push(["text","string",null]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_FWD",s.prototype.msg_type=1026,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("source").uint8("protocol").array("fwd_payload",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["protocol","writeUInt8",1]),s.prototype.fieldSpec.push(["fwd_payload","array","writeUInt8",function(){return 1},null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_PRINT_DEP",n.prototype.msg_type=16,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").string("text",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["text","string",null]),e.exports={1025:i,MsgLog:i,1026:s,MsgFwd:s,16:n,MsgPrintDep:n}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_MAG_RAW",i.prototype.msg_type=2306,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("mag_x").int16("mag_y").int16("mag_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["mag_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_z","writeInt16LE",2]),e.exports={2306:i,MsgMagRaw:i}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_GPS_TIME",i.prototype.msg_type=258,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_GPS_TIME_GNSS",s.prototype.msg_type=260,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_UTC_TIME",n.prototype.msg_type=259,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt8",1]),n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["year","writeUInt16LE",2]),n.prototype.fieldSpec.push(["month","writeUInt8",1]),n.prototype.fieldSpec.push(["day","writeUInt8",1]),n.prototype.fieldSpec.push(["hours","writeUInt8",1]),n.prototype.fieldSpec.push(["minutes","writeUInt8",1]),n.prototype.fieldSpec.push(["seconds","writeUInt8",1]),n.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_UTC_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_UTC_TIME_GNSS",a.prototype.msg_type=261,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]),a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["year","writeUInt16LE",2]),a.prototype.fieldSpec.push(["month","writeUInt8",1]),a.prototype.fieldSpec.push(["day","writeUInt8",1]),a.prototype.fieldSpec.push(["hours","writeUInt8",1]),a.prototype.fieldSpec.push(["minutes","writeUInt8",1]),a.prototype.fieldSpec.push(["seconds","writeUInt8",1]),a.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_DOPS",l.prototype.msg_type=520,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["flags","writeUInt8",1]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF",c.prototype.msg_type=521,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),c.prototype.fieldSpec.push(["x","writeDoubleLE",8]),c.prototype.fieldSpec.push(["y","writeDoubleLE",8]),c.prototype.fieldSpec.push(["z","writeDoubleLE",8]),c.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV",u.prototype.msg_type=532,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),u.prototype.fieldSpec.push(["x","writeDoubleLE",8]),u.prototype.fieldSpec.push(["y","writeDoubleLE",8]),u.prototype.fieldSpec.push(["z","writeDoubleLE",8]),u.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH",y.prototype.msg_type=522,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),y.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),y.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),y.prototype.fieldSpec.push(["height","writeDoubleLE",8]),y.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),y.prototype.fieldSpec.push(["flags","writeUInt8",1]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_COV",f.prototype.msg_type=529,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),f.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),f.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),f.prototype.fieldSpec.push(["height","writeDoubleLE",8]),f.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),f.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),f.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]);let h=function(e,t){return r.call(this,e),this.messageType="EstimatedHorizontalErrorEllipse",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="EstimatedHorizontalErrorEllipse",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").floatle("semi_major").floatle("semi_minor").floatle("orientation"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["semi_major","writeFloatLE",4]),h.prototype.fieldSpec.push(["semi_minor","writeFloatLE",4]),h.prototype.fieldSpec.push(["orientation","writeFloatLE",4]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_ACC",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_ACC",d.prototype.msg_type=536,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").doublele("orthometric_height").floatle("h_accuracy").floatle("v_accuracy").floatle("ct_accuracy").floatle("at_accuracy").nest("h_ellipse",{type:h.prototype.parser}).uint8("confidence_and_geoid").uint8("n_sats").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),d.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),d.prototype.fieldSpec.push(["height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["orthometric_height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["h_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["v_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["ct_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["at_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["h_ellipse",h.prototype.fieldSpec]),d.prototype.fieldSpec.push(["confidence_and_geoid","writeUInt8",1]),d.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_ECEF",_.prototype.msg_type=523,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),_.prototype.fieldSpec.push(["x","writeInt32LE",4]),_.prototype.fieldSpec.push(["y","writeInt32LE",4]),_.prototype.fieldSpec.push(["z","writeInt32LE",4]),_.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_NED",S.prototype.msg_type=524,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),S.prototype.fieldSpec.push(["n","writeInt32LE",4]),S.prototype.fieldSpec.push(["e","writeInt32LE",4]),S.prototype.fieldSpec.push(["d","writeInt32LE",4]),S.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);let g=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF",g.prototype.msg_type=525,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),g.prototype.fieldSpec.push(["x","writeInt32LE",4]),g.prototype.fieldSpec.push(["y","writeInt32LE",4]),g.prototype.fieldSpec.push(["z","writeInt32LE",4]),g.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),g.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt8",1]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_COV",w.prototype.msg_type=533,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),w.prototype.fieldSpec.push(["x","writeInt32LE",4]),w.prototype.fieldSpec.push(["y","writeInt32LE",4]),w.prototype.fieldSpec.push(["z","writeInt32LE",4]),w.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),w.prototype.fieldSpec.push(["flags","writeUInt8",1]);let E=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED",E.prototype.msg_type=526,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),E.prototype.fieldSpec.push(["n","writeInt32LE",4]),E.prototype.fieldSpec.push(["e","writeInt32LE",4]),E.prototype.fieldSpec.push(["d","writeInt32LE",4]),E.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),E.prototype.fieldSpec.push(["flags","writeUInt8",1]);let m=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_COV",m.prototype.msg_type=530,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),m.prototype.fieldSpec.push(["n","writeInt32LE",4]),m.prototype.fieldSpec.push(["e","writeInt32LE",4]),m.prototype.fieldSpec.push(["d","writeInt32LE",4]),m.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),m.prototype.fieldSpec.push(["flags","writeUInt8",1]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_GNSS",b.prototype.msg_type=553,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),b.prototype.fieldSpec.push(["x","writeDoubleLE",8]),b.prototype.fieldSpec.push(["y","writeDoubleLE",8]),b.prototype.fieldSpec.push(["z","writeDoubleLE",8]),b.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["flags","writeUInt8",1]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",I.prototype.msg_type=564,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeDoubleLE",8]),I.prototype.fieldSpec.push(["y","writeDoubleLE",8]),I.prototype.fieldSpec.push(["z","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_GNSS",L.prototype.msg_type=554,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),L.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),L.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),L.prototype.fieldSpec.push(["height","writeDoubleLE",8]),L.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["flags","writeUInt8",1]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_COV_GNSS",T.prototype.msg_type=561,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),T.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),T.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),T.prototype.fieldSpec.push(["height","writeDoubleLE",8]),T.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),T.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["flags","writeUInt8",1]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_GNSS",v.prototype.msg_type=557,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["x","writeInt32LE",4]),v.prototype.fieldSpec.push(["y","writeInt32LE",4]),v.prototype.fieldSpec.push(["z","writeInt32LE",4]),v.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_COV_GNSS",U.prototype.msg_type=565,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),U.prototype.fieldSpec.push(["x","writeInt32LE",4]),U.prototype.fieldSpec.push(["y","writeInt32LE",4]),U.prototype.fieldSpec.push(["z","writeInt32LE",4]),U.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),U.prototype.fieldSpec.push(["flags","writeUInt8",1]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_GNSS",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_GNSS",M.prototype.msg_type=558,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),M.prototype.fieldSpec.push(["n","writeInt32LE",4]),M.prototype.fieldSpec.push(["e","writeInt32LE",4]),M.prototype.fieldSpec.push(["d","writeInt32LE",4]),M.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),M.prototype.fieldSpec.push(["flags","writeUInt8",1]);let D=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_COV_GNSS",D.prototype.msg_type=562,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),D.prototype.fieldSpec.push(["n","writeInt32LE",4]),D.prototype.fieldSpec.push(["e","writeInt32LE",4]),D.prototype.fieldSpec.push(["d","writeInt32LE",4]),D.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),D.prototype.fieldSpec.push(["flags","writeUInt8",1]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_VEL_BODY",O.prototype.msg_type=531,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),O.prototype.fieldSpec.push(["x","writeInt32LE",4]),O.prototype.fieldSpec.push(["y","writeInt32LE",4]),O.prototype.fieldSpec.push(["z","writeInt32LE",4]),O.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),O.prototype.fieldSpec.push(["flags","writeUInt8",1]);let G=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_COG",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_VEL_COG",G.prototype.msg_type=540,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").uint32("tow").uint32("cog").uint32("sog").int32("v_up").uint32("cog_accuracy").uint32("sog_accuracy").uint32("v_up_accuracy").uint16("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),G.prototype.fieldSpec.push(["cog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up","writeInt32LE",4]),G.prototype.fieldSpec.push(["cog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["flags","writeUInt16LE",2]);let A=function(e,t){return r.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="MSG_AGE_CORRECTIONS",A.prototype.msg_type=528,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint32("tow").uint16("age"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),A.prototype.fieldSpec.push(["age","writeUInt16LE",2]);let C=function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="MSG_GPS_TIME_DEP_A",C.prototype.msg_type=256,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),C.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),C.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),C.prototype.fieldSpec.push(["flags","writeUInt8",1]);let R=function(e,t){return r.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_DOPS_DEP_A",R.prototype.msg_type=518,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),R.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]);let P=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_DEP_A",P.prototype.msg_type=512,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),P.prototype.fieldSpec.push(["x","writeDoubleLE",8]),P.prototype.fieldSpec.push(["y","writeDoubleLE",8]),P.prototype.fieldSpec.push(["z","writeDoubleLE",8]),P.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),P.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),P.prototype.fieldSpec.push(["flags","writeUInt8",1]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_DEP_A",N.prototype.msg_type=513,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),N.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),N.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),N.prototype.fieldSpec.push(["height","writeDoubleLE",8]),N.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),N.prototype.fieldSpec.push(["flags","writeUInt8",1]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_ECEF_DEP_A",j.prototype.msg_type=514,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),j.prototype.fieldSpec.push(["x","writeInt32LE",4]),j.prototype.fieldSpec.push(["y","writeInt32LE",4]),j.prototype.fieldSpec.push(["z","writeInt32LE",4]),j.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),j.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),j.prototype.fieldSpec.push(["flags","writeUInt8",1]);let x=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_NED_DEP_A",x.prototype.msg_type=515,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),x.prototype.fieldSpec.push(["n","writeInt32LE",4]),x.prototype.fieldSpec.push(["e","writeInt32LE",4]),x.prototype.fieldSpec.push(["d","writeInt32LE",4]),x.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),x.prototype.fieldSpec.push(["flags","writeUInt8",1]);let F=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="MSG_VEL_ECEF_DEP_A",F.prototype.msg_type=516,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),F.prototype.fieldSpec.push(["x","writeInt32LE",4]),F.prototype.fieldSpec.push(["y","writeInt32LE",4]),F.prototype.fieldSpec.push(["z","writeInt32LE",4]),F.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),F.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),F.prototype.fieldSpec.push(["flags","writeUInt8",1]);let k=function(e,t){return r.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="MSG_VEL_NED_DEP_A",k.prototype.msg_type=517,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),k.prototype.fieldSpec.push(["n","writeInt32LE",4]),k.prototype.fieldSpec.push(["e","writeInt32LE",4]),k.prototype.fieldSpec.push(["d","writeInt32LE",4]),k.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),k.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["flags","writeUInt8",1]);let B=function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_HEADING_DEP_A",B.prototype.msg_type=519,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),B.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),B.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),B.prototype.fieldSpec.push(["flags","writeUInt8",1]);let q=function(e,t){return r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="MSG_PROTECTION_LEVEL_DEP_A",q.prototype.msg_type=534,q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("tow").uint16("vpl").uint16("hpl").doublele("lat").doublele("lon").doublele("height").uint8("flags"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),q.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),q.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),q.prototype.fieldSpec.push(["height","writeDoubleLE",8]),q.prototype.fieldSpec.push(["flags","writeUInt8",1]);let z=function(e,t){return r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="MSG_PROTECTION_LEVEL",z.prototype.msg_type=535,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("tow").int16("wn").uint16("hpl").uint16("vpl").uint16("atpl").uint16("ctpl").uint16("hvpl").uint16("vvpl").uint16("hopl").uint16("popl").uint16("ropl").doublele("lat").doublele("lon").doublele("height").int32("v_x").int32("v_y").int32("v_z").int32("roll").int32("pitch").int32("heading").uint32("flags"),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),z.prototype.fieldSpec.push(["wn","writeInt16LE",2]),z.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["atpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ctpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hopl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["popl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ropl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),z.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),z.prototype.fieldSpec.push(["height","writeDoubleLE",8]),z.prototype.fieldSpec.push(["v_x","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_y","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_z","writeInt32LE",4]),z.prototype.fieldSpec.push(["roll","writeInt32LE",4]),z.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),z.prototype.fieldSpec.push(["heading","writeInt32LE",4]),z.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let H=function(e,t){return r.call(this,e),this.messageType="MSG_UTC_LEAP_SECOND",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.prototype)).messageType="MSG_UTC_LEAP_SECOND",H.prototype.msg_type=570,H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").int16("reserved_0").int16("reserved_1").int8("reserved_2").int8("count_before").uint16("reserved_3").uint16("reserved_4").uint16("ref_wn").uint8("ref_dn").int8("count_after"),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["reserved_0","writeInt16LE",2]),H.prototype.fieldSpec.push(["reserved_1","writeInt16LE",2]),H.prototype.fieldSpec.push(["reserved_2","writeInt8",1]),H.prototype.fieldSpec.push(["count_before","writeInt8",1]),H.prototype.fieldSpec.push(["reserved_3","writeUInt16LE",2]),H.prototype.fieldSpec.push(["reserved_4","writeUInt16LE",2]),H.prototype.fieldSpec.push(["ref_wn","writeUInt16LE",2]),H.prototype.fieldSpec.push(["ref_dn","writeUInt8",1]),H.prototype.fieldSpec.push(["count_after","writeInt8",1]);let V=function(e,t){return r.call(this,e),this.messageType="MSG_REFERENCE_FRAME_PARAM",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.prototype)).messageType="MSG_REFERENCE_FRAME_PARAM",V.prototype.msg_type=580,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").uint8("ssr_iod").string("sn",{length:32}).string("tn",{length:32}).uint8("sin").uint16("utn").uint16("re_t0").int32("delta_X0").int32("delta_Y0").int32("delta_Z0").int32("theta_01").int32("theta_02").int32("theta_03").int32("scale").int32("dot_delta_X0").int32("dot_delta_Y0").int32("dot_delta_Z0").int32("dot_theta_01").int32("dot_theta_02").int32("dot_theta_03").int16("dot_scale"),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),V.prototype.fieldSpec.push(["sn","string",32]),V.prototype.fieldSpec.push(["tn","string",32]),V.prototype.fieldSpec.push(["sin","writeUInt8",1]),V.prototype.fieldSpec.push(["utn","writeUInt16LE",2]),V.prototype.fieldSpec.push(["re_t0","writeUInt16LE",2]),V.prototype.fieldSpec.push(["delta_X0","writeInt32LE",4]),V.prototype.fieldSpec.push(["delta_Y0","writeInt32LE",4]),V.prototype.fieldSpec.push(["delta_Z0","writeInt32LE",4]),V.prototype.fieldSpec.push(["theta_01","writeInt32LE",4]),V.prototype.fieldSpec.push(["theta_02","writeInt32LE",4]),V.prototype.fieldSpec.push(["theta_03","writeInt32LE",4]),V.prototype.fieldSpec.push(["scale","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_delta_X0","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_delta_Y0","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_delta_Z0","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_theta_01","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_theta_02","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_theta_03","writeInt32LE",4]),V.prototype.fieldSpec.push(["dot_scale","writeInt16LE",2]);let Y=function(e,t){return r.call(this,e),this.messageType="MSG_POSE_RELATIVE",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(r.prototype)).messageType="MSG_POSE_RELATIVE",Y.prototype.msg_type=581,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").uint32("tow").uint8("sensor_id").uint32("timestamp_1").uint32("timestamp_2").array("trans",{length:3,type:"int32le"}).int32("w").int32("x").int32("y").int32("z").floatle("cov_r_x_x").floatle("cov_r_x_y").floatle("cov_r_x_z").floatle("cov_r_y_y").floatle("cov_r_y_z").floatle("cov_r_z_z").floatle("cov_c_x_x").floatle("cov_c_x_y").floatle("cov_c_x_z").floatle("cov_c_y_y").floatle("cov_c_y_z").floatle("cov_c_z_z").uint8("flags"),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),Y.prototype.fieldSpec.push(["sensor_id","writeUInt8",1]),Y.prototype.fieldSpec.push(["timestamp_1","writeUInt32LE",4]),Y.prototype.fieldSpec.push(["timestamp_2","writeUInt32LE",4]),Y.prototype.fieldSpec.push(["trans","array","writeInt32LE",function(){return 4},3]),Y.prototype.fieldSpec.push(["w","writeInt32LE",4]),Y.prototype.fieldSpec.push(["x","writeInt32LE",4]),Y.prototype.fieldSpec.push(["y","writeInt32LE",4]),Y.prototype.fieldSpec.push(["z","writeInt32LE",4]),Y.prototype.fieldSpec.push(["cov_r_x_x","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_x_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_x_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_y_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_y_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_r_z_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_x_x","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_x_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_x_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_y_y","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_y_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["cov_c_z_z","writeFloatLE",4]),Y.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={258:i,MsgGpsTime:i,260:s,MsgGpsTimeGnss:s,259:n,MsgUtcTime:n,261:a,MsgUtcTimeGnss:a,520:l,MsgDops:l,521:c,MsgPosEcef:c,532:u,MsgPosEcefCov:u,522:y,MsgPosLlh:y,529:f,MsgPosLlhCov:f,EstimatedHorizontalErrorEllipse:h,536:d,MsgPosLlhAcc:d,523:_,MsgBaselineEcef:_,524:S,MsgBaselineNed:S,525:g,MsgVelEcef:g,533:w,MsgVelEcefCov:w,526:E,MsgVelNed:E,530:m,MsgVelNedCov:m,553:b,MsgPosEcefGnss:b,564:I,MsgPosEcefCovGnss:I,554:L,MsgPosLlhGnss:L,561:T,MsgPosLlhCovGnss:T,557:v,MsgVelEcefGnss:v,565:U,MsgVelEcefCovGnss:U,558:M,MsgVelNedGnss:M,562:D,MsgVelNedCovGnss:D,531:O,MsgVelBody:O,540:G,MsgVelCog:G,528:A,MsgAgeCorrections:A,256:C,MsgGpsTimeDepA:C,518:R,MsgDopsDepA:R,512:P,MsgPosEcefDepA:P,513:N,MsgPosLlhDepA:N,514:j,MsgBaselineEcefDepA:j,515:x,MsgBaselineNedDepA:x,516:F,MsgVelEcefDepA:F,517:k,MsgVelNedDepA:k,519:B,MsgBaselineHeadingDepA:B,534:q,MsgProtectionLevelDepA:q,535:z,MsgProtectionLevel:z,570:H,MsgUtcLeapSecond:H,580:V,MsgReferenceFrameParam:V,581:Y,MsgPoseRelative:Y}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.prototype)).messageType="MSG_NDB_EVENT",s.prototype.msg_type=1024,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("recv_time").uint8("event").uint8("object_type").uint8("result").uint8("data_source").nest("object_sid",{type:i.prototype.parser}).nest("src_sid",{type:i.prototype.parser}).uint16("original_sender"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["event","writeUInt8",1]),s.prototype.fieldSpec.push(["object_type","writeUInt8",1]),s.prototype.fieldSpec.push(["result","writeUInt8",1]),s.prototype.fieldSpec.push(["data_source","writeUInt8",1]),s.prototype.fieldSpec.push(["object_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["src_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["original_sender","writeUInt16LE",2]),e.exports={1024:s,MsgNdbEvent:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,c=p(0).GPSTimeSec,u=(p(0).SvId,function(e,t){return r.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(r.prototype)).messageType="ObservationHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("t",{type:a.prototype.parser}).uint8("n_obs"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="Doppler",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").int16("i").uint8("f"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["i","writeInt16LE",2]),y.prototype.fieldSpec.push(["f","writeUInt8",1]);let f=function(e,t){return r.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="PackedObsContent",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).nest("D",{type:y.prototype.parser}).uint8("cn0").uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["P","writeUInt32LE",4]),f.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["D",y.prototype.fieldSpec]),f.prototype.fieldSpec.push(["cn0","writeUInt8",1]),f.prototype.fieldSpec.push(["lock","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let h=function(e,t){return r.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="PackedOsrContent",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}).uint16("iono_std").uint16("tropo_std").uint16("range_std"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["P","writeUInt32LE",4]),h.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),h.prototype.fieldSpec.push(["lock","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),h.prototype.fieldSpec.push(["iono_std","writeUInt16LE",2]),h.prototype.fieldSpec.push(["tropo_std","writeUInt16LE",2]),h.prototype.fieldSpec.push(["range_std","writeUInt16LE",2]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_BASE_POS_LLH",_.prototype.msg_type=68,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").doublele("lat").doublele("lon").doublele("height"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),_.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),_.prototype.fieldSpec.push(["height","writeDoubleLE",8]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_BASE_POS_ECEF",S.prototype.msg_type=72,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").doublele("x").doublele("y").doublele("z"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["x","writeDoubleLE",8]),S.prototype.fieldSpec.push(["y","writeDoubleLE",8]),S.prototype.fieldSpec.push(["z","writeDoubleLE",8]);let g=function(e,t){return r.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).floatle("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),g.prototype.fieldSpec.push(["ura","writeFloatLE",4]),g.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),g.prototype.fieldSpec.push(["valid","writeUInt8",1]),g.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let w=function(e,t){return r.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),w.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),w.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),w.prototype.fieldSpec.push(["valid","writeUInt8",1]),w.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let E=function(e,t){return r.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContentDepA",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toe",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),E.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),E.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),E.prototype.fieldSpec.push(["valid","writeUInt8",1]),E.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let m=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_E",m.prototype.msg_type=129,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),m.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),m.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["w","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),m.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),m.prototype.fieldSpec.push(["iode","writeUInt8",1]),m.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_F",b.prototype.msg_type=134,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),b.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),b.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),b.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["w","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),b.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS",I.prototype.msg_type=138,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),I.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),I.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["w","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af0","writeFloatLE",4]),I.prototype.fieldSpec.push(["af1","writeFloatLE",4]),I.prototype.fieldSpec.push(["af2","writeFloatLE",4]),I.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt8",1]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_QZSS",L.prototype.msg_type=142,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),L.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),L.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["w","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af0","writeFloatLE",4]),L.prototype.fieldSpec.push(["af1","writeFloatLE",4]),L.prototype.fieldSpec.push(["af2","writeFloatLE",4]),L.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_BDS",T.prototype.msg_type=137,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd1").floatle("tgd2").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),T.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),T.prototype.fieldSpec.push(["tgd2","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),T.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),T.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["w","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af1","writeFloatLE",4]),T.prototype.fieldSpec.push(["af2","writeFloatLE",4]),T.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt8",1]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GAL_DEP_A",v.prototype.msg_type=149,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),v.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GAL",U.prototype.msg_type=141,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc").uint8("source"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),U.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),U.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),U.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),U.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["w","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af2","writeFloatLE",4]),U.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),U.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),U.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),U.prototype.fieldSpec.push(["source","writeUInt8",1]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_A",M.prototype.msg_type=130,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),M.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),M.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);let D=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_A",D.prototype.msg_type=131,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),D.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),D.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),D.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_B",O.prototype.msg_type=132,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),O.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),O.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);let G=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_SBAS",G.prototype.msg_type=140,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"floatle"}).array("acc",{length:3,type:"floatle"}).floatle("a_gf0").floatle("a_gf1"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),G.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["vel","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["a_gf0","writeFloatLE",4]),G.prototype.fieldSpec.push(["a_gf1","writeFloatLE",4]);let A=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_B",A.prototype.msg_type=133,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),A.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),A.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),A.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);let C=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_C",C.prototype.msg_type=135,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),C.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),C.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["fcn","writeUInt8",1]);let R=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_D",R.prototype.msg_type=136,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn").uint8("iod"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),R.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),R.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["fcn","writeUInt8",1]),R.prototype.fieldSpec.push(["iod","writeUInt8",1]);let P=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GLO",P.prototype.msg_type=139,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("gamma").floatle("tau").floatle("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"floatle"}).uint8("fcn").uint8("iod"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),P.prototype.fieldSpec.push(["gamma","writeFloatLE",4]),P.prototype.fieldSpec.push(["tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["d_tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),P.prototype.fieldSpec.push(["fcn","writeUInt8",1]),P.prototype.fieldSpec.push(["iod","writeUInt8",1]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_D",N.prototype.msg_type=128,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),N.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),N.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["w","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["valid","writeUInt8",1]),N.prototype.fieldSpec.push(["healthy","writeUInt8",1]),N.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["iode","writeUInt8",1]),N.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),N.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_A",j.prototype.msg_type=26,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),j.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),j.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["w","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["valid","writeUInt8",1]),j.prototype.fieldSpec.push(["healthy","writeUInt8",1]),j.prototype.fieldSpec.push(["prn","writeUInt8",1]);let x=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_B",x.prototype.msg_type=70,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn").uint8("iode"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),x.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),x.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["w","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["valid","writeUInt8",1]),x.prototype.fieldSpec.push(["healthy","writeUInt8",1]),x.prototype.fieldSpec.push(["prn","writeUInt8",1]),x.prototype.fieldSpec.push(["iode","writeUInt8",1]);let F=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_DEP_C",F.prototype.msg_type=71,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),F.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),F.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),F.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),F.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),F.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),F.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),F.prototype.fieldSpec.push(["w","writeDoubleLE",8]),F.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),F.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),F.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),F.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),F.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),F.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),F.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),F.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),F.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),F.prototype.fieldSpec.push(["valid","writeUInt8",1]),F.prototype.fieldSpec.push(["healthy","writeUInt8",1]),F.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),F.prototype.fieldSpec.push(["iode","writeUInt8",1]),F.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),F.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);let k=function(e,t){return r.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="ObservationHeaderDep",k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("t",{type:l.prototype.parser}).uint8("n_obs"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["t",l.prototype.fieldSpec]),k.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);let B=function(e,t){return r.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="CarrierPhaseDepA",B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["i","writeInt32LE",4]),B.prototype.fieldSpec.push(["f","writeUInt8",1]);let q=function(e,t){return r.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="PackedObsContentDepA",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").uint8("prn"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["P","writeUInt32LE",4]),q.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),q.prototype.fieldSpec.push(["cn0","writeUInt8",1]),q.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),q.prototype.fieldSpec.push(["prn","writeUInt8",1]);let z=function(e,t){return r.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="PackedObsContentDepB",z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["P","writeUInt32LE",4]),z.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),z.prototype.fieldSpec.push(["cn0","writeUInt8",1]),z.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),z.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);let H=function(e,t){return r.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.prototype)).messageType="PackedObsContentDepC",H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["P","writeUInt32LE",4]),H.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),H.prototype.fieldSpec.push(["cn0","writeUInt8",1]),H.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),H.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);let V=function(e,t){return r.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.prototype)).messageType="MSG_OBS_DEP_A",V.prototype.msg_type=69,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),V.prototype.fieldSpec.push(["obs","array",q.prototype.fieldSpec,function(){return this.fields.array.length},null]);let Y=function(e,t){return r.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(r.prototype)).messageType="MSG_OBS_DEP_B",Y.prototype.msg_type=67,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:z.prototype.parser,readUntil:"eof"}),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),Y.prototype.fieldSpec.push(["obs","array",z.prototype.fieldSpec,function(){return this.fields.array.length},null]);let W=function(e,t){return r.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(r.prototype)).messageType="MSG_OBS_DEP_C",W.prototype.msg_type=73,W.prototype.constructor=W,W.prototype.parser=(new o).endianess("little").nest("header",{type:k.prototype.parser}).array("obs",{type:H.prototype.parser,readUntil:"eof"}),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["header",k.prototype.fieldSpec]),W.prototype.fieldSpec.push(["obs","array",H.prototype.fieldSpec,function(){return this.fields.array.length},null]);let Q=function(e,t){return r.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(r.prototype)).messageType="MSG_IONO",Q.prototype.msg_type=144,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).doublele("a0").doublele("a1").doublele("a2").doublele("a3").doublele("b0").doublele("b1").doublele("b2").doublele("b3"),Q.prototype.fieldSpec=[],Q.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),Q.prototype.fieldSpec.push(["a0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a3","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b3","writeDoubleLE",8]);let K=function(e,t){return r.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(r.prototype)).messageType="MSG_SV_CONFIGURATION_GPS_DEP",K.prototype.msg_type=145,K.prototype.constructor=K,K.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).uint32("l2c_mask"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),K.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);let X=function(e,t){return r.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(r.prototype)).messageType="GnssCapb",X.prototype.constructor=X,X.prototype.parser=(new o).endianess("little").uint64("gps_active").uint64("gps_l2c").uint64("gps_l5").uint32("glo_active").uint32("glo_l2of").uint32("glo_l3").uint64("sbas_active").uint64("sbas_l5").uint64("bds_active").uint64("bds_d2nav").uint64("bds_b2").uint64("bds_b2a").uint32("qzss_active").uint64("gal_active").uint64("gal_e5"),X.prototype.fieldSpec=[],X.prototype.fieldSpec.push(["gps_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l2c","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["glo_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l2of","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l3","writeUInt32LE",4]),X.prototype.fieldSpec.push(["sbas_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["sbas_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_d2nav","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2a","writeUInt64LE",8]),X.prototype.fieldSpec.push(["qzss_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["gal_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gal_e5","writeUInt64LE",8]);let J=function(e,t){return r.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(r.prototype)).messageType="MSG_GNSS_CAPB",J.prototype.msg_type=150,J.prototype.constructor=J,J.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).nest("gc",{type:X.prototype.parser}),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),J.prototype.fieldSpec.push(["gc",X.prototype.fieldSpec]);let Z=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_DELAY_DEP_A",Z.prototype.msg_type=146,Z.prototype.constructor=Z,Z.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).uint8("prn").uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),Z.prototype.fieldSpec=[],Z.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["prn","writeUInt8",1]),Z.prototype.fieldSpec.push(["valid","writeUInt8",1]),Z.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);let $=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_DELAY_DEP_B",$.prototype.msg_type=147,$.prototype.constructor=$,$.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:n.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),$.prototype.fieldSpec=[],$.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),$.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),$.prototype.fieldSpec.push(["valid","writeUInt8",1]),$.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);let ee=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_DELAY",ee.prototype.msg_type=148,ee.prototype.constructor=ee,ee.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:s.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),ee.prototype.fieldSpec=[],ee.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["valid","writeUInt8",1]),ee.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);let te=function(e,t){return r.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContent",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),te.prototype.fieldSpec=[],te.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),te.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),te.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),te.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),te.prototype.fieldSpec.push(["valid","writeUInt8",1]),te.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let pe=function(e,t){return r.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContentDep",pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),pe.prototype.fieldSpec.push(["valid","writeUInt8",1]),pe.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);let re=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GPS_DEP",re.prototype.msg_type=112,re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("common",{type:pe.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["common",pe.prototype.fieldSpec]),re.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),re.prototype.fieldSpec.push(["w","writeDoubleLE",8]),re.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);let oe=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GPS",oe.prototype.msg_type=114,oe.prototype.constructor=oe,oe.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),oe.prototype.fieldSpec=[],oe.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),oe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);let ie=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GLO_DEP",ie.prototype.msg_type=113,ie.prototype.constructor=ie,ie.prototype.parser=(new o).endianess("little").nest("common",{type:pe.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),ie.prototype.fieldSpec=[],ie.prototype.fieldSpec.push(["common",pe.prototype.fieldSpec]),ie.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["i","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);let se=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GLO",se.prototype.msg_type=115,se.prototype.constructor=se,se.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),se.prototype.fieldSpec=[],se.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),se.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["i","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),se.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),se.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);let ne=function(e,t){return r.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(r.prototype)).messageType="MSG_GLO_BIASES",ne.prototype.msg_type=117,ne.prototype.constructor=ne,ne.prototype.parser=(new o).endianess("little").uint8("mask").int16("l1ca_bias").int16("l1p_bias").int16("l2ca_bias").int16("l2p_bias"),ne.prototype.fieldSpec=[],ne.prototype.fieldSpec.push(["mask","writeUInt8",1]),ne.prototype.fieldSpec.push(["l1ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l1p_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2p_bias","writeInt16LE",2]);let ae=function(e,t){return r.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(r.prototype)).messageType="SvAzEl",ae.prototype.constructor=ae,ae.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("az").int8("el"),ae.prototype.fieldSpec=[],ae.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ae.prototype.fieldSpec.push(["az","writeUInt8",1]),ae.prototype.fieldSpec.push(["el","writeInt8",1]);let le=function(e,t){return r.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(r.prototype)).messageType="MSG_SV_AZ_EL",le.prototype.msg_type=151,le.prototype.constructor=le,le.prototype.parser=(new o).endianess("little").array("azel",{type:ae.prototype.parser,readUntil:"eof"}),le.prototype.fieldSpec=[],le.prototype.fieldSpec.push(["azel","array",ae.prototype.fieldSpec,function(){return this.fields.array.length},null]);let ce=function(e,t){return r.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(ce.prototype=Object.create(r.prototype)).messageType="MSG_OSR",ce.prototype.msg_type=1600,ce.prototype.constructor=ce,ce.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:h.prototype.parser,readUntil:"eof"}),ce.prototype.fieldSpec=[],ce.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),ce.prototype.fieldSpec.push(["obs","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:u,Doppler:y,PackedObsContent:f,PackedOsrContent:h,74:d,MsgObs:d,68:_,MsgBasePosLlh:_,72:S,MsgBasePosEcef:S,EphemerisCommonContent:g,EphemerisCommonContentDepB:w,EphemerisCommonContentDepA:E,129:m,MsgEphemerisGpsDepE:m,134:b,MsgEphemerisGpsDepF:b,138:I,MsgEphemerisGps:I,142:L,MsgEphemerisQzss:L,137:T,MsgEphemerisBds:T,149:v,MsgEphemerisGalDepA:v,141:U,MsgEphemerisGal:U,130:M,MsgEphemerisSbasDepA:M,131:D,MsgEphemerisGloDepA:D,132:O,MsgEphemerisSbasDepB:O,140:G,MsgEphemerisSbas:G,133:A,MsgEphemerisGloDepB:A,135:C,MsgEphemerisGloDepC:C,136:R,MsgEphemerisGloDepD:R,139:P,MsgEphemerisGlo:P,128:N,MsgEphemerisDepD:N,26:j,MsgEphemerisDepA:j,70:x,MsgEphemerisDepB:x,71:F,MsgEphemerisDepC:F,ObservationHeaderDep:k,CarrierPhaseDepA:B,PackedObsContentDepA:q,PackedObsContentDepB:z,PackedObsContentDepC:H,69:V,MsgObsDepA:V,67:Y,MsgObsDepB:Y,73:W,MsgObsDepC:W,144:Q,MsgIono:Q,145:K,MsgSvConfigurationGpsDep:K,GnssCapb:X,150:J,MsgGnssCapb:J,146:Z,MsgGroupDelayDepA:Z,147:$,MsgGroupDelayDepB:$,148:ee,MsgGroupDelay:ee,AlmanacCommonContent:te,AlmanacCommonContentDep:pe,112:re,MsgAlmanacGpsDep:re,114:oe,MsgAlmanacGps:oe,113:ie,MsgAlmanacGloDep:ie,115:se,MsgAlmanacGlo:se,117:ne,MsgGloBiases:ne,SvAzEl:ae,151:le,MsgSvAzEl:le,1600:ce,MsgOsr:ce}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_BASELINE_HEADING",i.prototype.msg_type=527,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),i.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_ORIENT_QUAT",s.prototype.msg_type=544,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("tow").int32("w").int32("x").int32("y").int32("z").floatle("w_accuracy").floatle("x_accuracy").floatle("y_accuracy").floatle("z_accuracy").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["w","writeInt32LE",4]),s.prototype.fieldSpec.push(["x","writeInt32LE",4]),s.prototype.fieldSpec.push(["y","writeInt32LE",4]),s.prototype.fieldSpec.push(["z","writeInt32LE",4]),s.prototype.fieldSpec.push(["w_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["x_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["y_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["z_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_ORIENT_EULER",n.prototype.msg_type=545,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").int32("roll").int32("pitch").int32("yaw").floatle("roll_accuracy").floatle("pitch_accuracy").floatle("yaw_accuracy").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["roll","writeInt32LE",4]),n.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),n.prototype.fieldSpec.push(["yaw","writeInt32LE",4]),n.prototype.fieldSpec.push(["roll_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["pitch_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["yaw_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_ANGULAR_RATE",a.prototype.msg_type=546,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeInt32LE",4]),a.prototype.fieldSpec.push(["y","writeInt32LE",4]),a.prototype.fieldSpec.push(["z","writeInt32LE",4]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={527:i,MsgBaselineHeading:i,544:s,MsgOrientQuat:s,545:n,MsgOrientEuler:n,546:a,MsgAngularRate:a}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=p(0).GPSTime,a=p(0).GPSTimeDep,l=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];let c=function(e,t){return r.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SET_TIME",c.prototype.msg_type=104,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little"),c.prototype.fieldSpec=[];let u=function(e,t){return r.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_RESET",u.prototype.msg_type=182,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_RESET_DEP",y.prototype.msg_type=178,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];let f=function(e,t){return r.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_CW_RESULTS",f.prototype.msg_type=192,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little"),f.prototype.fieldSpec=[];let h=function(e,t){return r.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_CW_START",h.prototype.msg_type=193,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];let d=function(e,t){return r.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_RESET_FILTERS",d.prototype.msg_type=34,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("filter"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["filter","writeUInt8",1]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_INIT_BASE_DEP",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_INIT_BASE_DEP",_.prototype.msg_type=35,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little"),_.prototype.fieldSpec=[];let S=function(e,t){return r.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_THREAD_STATE",S.prototype.msg_type=23,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").string("name",{length:20}).uint16("cpu").uint32("stack_free"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["name","string",20]),S.prototype.fieldSpec.push(["cpu","writeUInt16LE",2]),S.prototype.fieldSpec.push(["stack_free","writeUInt32LE",4]);let g=function(e,t){return r.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="UARTChannel",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").floatle("tx_throughput").floatle("rx_throughput").uint16("crc_error_count").uint16("io_error_count").uint8("tx_buffer_level").uint8("rx_buffer_level"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["rx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["crc_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["io_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["tx_buffer_level","writeUInt8",1]),g.prototype.fieldSpec.push(["rx_buffer_level","writeUInt8",1]);let w=function(e,t){return r.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="Period",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").int32("avg").int32("pmin").int32("pmax").int32("current"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["avg","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmin","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmax","writeInt32LE",4]),w.prototype.fieldSpec.push(["current","writeInt32LE",4]);let E=function(e,t){return r.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="Latency",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").int32("avg").int32("lmin").int32("lmax").int32("current"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["avg","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmin","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmax","writeInt32LE",4]),E.prototype.fieldSpec.push(["current","writeInt32LE",4]);let m=function(e,t){return r.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="MSG_UART_STATE",m.prototype.msg_type=29,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}).nest("obs_period",{type:w.prototype.parser}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["obs_period",w.prototype.fieldSpec]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_UART_STATE_DEPA",b.prototype.msg_type=24,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_IAR_STATE",I.prototype.msg_type=25,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("num_hyps"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_MASK_SATELLITE",L.prototype.msg_type=43,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_MASK_SATELLITE_DEP",T.prototype.msg_type=27,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["mask","writeUInt8",1]),T.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_DEVICE_MONITOR",v.prototype.msg_type=181,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").int16("dev_vin").int16("cpu_vint").int16("cpu_vaux").int16("cpu_temperature").int16("fe_temperature"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["dev_vin","writeInt16LE",2]),v.prototype.fieldSpec.push(["cpu_vint","writeInt16LE",2]),v.prototype.fieldSpec.push(["cpu_vaux","writeInt16LE",2]),v.prototype.fieldSpec.push(["cpu_temperature","writeInt16LE",2]),v.prototype.fieldSpec.push(["fe_temperature","writeInt16LE",2]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_COMMAND_REQ",U.prototype.msg_type=184,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("sequence").string("command",{greedy:!0}),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),U.prototype.fieldSpec.push(["command","string",null]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_COMMAND_RESP",M.prototype.msg_type=185,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("sequence").int32("code"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),M.prototype.fieldSpec.push(["code","writeInt32LE",4]);let D=function(e,t){return r.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_COMMAND_OUTPUT",D.prototype.msg_type=188,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("sequence").string("line",{greedy:!0}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),D.prototype.fieldSpec.push(["line","string",null]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_NETWORK_STATE_REQ",O.prototype.msg_type=186,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little"),O.prototype.fieldSpec=[];let G=function(e,t){return r.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_NETWORK_STATE_RESP",G.prototype.msg_type=187,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").array("ipv4_address",{length:4,type:"uint8"}).uint8("ipv4_mask_size").array("ipv6_address",{length:16,type:"uint8"}).uint8("ipv6_mask_size").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}).uint32("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["ipv4_address","array","writeUInt8",function(){return 1},4]),G.prototype.fieldSpec.push(["ipv4_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["ipv6_address","array","writeUInt8",function(){return 1},16]),G.prototype.fieldSpec.push(["ipv6_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["interface_name","string",16]),G.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let A=function(e,t){return r.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="NetworkUsage",A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint64("duration").uint64("total_bytes").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["duration","writeUInt64LE",8]),A.prototype.fieldSpec.push(["total_bytes","writeUInt64LE",8]),A.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["interface_name","string",16]);let C=function(e,t){return r.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="MSG_NETWORK_BANDWIDTH_USAGE",C.prototype.msg_type=189,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").array("interfaces",{type:A.prototype.parser,readUntil:"eof"}),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["interfaces","array",A.prototype.fieldSpec,function(){return this.fields.array.length},null]);let R=function(e,t){return r.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_CELL_MODEM_STATUS",R.prototype.msg_type=190,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").int8("signal_strength").floatle("signal_error_rate").array("reserved",{type:"uint8",readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["signal_strength","writeInt8",1]),R.prototype.fieldSpec.push(["signal_error_rate","writeFloatLE",4]),R.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},null]);let P=function(e,t){return r.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_SPECAN_DEP",P.prototype.msg_type=80,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:a.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),P.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),P.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_SPECAN",N.prototype.msg_type=81,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:n.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),N.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_FRONT_END_GAIN",j.prototype.msg_type=191,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").array("rf_gain",{length:8,type:"int8"}).array("if_gain",{length:8,type:"int8"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["rf_gain","array","writeInt8",function(){return 1},8]),j.prototype.fieldSpec.push(["if_gain","array","writeInt8",function(){return 1},8]),e.exports={105:l,MsgAlmanac:l,104:c,MsgSetTime:c,182:u,MsgReset:u,178:y,MsgResetDep:y,192:f,MsgCwResults:f,193:h,MsgCwStart:h,34:d,MsgResetFilters:d,35:_,MsgInitBaseDep:_,23:S,MsgThreadState:S,UARTChannel:g,Period:w,Latency:E,29:m,MsgUartState:m,24:b,MsgUartStateDepa:b,25:I,MsgIarState:I,43:L,MsgMaskSatellite:L,27:T,MsgMaskSatelliteDep:T,181:v,MsgDeviceMonitor:v,184:U,MsgCommandReq:U,185:M,MsgCommandResp:M,188:D,MsgCommandOutput:D,186:O,MsgNetworkStateReq:O,187:G,MsgNetworkStateResp:G,NetworkUsage:A,189:C,MsgNetworkBandwidthUsage:C,190:R,MsgCellModemStatus:R,80:P,MsgSpecanDep:P,81:N,MsgSpecan:N,191:j,MsgFrontEndGain:j}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_MEASUREMENT_POINT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_MEASUREMENT_POINT",i.prototype.msg_type=52992,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("total_time").uint16("num_executions").uint32("min").uint32("max").uint64("return_addr").uint64("id").uint64("slice_time").uint16("line").string("func",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["total_time","writeUInt32LE",4]),i.prototype.fieldSpec.push(["num_executions","writeUInt16LE",2]),i.prototype.fieldSpec.push(["min","writeUInt32LE",4]),i.prototype.fieldSpec.push(["max","writeUInt32LE",4]),i.prototype.fieldSpec.push(["return_addr","writeUInt64LE",8]),i.prototype.fieldSpec.push(["id","writeUInt64LE",8]),i.prototype.fieldSpec.push(["slice_time","writeUInt64LE",8]),i.prototype.fieldSpec.push(["line","writeUInt16LE",2]),i.prototype.fieldSpec.push(["func","string",null]),e.exports={52992:i,MsgMeasurementPoint:i}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.prototype)).messageType="MSG_SBAS_RAW",s.prototype.msg_type=30583,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint32("tow").uint8("message_type").array("data",{length:27,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["message_type","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},27]),e.exports={30583:s,MsgSbasRaw:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_SAVE",i.prototype.msg_type=161,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];let s=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_WRITE",s.prototype.msg_type=160,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["setting","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_WRITE_RESP",n.prototype.msg_type=175,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["status","writeUInt8",1]),n.prototype.fieldSpec.push(["setting","string",null]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_REQ",a.prototype.msg_type=164,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["setting","string",null]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_RESP",l.prototype.msg_type=165,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["setting","string",null]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",c.prototype.msg_type=162,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",u.prototype.msg_type=167,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]),u.prototype.fieldSpec.push(["setting","string",null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",y.prototype.msg_type=166,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];let f=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_REGISTER",f.prototype.msg_type=174,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["setting","string",null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_REGISTER_RESP",h.prototype.msg_type=431,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["status","writeUInt8",1]),h.prototype.fieldSpec.push(["setting","string",null]),e.exports={161:i,MsgSettingsSave:i,160:s,MsgSettingsWrite:s,175:n,MsgSettingsWriteResp:n,164:a,MsgSettingsReadReq:a,165:l,MsgSettingsReadResp:l,162:c,MsgSettingsReadByIndexReq:c,167:u,MsgSettingsReadByIndexResp:u,166:y,MsgSettingsReadByIndexDone:y,174:f,MsgSettingsRegister:f,431:h,MsgSettingsRegisterResp:h}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="UtcTime",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="UtcTime",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["year","writeUInt16LE",2]),i.prototype.fieldSpec.push(["month","writeUInt8",1]),i.prototype.fieldSpec.push(["day","writeUInt8",1]),i.prototype.fieldSpec.push(["hours","writeUInt8",1]),i.prototype.fieldSpec.push(["minutes","writeUInt8",1]),i.prototype.fieldSpec.push(["seconds","writeUInt8",1]),i.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);let s=function(e,t){return r.call(this,e),this.messageType="ECDSASignature",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="ECDSASignature",s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("len").array("data",{length:72,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["len","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},72]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_CERTIFICATE",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_CERTIFICATE",n.prototype.msg_type=3076,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("n_msg").array("certificate_id",{length:4,type:"uint8"}).uint8("flags").array("certificate_bytes",{type:"uint8",readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["n_msg","writeUInt8",1]),n.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]),n.prototype.fieldSpec.push(["certificate_bytes","array","writeUInt8",function(){return 1},null]);let a=function(e,t){return r.call(this,e),this.messageType="MSG_CERTIFICATE_CHAIN",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_CERTIFICATE_CHAIN",a.prototype.msg_type=3081,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").array("root_certificate",{length:20,type:"uint8"}).array("intermediate_certificate",{length:20,type:"uint8"}).array("corrections_certificate",{length:20,type:"uint8"}).nest("expiration",{type:i.prototype.parser}).nest("signature",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["root_certificate","array","writeUInt8",function(){return 1},20]),a.prototype.fieldSpec.push(["intermediate_certificate","array","writeUInt8",function(){return 1},20]),a.prototype.fieldSpec.push(["corrections_certificate","array","writeUInt8",function(){return 1},20]),a.prototype.fieldSpec.push(["expiration",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["signature",s.prototype.fieldSpec]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_CERTIFICATE_CHAIN_DEP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_CERTIFICATE_CHAIN_DEP",l.prototype.msg_type=3077,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("root_certificate",{length:20,type:"uint8"}).array("intermediate_certificate",{length:20,type:"uint8"}).array("corrections_certificate",{length:20,type:"uint8"}).nest("expiration",{type:i.prototype.parser}).array("signature",{length:64,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["root_certificate","array","writeUInt8",function(){return 1},20]),l.prototype.fieldSpec.push(["intermediate_certificate","array","writeUInt8",function(){return 1},20]),l.prototype.fieldSpec.push(["corrections_certificate","array","writeUInt8",function(){return 1},20]),l.prototype.fieldSpec.push(["expiration",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]);let c=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_SIGNATURE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_SIGNATURE",c.prototype.msg_type=3080,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("flags").uint8("stream_counter").uint8("on_demand_counter").array("certificate_id",{length:4,type:"uint8"}).nest("signature",{type:s.prototype.parser}).array("signed_messages",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt8",1]),c.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),c.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),c.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),c.prototype.fieldSpec.push(["signature",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["signed_messages","array","writeUInt8",function(){return 1},null]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_SIGNATURE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_SIGNATURE_DEP_B",u.prototype.msg_type=3079,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("flags").uint8("stream_counter").uint8("on_demand_counter").array("certificate_id",{length:4,type:"uint8"}).uint8("n_signature_bytes").array("signature",{length:72,type:"uint8"}).array("signed_messages",{type:"uint8",readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt8",1]),u.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),u.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),u.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),u.prototype.fieldSpec.push(["n_signature_bytes","writeUInt8",1]),u.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},72]),u.prototype.fieldSpec.push(["signed_messages","array","writeUInt8",function(){return 1},null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_ECDSA_SIGNATURE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_ECDSA_SIGNATURE_DEP_A",y.prototype.msg_type=3078,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("flags").uint8("stream_counter").uint8("on_demand_counter").array("certificate_id",{length:4,type:"uint8"}).array("signature",{length:64,type:"uint8"}).array("signed_messages",{type:"uint8",readUntil:"eof"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["flags","writeUInt8",1]),y.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),y.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),y.prototype.fieldSpec.push(["certificate_id","array","writeUInt8",function(){return 1},4]),y.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]),y.prototype.fieldSpec.push(["signed_messages","array","writeUInt8",function(){return 1},null]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_ED25519_CERTIFICATE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_ED25519_CERTIFICATE_DEP",f.prototype.msg_type=3074,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("n_msg").array("fingerprint",{length:20,type:"uint8"}).array("certificate_bytes",{type:"uint8",readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["n_msg","writeUInt8",1]),f.prototype.fieldSpec.push(["fingerprint","array","writeUInt8",function(){return 1},20]),f.prototype.fieldSpec.push(["certificate_bytes","array","writeUInt8",function(){return 1},null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_ED25519_SIGNATURE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_ED25519_SIGNATURE_DEP_A",h.prototype.msg_type=3073,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("signature",{length:64,type:"uint8"}).array("fingerprint",{length:20,type:"uint8"}).array("signed_messages",{type:"uint32le",readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]),h.prototype.fieldSpec.push(["fingerprint","array","writeUInt8",function(){return 1},20]),h.prototype.fieldSpec.push(["signed_messages","array","writeUInt32LE",function(){return 4},null]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_ED25519_SIGNATURE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_ED25519_SIGNATURE_DEP_B",d.prototype.msg_type=3075,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("stream_counter").uint8("on_demand_counter").array("signature",{length:64,type:"uint8"}).array("fingerprint",{length:20,type:"uint8"}).array("signed_messages",{type:"uint32le",readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["stream_counter","writeUInt8",1]),d.prototype.fieldSpec.push(["on_demand_counter","writeUInt8",1]),d.prototype.fieldSpec.push(["signature","array","writeUInt8",function(){return 1},64]),d.prototype.fieldSpec.push(["fingerprint","array","writeUInt8",function(){return 1},20]),d.prototype.fieldSpec.push(["signed_messages","array","writeUInt32LE",function(){return 4},null]),e.exports={UtcTime:i,ECDSASignature:s,3076:n,MsgEcdsaCertificate:n,3081:a,MsgCertificateChain:a,3077:l,MsgCertificateChainDep:l,3080:c,MsgEcdsaSignature:c,3079:u,MsgEcdsaSignatureDepB:u,3078:y,MsgEcdsaSignatureDepA:y,3074:f,MsgEd25519CertificateDep:f,3073:h,MsgEd25519SignatureDepA:h,3075:d,MsgEd25519SignatureDepB:d}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="SolutionInputType",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="SolutionInputType",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("sensor_type").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_SOLN_META_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_SOLN_META_DEP_A",s.prototype.msg_type=65295,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("pdop").uint16("hdop").uint16("vdop").uint8("n_sats").uint16("age_corrections").uint8("alignment_status").uint32("last_used_gnss_pos_tow").uint32("last_used_gnss_vel_tow").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),s.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),s.prototype.fieldSpec.push(["alignment_status","writeUInt8",1]),s.prototype.fieldSpec.push(["last_used_gnss_pos_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["last_used_gnss_vel_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_SOLN_META",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_SOLN_META",n.prototype.msg_type=65294,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").uint16("pdop").uint16("hdop").uint16("vdop").uint16("age_corrections").uint32("age_gnss").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_gnss","writeUInt32LE",4]),n.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);let a=function(e,t){return r.call(this,e),this.messageType="GNSSInputType",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="GNSSInputType",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="IMUInputType",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="IMUInputType",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["flags","writeUInt8",1]);let c=function(e,t){return r.call(this,e),this.messageType="OdoInputType",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="OdoInputType",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={SolutionInputType:i,65295:s,MsgSolnMetaDepA:s,65294:n,MsgSolnMeta:n,GNSSInputType:a,IMUInputType:l,OdoInputType:c}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),n=p(0).SvId,a=function(e,t){return r.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="CodeBiasesContent",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("code").int16("value"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["code","writeUInt8",1]),a.prototype.fieldSpec.push(["value","writeInt16LE",2]);let l=function(e,t){return r.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="PhaseBiasesContent",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("code").uint8("integer_indicator").uint8("widelane_integer_indicator").uint8("discontinuity_counter").int32("bias"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["code","writeUInt8",1]),l.prototype.fieldSpec.push(["integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["widelane_integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["discontinuity_counter","writeUInt8",1]),l.prototype.fieldSpec.push(["bias","writeInt32LE",4]);let c=function(e,t){return r.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="STECHeader",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),c.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),c.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),c.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),u.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),u.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),u.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),u.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="STECSatElement",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).uint8("stec_quality_indicator").array("stec_coeff",{length:4,type:"int16le"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),y.prototype.fieldSpec.push(["stec_quality_indicator","writeUInt8",1]),y.prototype.fieldSpec.push(["stec_coeff","array","writeInt16LE",function(){return 2},4]);let f=function(e,t){return r.call(this,e),this.messageType="TroposphericDelayCorrectionNoStd",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="TroposphericDelayCorrectionNoStd",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),f.prototype.fieldSpec.push(["wet","writeInt8",1]);let h=function(e,t){return r.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="TroposphericDelayCorrection",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet").uint8("stddev"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),h.prototype.fieldSpec.push(["wet","writeInt8",1]),h.prototype.fieldSpec.push(["stddev","writeUInt8",1]);let d=function(e,t){return r.call(this,e),this.messageType="STECResidualNoStd",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="STECResidualNoStd",d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),d.prototype.fieldSpec.push(["residual","writeInt16LE",2]);let _=function(e,t){return r.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="STECResidual",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual").uint8("stddev"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),_.prototype.fieldSpec.push(["residual","writeInt16LE",2]),_.prototype.fieldSpec.push(["stddev","writeUInt8",1]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK",S.prototype.msg_type=1501,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint32("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),S.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),S.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),S.prototype.fieldSpec.push(["iod","writeUInt32LE",4]),S.prototype.fieldSpec.push(["radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["along","writeInt32LE",4]),S.prototype.fieldSpec.push(["cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["c0","writeInt32LE",4]),S.prototype.fieldSpec.push(["c1","writeInt32LE",4]),S.prototype.fieldSpec.push(["c2","writeInt32LE",4]);let g=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="MSG_SSR_CODE_BIASES",g.prototype.msg_type=1505,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").array("biases",{type:a.prototype.parser,readUntil:"eof"}),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),g.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),g.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),g.prototype.fieldSpec.push(["biases","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_SSR_PHASE_BIASES",w.prototype.msg_type=1510,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("dispersive_bias").uint8("mw_consistency").uint16("yaw").int8("yaw_rate").array("biases",{type:l.prototype.parser,readUntil:"eof"}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),w.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),w.prototype.fieldSpec.push(["dispersive_bias","writeUInt8",1]),w.prototype.fieldSpec.push(["mw_consistency","writeUInt8",1]),w.prototype.fieldSpec.push(["yaw","writeUInt16LE",2]),w.prototype.fieldSpec.push(["yaw_rate","writeInt8",1]),w.prototype.fieldSpec.push(["biases","array",l.prototype.fieldSpec,function(){return this.fields.array.length},null]);let E=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP",E.prototype.msg_type=1531,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),E.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);let m=function(e,t){return r.call(this,e),this.messageType="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="BoundsHeader",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),m.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),m.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),m.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),m.prototype.fieldSpec.push(["sol_id","writeUInt8",1]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION",b.prototype.msg_type=1533,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("n_sats").array("stec_sat_list",{type:y.prototype.parser,length:"n_sats"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),b.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);let I=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",I.prototype.msg_type=1532,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),I.prototype.fieldSpec.push(["index","writeUInt16LE",2]),I.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),I.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);let L=function(e,t){return r.call(this,e),this.messageType="STECSatElementIntegrity",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="STECSatElementIntegrity",L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("stec_residual",{type:_.prototype.parser}).uint8("stec_bound_mu").uint8("stec_bound_sig").uint8("stec_bound_mu_dot").uint8("stec_bound_sig_dot"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["stec_residual",_.prototype.fieldSpec]),L.prototype.fieldSpec.push(["stec_bound_mu","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_bound_sig","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_bound_mu_dot","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_bound_sig_dot","writeUInt8",1]);let T=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",T.prototype.msg_type=1534,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("tropo_qi").uint16("grid_point_id").nest("tropo_delay_correction",{type:h.prototype.parser}).uint8("tropo_v_hydro_bound_mu").uint8("tropo_v_hydro_bound_sig").uint8("tropo_v_wet_bound_mu").uint8("tropo_v_wet_bound_sig").uint8("n_sats").array("stec_sat_list",{type:L.prototype.parser,length:"n_sats"}),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),T.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),T.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tropo_qi","writeUInt8",1]),T.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),T.prototype.fieldSpec.push(["tropo_v_hydro_bound_mu","writeUInt8",1]),T.prototype.fieldSpec.push(["tropo_v_hydro_bound_sig","writeUInt8",1]),T.prototype.fieldSpec.push(["tropo_v_wet_bound_mu","writeUInt8",1]),T.prototype.fieldSpec.push(["tropo_v_wet_bound_sig","writeUInt8",1]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["stec_sat_list","array",L.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);let v=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP_A",v.prototype.msg_type=1526,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),v.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),v.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),v.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),v.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),v.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),v.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),v.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),v.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);let U=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP_B",U.prototype.msg_type=1527,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),U.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),U.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),U.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),U.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);let M=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION",M.prototype.msg_type=1528,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("update_interval").uint8("sol_id").uint8("iod_atmo").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),M.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),M.prototype.fieldSpec.push(["sol_id","writeUInt8",1]),M.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),M.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),M.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),M.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),M.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),M.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),M.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),M.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),M.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),M.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);let D=function(e,t){return r.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="SatelliteAPC",D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("sat_info").uint16("svn").array("pco",{length:3,type:"int16le"}).array("pcv",{length:21,type:"int8"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),D.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),D.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),D.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),D.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);let O=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC_DEP",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_SSR_SATELLITE_APC_DEP",O.prototype.msg_type=1540,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").array("apc",{type:D.prototype.parser,readUntil:"eof"}),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["apc","array",D.prototype.fieldSpec,function(){return this.fields.array.length},null]);let G=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="MSG_SSR_SATELLITE_APC",G.prototype.msg_type=1541,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("update_interval").uint8("sol_id").uint8("iod_ssr").array("apc",{type:D.prototype.parser,readUntil:"eof"}),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),G.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),G.prototype.fieldSpec.push(["sol_id","writeUInt8",1]),G.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),G.prototype.fieldSpec.push(["apc","array",D.prototype.fieldSpec,function(){return this.fields.array.length},null]);let A=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",A.prototype.msg_type=1500,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),A.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),A.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),A.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),A.prototype.fieldSpec.push(["iod","writeUInt8",1]),A.prototype.fieldSpec.push(["radial","writeInt32LE",4]),A.prototype.fieldSpec.push(["along","writeInt32LE",4]),A.prototype.fieldSpec.push(["cross","writeInt32LE",4]),A.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),A.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),A.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),A.prototype.fieldSpec.push(["c0","writeInt32LE",4]),A.prototype.fieldSpec.push(["c1","writeInt32LE",4]),A.prototype.fieldSpec.push(["c2","writeInt32LE",4]);let C=function(e,t){return r.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="STECHeaderDepA",C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),C.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),C.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),C.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),C.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);let R=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeaderDepA",R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),R.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),R.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),R.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),R.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),R.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);let P=function(e,t){return r.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="GridDefinitionHeaderDepA",P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint8("region_size_inverse").uint16("area_width").uint16("lat_nw_corner_enc").uint16("lon_nw_corner_enc").uint8("num_msgs").uint8("seq_num"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),P.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),P.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),P.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),P.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),P.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);let N=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",N.prototype.msg_type=1515,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),N.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);let j=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",j.prototype.msg_type=1520,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").nest("header",{type:R.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["header",R.prototype.fieldSpec]),j.prototype.fieldSpec.push(["index","writeUInt16LE",2]),j.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),j.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);let x=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",x.prototype.msg_type=1530,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").nest("header",{type:R.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["header",R.prototype.fieldSpec]),x.prototype.fieldSpec.push(["index","writeUInt16LE",2]),x.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),x.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);let F=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",F.prototype.msg_type=1525,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").nest("header",{type:P.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["header",P.prototype.fieldSpec]),F.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]);let k=function(e,t){return r.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="OrbitClockBound",k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").uint8("sat_id").uint8("orb_radial_bound_mu").uint8("orb_along_bound_mu").uint8("orb_cross_bound_mu").uint8("orb_radial_bound_sig").uint8("orb_along_bound_sig").uint8("orb_cross_bound_sig").uint8("clock_bound_mu").uint8("clock_bound_sig"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),k.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),k.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),k.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);let B=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",B.prototype.msg_type=1502,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:k.prototype.parser,length:"n_sats"}),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),B.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),B.prototype.fieldSpec.push(["const_id","writeUInt8",1]),B.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),B.prototype.fieldSpec.push(["orbit_clock_bounds","array",k.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);let q=function(e,t){return r.call(this,e),this.messageType="CodePhaseBiasesSatSig",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="CodePhaseBiasesSatSig",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint8("sat_id").uint8("signal_id").uint8("code_bias_bound_mu").uint8("code_bias_bound_sig").uint8("phase_bias_bound_mu").uint8("phase_bias_bound_sig"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),q.prototype.fieldSpec.push(["signal_id","writeUInt8",1]),q.prototype.fieldSpec.push(["code_bias_bound_mu","writeUInt8",1]),q.prototype.fieldSpec.push(["code_bias_bound_sig","writeUInt8",1]),q.prototype.fieldSpec.push(["phase_bias_bound_mu","writeUInt8",1]),q.prototype.fieldSpec.push(["phase_bias_bound_sig","writeUInt8",1]);let z=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",z.prototype.msg_type=1516,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats_signals").array("satellites_signals",{type:q.prototype.parser,length:"n_sats_signals"}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),z.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),z.prototype.fieldSpec.push(["const_id","writeUInt8",1]),z.prototype.fieldSpec.push(["n_sats_signals","writeUInt8",1]),z.prototype.fieldSpec.push(["satellites_signals","array",q.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats_signals"]);let H=function(e,t){return r.call(this,e),this.messageType="OrbitClockBoundDegradation",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.prototype)).messageType="OrbitClockBoundDegradation",H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").uint8("orb_radial_bound_mu_dot").uint8("orb_along_bound_mu_dot").uint8("orb_cross_bound_mu_dot").uint8("orb_radial_bound_sig_dot").uint8("orb_along_bound_sig_dot").uint8("orb_cross_bound_sig_dot").uint8("clock_bound_mu_dot").uint8("clock_bound_sig_dot"),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["orb_radial_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_along_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_cross_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_radial_bound_sig_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_along_bound_sig_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["orb_cross_bound_sig_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["clock_bound_mu_dot","writeUInt8",1]),H.prototype.fieldSpec.push(["clock_bound_sig_dot","writeUInt8",1]);let V=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",V.prototype.msg_type=1503,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint64("sat_bitmask").nest("orbit_clock_bounds_degradation",{type:H.prototype.parser}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),V.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),V.prototype.fieldSpec.push(["const_id","writeUInt8",1]),V.prototype.fieldSpec.push(["sat_bitmask","writeUInt64LE",8]),V.prototype.fieldSpec.push(["orbit_clock_bounds_degradation",H.prototype.fieldSpec]),e.exports={CodeBiasesContent:a,PhaseBiasesContent:l,STECHeader:c,GriddedCorrectionHeader:u,STECSatElement:y,TroposphericDelayCorrectionNoStd:f,TroposphericDelayCorrection:h,STECResidualNoStd:d,STECResidual:_,1501:S,MsgSsrOrbitClock:S,1505:g,MsgSsrCodeBiases:g,1510:w,MsgSsrPhaseBiases:w,1531:E,MsgSsrStecCorrectionDep:E,BoundsHeader:m,1533:b,MsgSsrStecCorrection:b,1532:I,MsgSsrGriddedCorrection:I,STECSatElementIntegrity:L,1534:T,MsgSsrGriddedCorrectionBounds:T,1526:v,MsgSsrTileDefinitionDepA:v,1527:U,MsgSsrTileDefinitionDepB:U,1528:M,MsgSsrTileDefinition:M,SatelliteAPC:D,1540:O,MsgSsrSatelliteApcDep:O,1541:G,MsgSsrSatelliteApc:G,1500:A,MsgSsrOrbitClockDepA:A,STECHeaderDepA:C,GriddedCorrectionHeaderDepA:R,GridDefinitionHeaderDepA:P,1515:N,MsgSsrStecCorrectionDepA:N,1520:j,MsgSsrGriddedCorrectionNoStdDepA:j,1530:x,MsgSsrGriddedCorrectionDepA:x,1525:F,MsgSsrGridDefinitionDepA:F,OrbitClockBound:k,1502:B,MsgSsrOrbitClockBounds:B,CodePhaseBiasesSatSig:q,1516:z,MsgSsrCodePhaseBiasesBounds:z,OrbitClockBoundDegradation:H,1503:V,MsgSsrOrbitClockBoundsDegradation:V}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_STARTUP",i.prototype.msg_type=65280,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("cause").uint8("startup_type").uint16("reserved"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["cause","writeUInt8",1]),i.prototype.fieldSpec.push(["startup_type","writeUInt8",1]),i.prototype.fieldSpec.push(["reserved","writeUInt16LE",2]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_DGNSS_STATUS",s.prototype.msg_type=65282,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint16("latency").uint8("num_signals").string("source",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["latency","writeUInt16LE",2]),s.prototype.fieldSpec.push(["num_signals","writeUInt8",1]),s.prototype.fieldSpec.push(["source","string",null]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_HEARTBEAT",n.prototype.msg_type=65535,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let a=function(e,t){return r.call(this,e),this.messageType="SubSystemReport",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="SubSystemReport",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint16("component").uint8("generic").uint8("specific"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["component","writeUInt16LE",2]),a.prototype.fieldSpec.push(["generic","writeUInt8",1]),a.prototype.fieldSpec.push(["specific","writeUInt8",1]);let l=function(e,t){return r.call(this,e),this.messageType="MSG_STATUS_REPORT",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_STATUS_REPORT",l.prototype.msg_type=65534,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("sequence").uint32("uptime").array("status",{type:a.prototype.parser,readUntil:"eof"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),l.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),l.prototype.fieldSpec.push(["status","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);let c=function(e,t){return r.call(this,e),this.messageType="StatusJournalItem",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="StatusJournalItem",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("uptime").nest("report",{type:a.prototype.parser}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["report",a.prototype.fieldSpec]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_STATUS_JOURNAL",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_STATUS_JOURNAL",u.prototype.msg_type=65533,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("total_status_reports").uint8("sequence_descriptor").array("journal",{type:c.prototype.parser,readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),u.prototype.fieldSpec.push(["total_status_reports","writeUInt32LE",4]),u.prototype.fieldSpec.push(["sequence_descriptor","writeUInt8",1]),u.prototype.fieldSpec.push(["journal","array",c.prototype.fieldSpec,function(){return this.fields.array.length},null]);let y=function(e,t){return r.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_INS_STATUS",y.prototype.msg_type=65283,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_CSAC_TELEMETRY",f.prototype.msg_type=65284,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["id","writeUInt8",1]),f.prototype.fieldSpec.push(["telemetry","string",null]);let h=function(e,t){return r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_CSAC_TELEMETRY_LABELS",h.prototype.msg_type=65285,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry_labels",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["id","writeUInt8",1]),h.prototype.fieldSpec.push(["telemetry_labels","string",null]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_INS_UPDATES",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_INS_UPDATES",d.prototype.msg_type=65286,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").uint8("gnsspos").uint8("gnssvel").uint8("wheelticks").uint8("speed").uint8("nhc").uint8("zerovel"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["gnsspos","writeUInt8",1]),d.prototype.fieldSpec.push(["gnssvel","writeUInt8",1]),d.prototype.fieldSpec.push(["wheelticks","writeUInt8",1]),d.prototype.fieldSpec.push(["speed","writeUInt8",1]),d.prototype.fieldSpec.push(["nhc","writeUInt8",1]),d.prototype.fieldSpec.push(["zerovel","writeUInt8",1]);let _=function(e,t){return r.call(this,e),this.messageType="MSG_GNSS_TIME_OFFSET",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="MSG_GNSS_TIME_OFFSET",_.prototype.msg_type=65287,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("weeks").int32("milliseconds").int16("microseconds").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["weeks","writeInt16LE",2]),_.prototype.fieldSpec.push(["milliseconds","writeInt32LE",4]),_.prototype.fieldSpec.push(["microseconds","writeInt16LE",2]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_PPS_TIME",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_PPS_TIME",S.prototype.msg_type=65288,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["time","writeUInt64LE",8]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);let g=function(e,t){return r.call(this,e),this.messageType="MSG_SENSOR_AID_EVENT",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="MSG_SENSOR_AID_EVENT",g.prototype.msg_type=65289,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("time").uint8("sensor_type").uint16("sensor_id").uint8("sensor_state").uint8("n_available_meas").uint8("n_attempted_meas").uint8("n_accepted_meas").uint32("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time","writeUInt32LE",4]),g.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),g.prototype.fieldSpec.push(["sensor_id","writeUInt16LE",2]),g.prototype.fieldSpec.push(["sensor_state","writeUInt8",1]),g.prototype.fieldSpec.push(["n_available_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["n_attempted_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["n_accepted_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_META",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_GROUP_META",w.prototype.msg_type=65290,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("group_id").uint8("flags").uint8("n_group_msgs").array("group_msgs",{type:"uint16le",length:"n_group_msgs"}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["group_id","writeUInt8",1]),w.prototype.fieldSpec.push(["flags","writeUInt8",1]),w.prototype.fieldSpec.push(["n_group_msgs","writeUInt8",1]),w.prototype.fieldSpec.push(["group_msgs","array","writeUInt16LE",function(){return 2},"n_group_msgs"]),e.exports={65280:i,MsgStartup:i,65282:s,MsgDgnssStatus:s,65535:n,MsgHeartbeat:n,SubSystemReport:a,65534:l,MsgStatusReport:l,StatusJournalItem:c,65533:u,MsgStatusJournal:u,65283:y,MsgInsStatus:y,65284:f,MsgCsacTelemetry:f,65285:h,MsgCsacTelemetryLabels:h,65286:d,MsgInsUpdates:d,65287:_,MsgGnssTimeOffset:_,65288:S,MsgPpsTime:S,65289:g,MsgSensorAidEvent:g,65290:w,MsgGroupMeta:w}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,c=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",c.prototype.msg_type=33,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:a.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["P","writeUInt32LE",4]),c.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["cn0","writeUInt8",1]),c.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),c.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),c.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),c.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),c.prototype.fieldSpec.push(["acceleration","writeInt8",1]),c.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);let u=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",u.prototype.msg_type=17,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:l.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",l.prototype.fieldSpec]),u.prototype.fieldSpec.push(["P","writeUInt32LE",4]),u.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["cn0","writeUInt8",1]),u.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),u.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),u.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),u.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),u.prototype.fieldSpec.push(["acceleration","writeInt8",1]),u.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);let y=function(e,t){return r.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="TrackingChannelState",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("fcn").uint8("cn0"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["fcn","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt8",1]);let f=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE",f.prototype.msg_type=65,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("states",{type:y.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["states","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);let h=function(e,t){return r.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MeasurementState",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").nest("mesid",{type:s.prototype.parser}).uint8("cn0"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["mesid",s.prototype.fieldSpec]),h.prototype.fieldSpec.push(["cn0","writeUInt8",1]);let d=function(e,t){return r.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_MEASUREMENT_STATE",d.prototype.msg_type=97,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").array("states",{type:h.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["states","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);let _=function(e,t){return r.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.prototype)).messageType="TrackingChannelCorrelation",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("I").int16("Q"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["I","writeInt16LE",2]),_.prototype.fieldSpec.push(["Q","writeInt16LE",2]);let S=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_IQ",S.prototype.msg_type=45,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:_.prototype.parser}),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["channel","writeUInt8",1]),S.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["corrs","array",_.prototype.fieldSpec,function(){return this.fields.array.length},3]);let g=function(e,t){return r.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="TrackingChannelCorrelationDep",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").int32("I").int32("Q"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["I","writeInt32LE",4]),g.prototype.fieldSpec.push(["Q","writeInt32LE",4]);let w=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_IQ_DEP_B",w.prototype.msg_type=44,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["channel","writeUInt8",1]),w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);let E=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_IQ_DEP_A",E.prototype.msg_type=28,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:n.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["channel","writeUInt8",1]),E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);let m=function(e,t){return r.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="TrackingChannelStateDepA",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint8("state").uint8("prn").floatle("cn0"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["state","writeUInt8",1]),m.prototype.fieldSpec.push(["prn","writeUInt8",1]),m.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);let b=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DEP_A",b.prototype.msg_type=22,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").array("states",{type:m.prototype.parser,readUntil:"eof"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["states","array",m.prototype.fieldSpec,function(){return this.fields.array.length},null]);let I=function(e,t){return r.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="TrackingChannelStateDepB",I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["state","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),I.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);let L=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",L.prototype.msg_type=19,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("states",{type:I.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["states","array",I.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:c,MsgTrackingStateDetailedDepA:c,17:u,MsgTrackingStateDetailedDep:u,TrackingChannelState:y,65:f,MsgTrackingState:f,MeasurementState:h,97:d,MsgMeasurementState:d,TrackingChannelCorrelation:_,45:S,MsgTrackingIq:S,TrackingChannelCorrelationDep:g,44:w,MsgTrackingIqDepB:w,28:E,MsgTrackingIqDepA:E,TrackingChannelStateDepA:m,22:b,MsgTrackingStateDepA:b,TrackingChannelStateDepB:I,19:L,MsgTrackingStateDepB:L}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_USER_DATA",i.prototype.msg_type=2048,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").array("contents",{type:"uint8",readUntil:"eof"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]),e.exports={2048:i,MsgUserData:i}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="MSG_ODOMETRY",i.prototype.msg_type=2307,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").int32("velocity").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["velocity","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);let s=function(e,t){return r.call(this,e),this.messageType="MSG_WHEELTICK",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="MSG_WHEELTICK",s.prototype.msg_type=2308,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags").uint8("source").int32("ticks"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["ticks","writeInt32LE",4]),e.exports={2307:i,MsgOdometry:i,2308:s,MsgWheeltick:s}},function(e,t,p){let r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="TelemetrySV",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.prototype)).messageType="TelemetrySV",s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("az").int8("el").uint8("availability_flags").int16("pseudorange_residual").int16("phase_residual").uint8("outlier_flags").uint8("ephemeris_flags").uint8("correction_flags").nest("sid",{type:i.prototype.parser}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["az","writeUInt8",1]),s.prototype.fieldSpec.push(["el","writeInt8",1]),s.prototype.fieldSpec.push(["availability_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["pseudorange_residual","writeInt16LE",2]),s.prototype.fieldSpec.push(["phase_residual","writeInt16LE",2]),s.prototype.fieldSpec.push(["outlier_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["ephemeris_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["correction_flags","writeUInt8",1]),s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);let n=function(e,t){return r.call(this,e),this.messageType="MSG_TEL_SV",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_TEL_SV",n.prototype.msg_type=288,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").uint8("n_obs").uint8("origin_flags").array("sv_tel",{type:s.prototype.parser,readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["n_obs","writeUInt8",1]),n.prototype.fieldSpec.push(["origin_flags","writeUInt8",1]),n.prototype.fieldSpec.push(["sv_tel","array",s.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={TelemetrySV:s,288:n,MsgTelSv:n}}]); \ No newline at end of file diff --git a/javascript/sbp/msg.js b/javascript/sbp/msg.js index a6172bedb8..20c2d6bbdc 100644 --- a/javascript/sbp/msg.js +++ b/javascript/sbp/msg.js @@ -104,6 +104,7 @@ var sbpImports = { observation: require('./observation.js'), orientation: require('./orientation.js'), piksi: require('./piksi.js'), + profiling: require('./profiling.js'), sbas: require('./sbas.js'), settings: require('./settings.js'), signings: require('./signing.js'), diff --git a/javascript/sbp/profiling.js b/javascript/sbp/profiling.js new file mode 100644 index 0000000000..a72ef10128 --- /dev/null +++ b/javascript/sbp/profiling.js @@ -0,0 +1,82 @@ +/** + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * This source is subject to the license found in the file 'LICENSE' which must + * be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/********************** + * Automatically generated from spec/yaml/swiftnav/sbp/profiling.yaml with generate.py. + * Don't edit this by hand! + ********************** + * Package description: + * + * Standardized profiling messages from Swift Navigation devices. +***********************/ + +let SBP = require('./sbp'); +let Parser = require('./parser'); +let Int64 = require('node-int64'); +let UInt64 = require('cuint').UINT64; + +/** + * SBP class for message MSG_MEASUREMENT_POINT (0xCF00). + * + * Tracks execution time of certain code paths in specially built products. This + * message should only be expected and processed on the direction of Swift's + * engineering teams. + * + * Fields in the SBP payload (`sbp.payload`): + * @field total_time number (unsigned 32-bit int, 4 bytes) Total time spent in measurement point + * @field num_executions number (unsigned 16-bit int, 2 bytes) Number of times measurement point has executed + * @field min number (unsigned 32-bit int, 4 bytes) Minimum execution time + * @field max number (unsigned 32-bit int, 4 bytes) Maximum execution time + * @field return_addr number (unsigned 64-bit int, 8 bytes) Return address + * @field id number (unsigned 64-bit int, 8 bytes) Unique ID + * @field slice_time number (unsigned 64-bit int, 8 bytes) CPU slice time + * @field line number (unsigned 16-bit int, 2 bytes) Line number + * @field func string Function name + * + * @param sbp An SBP object with a payload to be decoded. + */ +let MsgMeasurementPoint = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_MEASUREMENT_POINT"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgMeasurementPoint.prototype = Object.create(SBP.prototype); +MsgMeasurementPoint.prototype.messageType = "MSG_MEASUREMENT_POINT"; +MsgMeasurementPoint.prototype.msg_type = 0xCF00; +MsgMeasurementPoint.prototype.constructor = MsgMeasurementPoint; +MsgMeasurementPoint.prototype.parser = new Parser() + .endianess('little') + .uint32('total_time') + .uint16('num_executions') + .uint32('min') + .uint32('max') + .uint64('return_addr') + .uint64('id') + .uint64('slice_time') + .uint16('line') + .string('func', { greedy: true }); +MsgMeasurementPoint.prototype.fieldSpec = []; +MsgMeasurementPoint.prototype.fieldSpec.push(['total_time', 'writeUInt32LE', 4]); +MsgMeasurementPoint.prototype.fieldSpec.push(['num_executions', 'writeUInt16LE', 2]); +MsgMeasurementPoint.prototype.fieldSpec.push(['min', 'writeUInt32LE', 4]); +MsgMeasurementPoint.prototype.fieldSpec.push(['max', 'writeUInt32LE', 4]); +MsgMeasurementPoint.prototype.fieldSpec.push(['return_addr', 'writeUInt64LE', 8]); +MsgMeasurementPoint.prototype.fieldSpec.push(['id', 'writeUInt64LE', 8]); +MsgMeasurementPoint.prototype.fieldSpec.push(['slice_time', 'writeUInt64LE', 8]); +MsgMeasurementPoint.prototype.fieldSpec.push(['line', 'writeUInt16LE', 2]); +MsgMeasurementPoint.prototype.fieldSpec.push(['func', 'string', null]); + +module.exports = { + 0xCF00: MsgMeasurementPoint, + MsgMeasurementPoint: MsgMeasurementPoint, +} \ No newline at end of file diff --git a/javascript/tests/test_dispatch_decoder.js b/javascript/tests/test_dispatch_decoder.js index c97a68405f..d4ab9252af 100644 --- a/javascript/tests/test_dispatch_decoder.js +++ b/javascript/tests/test_dispatch_decoder.js @@ -97,7 +97,8 @@ describe('test packages based on YAML descriptors, through the dispatcher', func if (filename.indexOf('test_MsgFlashDone.yaml') === -1 && filename.indexOf('test_MsgM25FlashWriteStatus.yaml') === -1 && - filename.indexOf('test_MsgBootloaderJumptoApp.yaml') === -1) { + filename.indexOf('test_MsgBootloaderJumptoApp.yaml') === -1 && + filename.indexOf('test_MsgMeasurementPoint.yaml') === -1) { it('should parse binary sbp and payload with leading truncated message', function (done) { var rs = new Readable(); var packetBuf = new Buffer(testSpec['raw_packet'], 'base64'); diff --git a/jsonschema/MsgMeasurementPoint.json b/jsonschema/MsgMeasurementPoint.json new file mode 100644 index 0000000000..a583fbf32d --- /dev/null +++ b/jsonschema/MsgMeasurementPoint.json @@ -0,0 +1,40 @@ +{ + "copyright": [ + "Copyright (C) 2019-2021 Swift Navigation Inc.", + "Contact: https://support.swiftnav.com", + "", + "This source is subject to the license found in the file 'LICENSE' which must", + "be be distributed together with this source. All other rights reserved.", + "", + "THIS CODE AND INFORMATION IS PROVIDED 'AS IS' WITHOUT WARRANTY OF ANY KIND,", + "EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED", + "WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE." + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "#MsgMeasurementPoint", + "title":"MsgMeasurementPoint", + "description":"Tracks execution time of certain code paths in specially built products. This message should only be expected and processed on the direction of Swift's engineering teams.\n", + "type": "object", + "properties": { + "total_time": {"type": "integer"}, + "num_executions": {"type": "integer"}, + "min": {"type": "integer"}, + "max": {"type": "integer"}, + "return_addr": {"type": "integer"}, + "id": {"type": "integer"}, + "slice_time": {"type": "integer"}, + "line": {"type": "integer"}, + "func": {"type": "string"} + }, + "required": [ + "total_time", + "num_executions", + "min", + "max", + "return_addr", + "id", + "slice_time", + "line", + "func" + ] +} \ No newline at end of file diff --git a/kaitai/ksy/profiling.ksy b/kaitai/ksy/profiling.ksy new file mode 100644 index 0000000000..cbcf6c381b --- /dev/null +++ b/kaitai/ksy/profiling.ksy @@ -0,0 +1,67 @@ +# Copyright (C) 2015-2023 Swift Navigation Inc. +# Contact: https://support.swiftnav.com +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +# +# Standardized profiling messages from Swift Navigation devices. +# +# Automatically generated from spec/yaml/swiftnav/sbp/profiling.yaml with generate.py. +# Do not modify by hand! + +meta: + id: profiling + endian: le + imports: [ ] + +types: + + msg_measurement_point: + doc: | + Tracks execution time of certain code paths in specially built products. + This message should only be expected and processed on the direction of + Swift's engineering teams. + seq: + - id: total_time + doc: | + Total time spent in measurement point + type: u4 + - id: num_executions + doc: | + Number of times measurement point has executed + type: u2 + - id: min + doc: | + Minimum execution time + type: u4 + - id: max + doc: | + Maximum execution time + type: u4 + - id: return_addr + doc: | + Return address + type: u8 + - id: id + doc: | + Unique ID + type: u8 + - id: slice_time + doc: | + CPU slice time + type: u8 + - id: line + doc: | + Line number + type: u2 + - id: func + doc: | + Function name + type: str + encoding: ascii + size-eos: true + \ No newline at end of file diff --git a/kaitai/ksy/sbp.ksy b/kaitai/ksy/sbp.ksy index f1336c243f..35e8bddca2 100644 --- a/kaitai/ksy/sbp.ksy +++ b/kaitai/ksy/sbp.ksy @@ -34,6 +34,7 @@ meta: - observation - orientation - piksi + - profiling - sbas - settings - signing @@ -235,6 +236,8 @@ enums: 81: msg_specan 191: msg_front_end_gain + 52992: msg_measurement_point + 30583: msg_sbas_raw 161: msg_settings_save @@ -512,6 +515,8 @@ types: 81: piksi::msg_specan 191: piksi::msg_front_end_gain + 52992: profiling::msg_measurement_point + 30583: sbas::msg_sbas_raw 161: settings::msg_settings_save diff --git a/kaitai/perl/KaitaiSbp/Profiling.pm b/kaitai/perl/KaitaiSbp/Profiling.pm new file mode 100644 index 0000000000..8fb5c72b46 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/Profiling.pm @@ -0,0 +1,126 @@ +# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild + +use strict; +use warnings; +use IO::KaitaiStruct 0.009_000; +use Encode; + +######################################################################## +package Profiling; + +our @ISA = 'IO::KaitaiStruct::Struct'; + +sub from_file { + my ($class, $filename) = @_; + my $fd; + + open($fd, '<', $filename) or return undef; + binmode($fd); + return new($class, IO::KaitaiStruct::Stream->new($fd)); +} + +sub new { + my ($class, $_io, $_parent, $_root) = @_; + my $self = IO::KaitaiStruct::Struct->new($_io); + + bless $self, $class; + $self->{_parent} = $_parent; + $self->{_root} = $_root || $self;; + + $self->_read(); + + return $self; +} + +sub _read { + my ($self) = @_; + +} + +######################################################################## +package Profiling::MsgMeasurementPoint; + +our @ISA = 'IO::KaitaiStruct::Struct'; + +sub from_file { + my ($class, $filename) = @_; + my $fd; + + open($fd, '<', $filename) or return undef; + binmode($fd); + return new($class, IO::KaitaiStruct::Stream->new($fd)); +} + +sub new { + my ($class, $_io, $_parent, $_root) = @_; + my $self = IO::KaitaiStruct::Struct->new($_io); + + bless $self, $class; + $self->{_parent} = $_parent; + $self->{_root} = $_root || $self;; + + $self->_read(); + + return $self; +} + +sub _read { + my ($self) = @_; + + $self->{total_time} = $self->{_io}->read_u4le(); + $self->{num_executions} = $self->{_io}->read_u2le(); + $self->{min} = $self->{_io}->read_u4le(); + $self->{max} = $self->{_io}->read_u4le(); + $self->{return_addr} = $self->{_io}->read_u8le(); + $self->{id} = $self->{_io}->read_u8le(); + $self->{slice_time} = $self->{_io}->read_u8le(); + $self->{line} = $self->{_io}->read_u2le(); + $self->{func} = Encode::decode("ascii", $self->{_io}->read_bytes_full()); +} + +sub total_time { + my ($self) = @_; + return $self->{total_time}; +} + +sub num_executions { + my ($self) = @_; + return $self->{num_executions}; +} + +sub min { + my ($self) = @_; + return $self->{min}; +} + +sub max { + my ($self) = @_; + return $self->{max}; +} + +sub return_addr { + my ($self) = @_; + return $self->{return_addr}; +} + +sub id { + my ($self) = @_; + return $self->{id}; +} + +sub slice_time { + my ($self) = @_; + return $self->{slice_time}; +} + +sub line { + my ($self) = @_; + return $self->{line}; +} + +sub func { + my ($self) = @_; + return $self->{func}; +} + +1; diff --git a/kaitai/perl/KaitaiSbp/Sbp.pm b/kaitai/perl/KaitaiSbp/Sbp.pm index c8eacc87fa..15f62cdc37 100644 --- a/kaitai/perl/KaitaiSbp/Sbp.pm +++ b/kaitai/perl/KaitaiSbp/Sbp.pm @@ -15,6 +15,7 @@ use KaitaiSbp::Ndb; use KaitaiSbp::Observation; use KaitaiSbp::Orientation; use KaitaiSbp::Piksi; +use KaitaiSbp::Profiling; use KaitaiSbp::Sbas; use KaitaiSbp::Settings; use KaitaiSbp::Signing; @@ -262,6 +263,7 @@ our $MSG_IDS_MSG_LINUX_PROCESS_FD_SUMMARY = 32519; our $MSG_IDS_MSG_LINUX_CPU_STATE = 32520; our $MSG_IDS_MSG_LINUX_MEM_STATE = 32521; our $MSG_IDS_MSG_LINUX_SYS_STATE = 32522; +our $MSG_IDS_MSG_MEASUREMENT_POINT = 52992; our $MSG_IDS_MSG_STARTUP = 65280; our $MSG_IDS_MSG_DGNSS_STATUS = 65282; our $MSG_IDS_MSG_INS_STATUS = 65283; @@ -625,6 +627,11 @@ sub _read { my $io__raw_payload = IO::KaitaiStruct::Stream->new($self->{_raw_payload}); $self->{payload} = Ssr::MsgSsrCodePhaseBiasesBounds->new($io__raw_payload, $self, $self->{_root}); } + elsif ($_on == 52992) { + $self->{_raw_payload} = $self->{_io}->read_bytes($self->length()); + my $io__raw_payload = IO::KaitaiStruct::Stream->new($self->{_raw_payload}); + $self->{payload} = Profiling::MsgMeasurementPoint->new($io__raw_payload, $self, $self->{_root}); + } elsif ($_on == 150) { $self->{_raw_payload} = $self->{_io}->read_bytes($self->length()); my $io__raw_payload = IO::KaitaiStruct::Stream->new($self->{_raw_payload}); diff --git a/kaitai/perl/KaitaiSbp/Table.pm b/kaitai/perl/KaitaiSbp/Table.pm index 8208dcd8e7..1d892ec392 100644 --- a/kaitai/perl/KaitaiSbp/Table.pm +++ b/kaitai/perl/KaitaiSbp/Table.pm @@ -30,6 +30,7 @@ use KaitaiSbp::Ndb; use KaitaiSbp::Observation; use KaitaiSbp::Orientation; use KaitaiSbp::Piksi; +use KaitaiSbp::Profiling; use KaitaiSbp::Sbas; use KaitaiSbp::Settings; use KaitaiSbp::Signing; @@ -229,6 +230,8 @@ our %TABLE = ( 81 => sub{Piksi::MsgSpecan->new(@_)}, 191 => sub{Piksi::MsgFrontEndGain->new(@_)}, + 52992 => sub{Profiling::MsgMeasurementPoint->new(@_)}, + 30583 => sub{Sbas::MsgSbasRaw->new(@_)}, 161 => sub{Settings::MsgSettingsSave->new(@_)}, diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_profiling_MsgMeasurementPoint.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_profiling_MsgMeasurementPoint.t new file mode 100644 index 0000000000..76053cebc1 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_profiling_MsgMeasurementPoint.t @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 Swift Navigation Inc. +# Contact: https://support.swiftnav.com +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/profiling/test_MsgMeasurementPoint.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_profiling_msg_measurement_point_1() { + my $buf = decode_base64("VQDPABAw+gcAALQAAgAAACgAAACCyZSNYVUAABKCyZQAAAAAQkCdDwAAAAASAHJvdXRlKCkA1KU="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xa5d4, "crc"); + + is($msg->{'length'}, 48, "length"); + + is($msg->{'msg_type'}, 0xCF00, "msg_type"); + + is($msg->{'payload'}, "+gcAALQAAgAAACgAAACCyZSNYVUAABKCyZQAAAAAQkCdDwAAAAASAHJvdXRlKCkA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x1000, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->func(), "route()\x00", "func"); + + is($msg->id(), 2496234002, "id"); + + is($msg->line(), 18, "line"); + + is($msg->max(), 40, "max"); + + is($msg->min(), 2, "min"); + + is($msg->num_executions(), 180, "num_executions"); + + is($msg->return_addr(), 93877475527042, "return_addr"); + + is($msg->slice_time(), 261963842, "slice_time"); + + is($msg->total_time(), 2042, "total_time"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":42452,"func":"route()\u0000","id":2496234002,"length":48,"line":18,"max":40,"min":2,"msg_type":52992,"num_executions":180,"payload":"+gcAALQAAgAAACgAAACCyZSNYVUAABKCyZQAAAAAQkCdDwAAAAASAHJvdXRlKCkA","preamble":85,"return_addr":93877475527042,"sender":4096,"slice_time":261963842,"total_time":2042}})), "raw_json"); +} +test_auto_check_sbp_profiling_msg_measurement_point_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/profiling.py b/kaitai/python/kaitai_sbp/profiling.py new file mode 100644 index 0000000000..a8bef316d4 --- /dev/null +++ b/kaitai/python/kaitai_sbp/profiling.py @@ -0,0 +1,43 @@ +# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild + +import kaitaistruct +from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO + + +if getattr(kaitaistruct, 'API_VERSION', (0, 9)) < (0, 9): + raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__)) + +class Profiling(KaitaiStruct): + def __init__(self, _io, _parent=None, _root=None): + self._io = _io + self._parent = _parent + self._root = _root if _root else self + self._read() + + def _read(self): + pass + + class MsgMeasurementPoint(KaitaiStruct): + """Tracks execution time of certain code paths in specially built products. + This message should only be expected and processed on the direction of + Swift's engineering teams. + """ + def __init__(self, _io, _parent=None, _root=None): + self._io = _io + self._parent = _parent + self._root = _root if _root else self + self._read() + + def _read(self): + self.total_time = self._io.read_u4le() + self.num_executions = self._io.read_u2le() + self.min = self._io.read_u4le() + self.max = self._io.read_u4le() + self.return_addr = self._io.read_u8le() + self.id = self._io.read_u8le() + self.slice_time = self._io.read_u8le() + self.line = self._io.read_u2le() + self.func = (self._io.read_bytes_full()).decode(u"ascii") + + + diff --git a/kaitai/python/kaitai_sbp/sbp.py b/kaitai/python/kaitai_sbp/sbp.py index b5c7b28b1e..589c93831b 100644 --- a/kaitai/python/kaitai_sbp/sbp.py +++ b/kaitai/python/kaitai_sbp/sbp.py @@ -15,6 +15,7 @@ from .observation import * from .orientation import * from .piksi import * +from .profiling import * from .sbas import * from .settings import * from .signing import * @@ -255,6 +256,7 @@ class MsgIds(Enum): msg_linux_cpu_state = 32520 msg_linux_mem_state = 32521 msg_linux_sys_state = 32522 + msg_measurement_point = 52992 msg_startup = 65280 msg_dgnss_status = 65282 msg_ins_status = 65283 @@ -527,6 +529,10 @@ def _read(self): self._raw_payload = self._io.read_bytes(self.length) _io__raw_payload = KaitaiStream(BytesIO(self._raw_payload)) self.payload = Ssr.MsgSsrCodePhaseBiasesBounds(_io__raw_payload, self, self._root) + elif _on == 52992: + self._raw_payload = self._io.read_bytes(self.length) + _io__raw_payload = KaitaiStream(BytesIO(self._raw_payload)) + self.payload = Profiling.MsgMeasurementPoint(_io__raw_payload, self, self._root) elif _on == 150: self._raw_payload = self._io.read_bytes(self.length) _io__raw_payload = KaitaiStream(BytesIO(self._raw_payload)) diff --git a/kaitai/python/kaitai_sbp/table.py b/kaitai/python/kaitai_sbp/table.py index a083dea69f..f1a9a37c5e 100644 --- a/kaitai/python/kaitai_sbp/table.py +++ b/kaitai/python/kaitai_sbp/table.py @@ -28,6 +28,7 @@ from .observation import * from .orientation import * from .piksi import * +from .profiling import * from .sbas import * from .settings import * from .signing import * @@ -223,6 +224,8 @@ 81: Piksi.MsgSpecan, 191: Piksi.MsgFrontEndGain, + 52992: Profiling.MsgMeasurementPoint, + 30583: Sbas.MsgSbasRaw, 161: Settings.MsgSettingsSave, diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_profiling_MsgMeasurementPoint.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_profiling_MsgMeasurementPoint.py new file mode 100644 index 0000000000..3d65713876 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_profiling_MsgMeasurementPoint.py @@ -0,0 +1,57 @@ +# Copyright (C) 2015-2023 Swift Navigation Inc. +# Contact: https://support.swiftnav.com +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/profiling/test_MsgMeasurementPoint.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_profiling_msg_measurement_point_1(): + buf = base64.standard_b64decode("VQDPABAw+gcAALQAAgAAACgAAACCyZSNYVUAABKCyZQAAAAAQkCdDwAAAAASAHJvdXRlKCkA1KU=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xa5d4 + + assert msg.length == 48 + + assert msg.msg_type == 0xCF00 + + assert msg.payload == "+gcAALQAAgAAACgAAACCyZSNYVUAABKCyZQAAAAAQkCdDwAAAAASAHJvdXRlKCkA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x1000 + + assert dictify(msg.func) == "route()\x00" + + assert dictify(msg.id) == 2496234002 + + assert dictify(msg.line) == 18 + + assert dictify(msg.max) == 40 + + assert dictify(msg.min) == 2 + + assert dictify(msg.num_executions) == 180 + + assert dictify(msg.return_addr) == 93877475527042 + + assert dictify(msg.slice_time) == 261963842 + + assert dictify(msg.total_time) == 2042 + + assert dictify(msg) == {'crc': 42452, 'preamble': 85, 'sender': 4096, 'length': 48, 'msg_type': 52992, 'total_time': 2042, 'num_executions': 180, 'min': 2, 'max': 40, 'return_addr': 93877475527042, 'id': 2496234002, 'slice_time': 261963842, 'line': 18, 'func': 'route()\x00', 'payload': '+gcAALQAAgAAACgAAACCyZSNYVUAABKCyZQAAAAAQkCdDwAAAAASAHJvdXRlKCkA'} \ No newline at end of file diff --git a/proto/profiling.proto b/proto/profiling.proto new file mode 100644 index 0000000000..fba91fde3d --- /dev/null +++ b/proto/profiling.proto @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +syntax = "proto3"; + +/** Profiling + * + * Standardized profiling messages from Swift Navigation devices. + */ + +package swiftnav.sbp.profiling; + + +/** Profiling Measurement Point + * + * Tracks execution time of certain code paths in specially built products. + * This message should only be expected and processed on the direction of + * Swift's engineering teams. + */ +message MsgMeasurementPoint { + uint32 total_time = 1; + uint32 num_executions = 2; + uint32 min = 3; + uint32 max = 4; + uint64 return_addr = 5; + uint64 id = 6; + uint64 slice_time = 7; + uint32 line = 8; + string func = 9; +} \ No newline at end of file diff --git a/python/docs/source/spelling_wordlist.txt b/python/docs/source/spelling_wordlist.txt index 141d8a47c2..3b90164009 100644 --- a/python/docs/source/spelling_wordlist.txt +++ b/python/docs/source/spelling_wordlist.txt @@ -167,6 +167,7 @@ utils uuid wheeltick wheelticks +xCF xF xFF xFFFE diff --git a/python/sbp/profiling.py b/python/sbp/profiling.py new file mode 100644 index 0000000000..721352db6a --- /dev/null +++ b/python/sbp/profiling.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python +# Copyright (C) 2015-2021 Swift Navigation Inc. +# Contact: https://support.swiftnav.com +# +# This source is subject to the license found in the file 'LICENSE' which must +# be be distributed together with this source. All other rights reserved. +# +# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + + +""" +Standardized profiling messages from Swift Navigation devices. +""" + +import json + +import construct + +from sbp.msg import SBP, SENDER_ID +from sbp.utils import fmt_repr, exclude_fields, walk_json_dict, containerize + +# Automatically generated from piksi/yaml/swiftnav/sbp/profiling.yaml with generate.py. +# Please do not hand edit! + + +SBP_MSG_MEASUREMENT_POINT = 0xCF00 +class MsgMeasurementPoint(SBP): + """SBP class for message MSG_MEASUREMENT_POINT (0xCF00). + + You can have MSG_MEASUREMENT_POINT inherit its fields directly + from an inherited SBP object, or construct it inline using a dict + of its fields. + + + Tracks execution time of certain code paths in specially built products. + This message should only be expected and processed on the direction of + Swift's engineering teams. + + Parameters + ---------- + sbp : SBP + SBP parent object to inherit from. + total_time : int + Total time spent in measurement point + num_executions : int + Number of times measurement point has executed + min : int + Minimum execution time + max : int + Maximum execution time + return_addr : int + Return address + id : int + Unique ID + slice_time : int + CPU slice time + line : int + Line number + func : string + Function name + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'total_time' / construct.Int32ul, + 'num_executions' / construct.Int16ul, + 'min' / construct.Int32ul, + 'max' / construct.Int32ul, + 'return_addr' / construct.Int64ul, + 'id' / construct.Int64ul, + 'slice_time' / construct.Int64ul, + 'line' / construct.Int16ul, + 'func' / construct.GreedyBytes,) + __slots__ = [ + 'total_time', + 'num_executions', + 'min', + 'max', + 'return_addr', + 'id', + 'slice_time', + 'line', + 'func', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgMeasurementPoint, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgMeasurementPoint, self).__init__() + self.msg_type = SBP_MSG_MEASUREMENT_POINT + self.sender = kwargs.pop('sender', SENDER_ID) + self.total_time = kwargs.pop('total_time') + self.num_executions = kwargs.pop('num_executions') + self.min = kwargs.pop('min') + self.max = kwargs.pop('max') + self.return_addr = kwargs.pop('return_addr') + self.id = kwargs.pop('id') + self.slice_time = kwargs.pop('slice_time') + self.line = kwargs.pop('line') + self.func = kwargs.pop('func') + + def __repr__(self): + return fmt_repr(self) + + @staticmethod + def from_json(s): + """Given a JSON-encoded string s, build a message object. + + """ + d = json.loads(s) + return MsgMeasurementPoint.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgMeasurementPoint(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgMeasurementPoint._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + """Produce a framed/packed SBP message. + + """ + c = containerize(exclude_fields(self)) + self.payload = MsgMeasurementPoint._parser.build(c) + return self.pack() + + def friendly_name(self): + """Produces friendly human-readable name for this message + + """ + return "MEAS POINT" + + def into_buffer(self, buf, offset): + """Produce a framed/packed SBP message into the provided buffer and offset. + + """ + self.payload = containerize(exclude_fields(self)) + self.parser = MsgMeasurementPoint._parser + self.stream_payload.reset(buf, offset) + return self.pack_into(buf, offset, self._build_payload) + + def to_json_dict(self): + self.to_binary() + d = super( MsgMeasurementPoint, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + + +msg_classes = { + 0xCF00: MsgMeasurementPoint, +} \ No newline at end of file diff --git a/python/sbp/table.py b/python/sbp/table.py index e3557ef189..2f9cccafa8 100755 --- a/python/sbp/table.py +++ b/python/sbp/table.py @@ -40,6 +40,7 @@ from . import solution_meta as solmeta from . import signing as signing from . import telemetry as telemetry +from . import profiling as profiling import warnings @@ -68,6 +69,7 @@ + list(solmeta.msg_classes.items()) + list(signing.msg_classes.items()) + list(telemetry.msg_classes.items()) + + list(profiling.msg_classes.items()) ) class InvalidSBPMessageType(NotImplementedError): diff --git a/python/tests/sbp/test_table.py b/python/tests/sbp/test_table.py index 9eecdd784f..636bdae92b 100644 --- a/python/tests/sbp/test_table.py +++ b/python/tests/sbp/test_table.py @@ -35,6 +35,7 @@ from sbp import solution_meta as solmeta from sbp import signing as signing from sbp import telemetry as telemetry +from sbp import profiling as profiling import warnings @@ -43,7 +44,7 @@ def test_table_count(): Test number of available messages to deserialize. """ - number_of_messages = 233 + number_of_messages = 234 assert len(_SBP_TABLE) == number_of_messages def test_table_unqiue_count(): @@ -75,6 +76,7 @@ def test_table_unqiue_count(): + len(solmeta.msg_classes) + len(signing.msg_classes) + len(telemetry.msg_classes) + + len(profiling.msg_classes) ) assert len(_SBP_TABLE) == number_of_messages diff --git a/rust/sbp/src/messages/mod.rs b/rust/sbp/src/messages/mod.rs index dcaf43ed50..d0bf93f024 100644 --- a/rust/sbp/src/messages/mod.rs +++ b/rust/sbp/src/messages/mod.rs @@ -32,6 +32,7 @@ pub mod ndb; pub mod observation; pub mod orientation; pub mod piksi; +pub mod profiling; pub mod sbas; pub mod settings; pub mod signing; @@ -209,6 +210,7 @@ use self::piksi::msg_specan_dep::MsgSpecanDep; use self::piksi::msg_thread_state::MsgThreadState; use self::piksi::msg_uart_state::MsgUartState; use self::piksi::msg_uart_state_depa::MsgUartStateDepa; +use self::profiling::msg_measurement_point::MsgMeasurementPoint; use self::sbas::msg_sbas_raw::MsgSbasRaw; use self::settings::msg_settings_read_by_index_done::MsgSettingsReadByIndexDone; use self::settings::msg_settings_read_by_index_req::MsgSettingsReadByIndexReq; @@ -820,6 +822,8 @@ pub enum Sbp { MsgLinuxMemState(MsgLinuxMemState), /// CPU, Memory and Process Starts/Stops MsgLinuxSysState(MsgLinuxSysState), + /// Profiling Measurement Point + MsgMeasurementPoint(MsgMeasurementPoint), /// System start-up message MsgStartup(MsgStartup), /// Status of received corrections @@ -1559,6 +1563,9 @@ impl<'de> serde::Deserialize<'de> for Sbp { Some(MsgLinuxSysState::MESSAGE_TYPE) => { serde_json::from_value::(value).map(Sbp::MsgLinuxSysState) } + Some(MsgMeasurementPoint::MESSAGE_TYPE) => { + serde_json::from_value::(value).map(Sbp::MsgMeasurementPoint) + } Some(MsgStartup::MESSAGE_TYPE) => { serde_json::from_value::(value).map(Sbp::MsgStartup) } @@ -2244,6 +2251,9 @@ impl Sbp { MsgLinuxSysState::MESSAGE_TYPE => { MsgLinuxSysState::parse(&mut payload).map(Sbp::MsgLinuxSysState) } + MsgMeasurementPoint::MESSAGE_TYPE => { + MsgMeasurementPoint::parse(&mut payload).map(Sbp::MsgMeasurementPoint) + } MsgStartup::MESSAGE_TYPE => MsgStartup::parse(&mut payload).map(Sbp::MsgStartup), MsgDgnssStatus::MESSAGE_TYPE => { MsgDgnssStatus::parse(&mut payload).map(Sbp::MsgDgnssStatus) @@ -2523,6 +2533,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.message_name(), Sbp::MsgLinuxMemState(msg) => msg.message_name(), Sbp::MsgLinuxSysState(msg) => msg.message_name(), + Sbp::MsgMeasurementPoint(msg) => msg.message_name(), Sbp::MsgStartup(msg) => msg.message_name(), Sbp::MsgDgnssStatus(msg) => msg.message_name(), Sbp::MsgInsStatus(msg) => msg.message_name(), @@ -2763,6 +2774,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.message_type(), Sbp::MsgLinuxMemState(msg) => msg.message_type(), Sbp::MsgLinuxSysState(msg) => msg.message_type(), + Sbp::MsgMeasurementPoint(msg) => msg.message_type(), Sbp::MsgStartup(msg) => msg.message_type(), Sbp::MsgDgnssStatus(msg) => msg.message_type(), Sbp::MsgInsStatus(msg) => msg.message_type(), @@ -3003,6 +3015,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.sender_id(), Sbp::MsgLinuxMemState(msg) => msg.sender_id(), Sbp::MsgLinuxSysState(msg) => msg.sender_id(), + Sbp::MsgMeasurementPoint(msg) => msg.sender_id(), Sbp::MsgStartup(msg) => msg.sender_id(), Sbp::MsgDgnssStatus(msg) => msg.sender_id(), Sbp::MsgInsStatus(msg) => msg.sender_id(), @@ -3243,6 +3256,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.set_sender_id(new_id), Sbp::MsgLinuxMemState(msg) => msg.set_sender_id(new_id), Sbp::MsgLinuxSysState(msg) => msg.set_sender_id(new_id), + Sbp::MsgMeasurementPoint(msg) => msg.set_sender_id(new_id), Sbp::MsgStartup(msg) => msg.set_sender_id(new_id), Sbp::MsgDgnssStatus(msg) => msg.set_sender_id(new_id), Sbp::MsgInsStatus(msg) => msg.set_sender_id(new_id), @@ -3483,6 +3497,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.encoded_len(), Sbp::MsgLinuxMemState(msg) => msg.encoded_len(), Sbp::MsgLinuxSysState(msg) => msg.encoded_len(), + Sbp::MsgMeasurementPoint(msg) => msg.encoded_len(), Sbp::MsgStartup(msg) => msg.encoded_len(), Sbp::MsgDgnssStatus(msg) => msg.encoded_len(), Sbp::MsgInsStatus(msg) => msg.encoded_len(), @@ -3726,6 +3741,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.gps_time(), Sbp::MsgLinuxMemState(msg) => msg.gps_time(), Sbp::MsgLinuxSysState(msg) => msg.gps_time(), + Sbp::MsgMeasurementPoint(msg) => msg.gps_time(), Sbp::MsgStartup(msg) => msg.gps_time(), Sbp::MsgDgnssStatus(msg) => msg.gps_time(), Sbp::MsgInsStatus(msg) => msg.gps_time(), @@ -3966,6 +3982,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.friendly_name(), Sbp::MsgLinuxMemState(msg) => msg.friendly_name(), Sbp::MsgLinuxSysState(msg) => msg.friendly_name(), + Sbp::MsgMeasurementPoint(msg) => msg.friendly_name(), Sbp::MsgStartup(msg) => msg.friendly_name(), Sbp::MsgDgnssStatus(msg) => msg.friendly_name(), Sbp::MsgInsStatus(msg) => msg.friendly_name(), @@ -4206,6 +4223,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => msg.is_valid(), Sbp::MsgLinuxMemState(msg) => msg.is_valid(), Sbp::MsgLinuxSysState(msg) => msg.is_valid(), + Sbp::MsgMeasurementPoint(msg) => msg.is_valid(), Sbp::MsgStartup(msg) => msg.is_valid(), Sbp::MsgDgnssStatus(msg) => msg.is_valid(), Sbp::MsgInsStatus(msg) => msg.is_valid(), @@ -4535,6 +4553,7 @@ impl SbpMessage for Sbp { Sbp::MsgLinuxCpuState(msg) => Ok(Sbp::MsgLinuxCpuState(msg.into_valid_msg()?)), Sbp::MsgLinuxMemState(msg) => Ok(Sbp::MsgLinuxMemState(msg.into_valid_msg()?)), Sbp::MsgLinuxSysState(msg) => Ok(Sbp::MsgLinuxSysState(msg.into_valid_msg()?)), + Sbp::MsgMeasurementPoint(msg) => Ok(Sbp::MsgMeasurementPoint(msg.into_valid_msg()?)), Sbp::MsgStartup(msg) => Ok(Sbp::MsgStartup(msg.into_valid_msg()?)), Sbp::MsgDgnssStatus(msg) => Ok(Sbp::MsgDgnssStatus(msg.into_valid_msg()?)), Sbp::MsgInsStatus(msg) => Ok(Sbp::MsgInsStatus(msg.into_valid_msg()?)), @@ -4790,6 +4809,7 @@ impl WireFormat for Sbp { Sbp::MsgLinuxCpuState(msg) => WireFormat::write(msg, buf), Sbp::MsgLinuxMemState(msg) => WireFormat::write(msg, buf), Sbp::MsgLinuxSysState(msg) => WireFormat::write(msg, buf), + Sbp::MsgMeasurementPoint(msg) => WireFormat::write(msg, buf), Sbp::MsgStartup(msg) => WireFormat::write(msg, buf), Sbp::MsgDgnssStatus(msg) => WireFormat::write(msg, buf), Sbp::MsgInsStatus(msg) => WireFormat::write(msg, buf), @@ -5030,6 +5050,7 @@ impl WireFormat for Sbp { Sbp::MsgLinuxCpuState(msg) => WireFormat::len(msg), Sbp::MsgLinuxMemState(msg) => WireFormat::len(msg), Sbp::MsgLinuxSysState(msg) => WireFormat::len(msg), + Sbp::MsgMeasurementPoint(msg) => WireFormat::len(msg), Sbp::MsgStartup(msg) => WireFormat::len(msg), Sbp::MsgDgnssStatus(msg) => WireFormat::len(msg), Sbp::MsgInsStatus(msg) => WireFormat::len(msg), @@ -6359,6 +6380,12 @@ impl From for Sbp { } } +impl From for Sbp { + fn from(msg: MsgMeasurementPoint) -> Self { + Sbp::MsgMeasurementPoint(msg) + } +} + impl From for Sbp { fn from(msg: MsgStartup) -> Self { Sbp::MsgStartup(msg) diff --git a/rust/sbp/src/messages/profiling.rs b/rust/sbp/src/messages/profiling.rs new file mode 100644 index 0000000000..755a4a2fce --- /dev/null +++ b/rust/sbp/src/messages/profiling.rs @@ -0,0 +1,158 @@ +// Copyright (C) 2015-2021 Swift Navigation Inc. +// Contact: https://support.swiftnav.com +// +// This source is subject to the license found in the file 'LICENSE' which must +// be be distributed together with this source. All other rights reserved. +// +// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +//**************************************************************************** +// Automatically generated from yaml/swiftnav/sbp/profiling.yaml +// with generate.py. Please do not hand edit! +//****************************************************************************/ +//! Standardized profiling messages from Swift Navigation devices. +pub use msg_measurement_point::MsgMeasurementPoint; + +pub mod msg_measurement_point { + #![allow(unused_imports)] + + use super::*; + use crate::messages::lib::*; + + /// Profiling Measurement Point + /// + /// Tracks execution time of certain code paths in specially built products. + /// This message should only be expected and processed on the direction of + /// Swift's engineering teams. + /// + #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] + #[allow(clippy::derive_partial_eq_without_eq)] + #[derive(Debug, PartialEq, Clone)] + pub struct MsgMeasurementPoint { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing, alias = "sender"))] + pub sender_id: Option, + /// Total time spent in measurement point + #[cfg_attr(feature = "serde", serde(rename = "total_time"))] + pub total_time: u32, + /// Number of times measurement point has executed + #[cfg_attr(feature = "serde", serde(rename = "num_executions"))] + pub num_executions: u16, + /// Minimum execution time + #[cfg_attr(feature = "serde", serde(rename = "min"))] + pub min: u32, + /// Maximum execution time + #[cfg_attr(feature = "serde", serde(rename = "max"))] + pub max: u32, + /// Return address + #[cfg_attr(feature = "serde", serde(rename = "return_addr"))] + pub return_addr: u64, + /// Unique ID + #[cfg_attr(feature = "serde", serde(rename = "id"))] + pub id: u64, + /// CPU slice time + #[cfg_attr(feature = "serde", serde(rename = "slice_time"))] + pub slice_time: u64, + /// Line number + #[cfg_attr(feature = "serde", serde(rename = "line"))] + pub line: u16, + /// Function name + #[cfg_attr(feature = "serde", serde(rename = "func"))] + pub func: SbpString, NullTerminated>, + } + + impl ConcreteMessage for MsgMeasurementPoint { + const MESSAGE_TYPE: u16 = 52992; + const MESSAGE_NAME: &'static str = "MSG_MEASUREMENT_POINT"; + } + + impl SbpMessage for MsgMeasurementPoint { + fn message_name(&self) -> &'static str { + ::MESSAGE_NAME + } + fn message_type(&self) -> Option { + Some(::MESSAGE_TYPE) + } + fn sender_id(&self) -> Option { + self.sender_id + } + fn set_sender_id(&mut self, new_id: u16) { + self.sender_id = Some(new_id); + } + fn encoded_len(&self) -> usize { + WireFormat::len(self) + crate::HEADER_LEN + crate::CRC_LEN + } + fn is_valid(&self) -> bool { + true + } + fn into_valid_msg(self) -> Result { + Ok(self) + } + } + + impl FriendlyName for MsgMeasurementPoint { + fn friendly_name() -> &'static str { + "MEAS POINT" + } + } + + impl TryFrom for MsgMeasurementPoint { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgMeasurementPoint(m) => Ok(m), + _ => Err(TryFromSbpError(msg)), + } + } + } + + impl WireFormat for MsgMeasurementPoint { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + , NullTerminated> as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.total_time) + + WireFormat::len(&self.num_executions) + + WireFormat::len(&self.min) + + WireFormat::len(&self.max) + + WireFormat::len(&self.return_addr) + + WireFormat::len(&self.id) + + WireFormat::len(&self.slice_time) + + WireFormat::len(&self.line) + + WireFormat::len(&self.func) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.total_time, buf); + WireFormat::write(&self.num_executions, buf); + WireFormat::write(&self.min, buf); + WireFormat::write(&self.max, buf); + WireFormat::write(&self.return_addr, buf); + WireFormat::write(&self.id, buf); + WireFormat::write(&self.slice_time, buf); + WireFormat::write(&self.line, buf); + WireFormat::write(&self.func, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgMeasurementPoint { + sender_id: None, + total_time: WireFormat::parse_unchecked(buf), + num_executions: WireFormat::parse_unchecked(buf), + min: WireFormat::parse_unchecked(buf), + max: WireFormat::parse_unchecked(buf), + return_addr: WireFormat::parse_unchecked(buf), + id: WireFormat::parse_unchecked(buf), + slice_time: WireFormat::parse_unchecked(buf), + line: WireFormat::parse_unchecked(buf), + func: WireFormat::parse_unchecked(buf), + } + } + } +} diff --git a/rust/sbp/tests/integration/auto_check_sbp_profiling_msg_measurement_point.rs b/rust/sbp/tests/integration/auto_check_sbp_profiling_msg_measurement_point.rs new file mode 100644 index 0000000000..1841512638 --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_profiling_msg_measurement_point.rs @@ -0,0 +1,312 @@ +// +// Copyright (C) 2019-2021 Swift Navigation Inc. +// Contact: https://support.swiftnav.com +// +// This source is subject to the license found in the file 'LICENSE' which must +// be be distributed together with this source. All other rights reserved. +// +// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +// This file was auto-generated from spec/tests/yaml/swiftnav/sbp/profiling/test_MsgMeasurementPoint.yaml by generate.py. Do not modify by hand! + +use crate::*; + +/// Tests [`sbp::iter_messages`], from payload into SBP messages +/// +/// Asserts: +/// - SBP fields equates to that of the field +/// - Payload is identical +#[test] +fn test_auto_check_sbp_profiling_msg_measurement_point() { + { + let mut payload = Cursor::new(vec![ + 85, 0, 207, 0, 16, 48, 250, 7, 0, 0, 180, 0, 2, 0, 0, 0, 40, 0, 0, 0, 130, 201, 148, + 141, 97, 85, 0, 0, 18, 130, 201, 148, 0, 0, 0, 0, 66, 64, 157, 15, 0, 0, 0, 0, 18, 0, + 114, 111, 117, 116, 101, 40, 41, 0, 212, 165, + ]); + + // Test the round trip payload parsing + let sbp_msg = { + let mut msgs = iter_messages(&mut payload); + msgs.next() + .expect("no message found") + .expect("failed to parse message") + }; + match &sbp_msg { + sbp::messages::Sbp::MsgMeasurementPoint(msg) => { + let msg_type = msg.message_type().unwrap(); + assert_eq!( + msg_type, 0xCF00, + "Incorrect message type, expected 0xCF00, is {}", + msg_type + ); + let sender_id = msg.sender_id().unwrap(); + assert_eq!( + sender_id, 0x1000, + "incorrect sender id, expected 0x1000, is {sender_id}" + ); + assert_eq!( + msg.func.as_bytes(), + &[114, 111, 117, 116, 101, 40, 41, 0], + "incorrect value for msg.func, expected string '{:?}', is '{:?}'", + &[114, 111, 117, 116, 101, 40, 41, 0], + msg.func.as_bytes() + ); + assert_eq!( + msg.id, 2496234002, + "incorrect value for id, expected 2496234002, is {}", + msg.id + ); + assert_eq!( + msg.line, 18, + "incorrect value for line, expected 18, is {}", + msg.line + ); + assert_eq!( + msg.max, 40, + "incorrect value for max, expected 40, is {}", + msg.max + ); + assert_eq!( + msg.min, 2, + "incorrect value for min, expected 2, is {}", + msg.min + ); + assert_eq!( + msg.num_executions, 180, + "incorrect value for num_executions, expected 180, is {}", + msg.num_executions + ); + assert_eq!( + msg.return_addr, 93877475527042, + "incorrect value for return_addr, expected 93877475527042, is {}", + msg.return_addr + ); + assert_eq!( + msg.slice_time, 261963842, + "incorrect value for slice_time, expected 261963842, is {}", + msg.slice_time + ); + assert_eq!( + msg.total_time, 2042, + "incorrect value for total_time, expected 2042, is {}", + msg.total_time + ); + } + _ => panic!("Invalid message type! Expected a MsgMeasurementPoint"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} + +/// Tests [`sbp::json::iter_messages`] for JSON payload -> SBP message +/// and [`sbp::json::iter_messages_from_fields`] for JSON fields -> SBP message. +/// +/// Asserts: +/// - SBP message constructed via payload is identical to from fields +/// - SBP fields equates to that of the field +/// - Payload is identical +#[test] +#[cfg(feature = "json")] +fn test_json2sbp_auto_check_sbp_profiling_msg_measurement_point() { + { + let json_input = r#"{"crc": 42452, "preamble": 85, "sender": 4096, "length": 48, "msg_type": 52992, "total_time": 2042, "num_executions": 180, "min": 2, "max": 40, "return_addr": 93877475527042, "id": 2496234002, "slice_time": 261963842, "line": 18, "func": "route()\u0000", "payload": "+gcAALQAAgAAACgAAACCyZSNYVUAABKCyZQAAAAAQkCdDwAAAAASAHJvdXRlKCkA" }"#.as_bytes(); + + let sbp_msg = { + // JSON to SBP message from payload + let mut iter = json2sbp_iter_msg(json_input); + let from_payload = iter + .next() + .expect("no message found") + .expect("failed to parse message"); + + // JSON to SBP message from fields + let mut iter = iter_messages_from_fields(json_input); + let from_fields = iter + .next() + .expect("no message found") + .expect("failed to parse message"); + + assert_eq!(from_fields, from_payload); + from_fields + }; + match &sbp_msg { + sbp::messages::Sbp::MsgMeasurementPoint(msg) => { + let msg_type = msg.message_type().unwrap(); + assert_eq!( + msg_type, 0xCF00, + "Incorrect message type, expected 0xCF00, is {}", + msg_type + ); + let sender_id = msg.sender_id().unwrap(); + assert_eq!( + sender_id, 0x1000, + "incorrect sender id, expected 0x1000, is {sender_id}" + ); + assert_eq!( + msg.func.as_bytes(), + &[114, 111, 117, 116, 101, 40, 41, 0], + "incorrect value for msg.func, expected string '{:?}', is '{:?}'", + &[114, 111, 117, 116, 101, 40, 41, 0], + msg.func.as_bytes() + ); + assert_eq!( + msg.id, 2496234002, + "incorrect value for id, expected 2496234002, is {}", + msg.id + ); + assert_eq!( + msg.line, 18, + "incorrect value for line, expected 18, is {}", + msg.line + ); + assert_eq!( + msg.max, 40, + "incorrect value for max, expected 40, is {}", + msg.max + ); + assert_eq!( + msg.min, 2, + "incorrect value for min, expected 2, is {}", + msg.min + ); + assert_eq!( + msg.num_executions, 180, + "incorrect value for num_executions, expected 180, is {}", + msg.num_executions + ); + assert_eq!( + msg.return_addr, 93877475527042, + "incorrect value for return_addr, expected 93877475527042, is {}", + msg.return_addr + ); + assert_eq!( + msg.slice_time, 261963842, + "incorrect value for slice_time, expected 261963842, is {}", + msg.slice_time + ); + assert_eq!( + msg.total_time, 2042, + "incorrect value for total_time, expected 2042, is {}", + msg.total_time + ); + } + _ => panic!("Invalid message type! Expected a MsgMeasurementPoint"), + }; + } +} + +/// Tests [`sbp::json::JsonEncoder`] for roundtrip SBP message -> JSON +/// +/// Assumes: +/// - [`self::test_auto_check_sbp_profiling_msg_measurement_point`] passes +/// +/// Asserts: +/// - SBP fields equates to that of the field +/// - Payload is identical +#[test] +#[cfg(feature = "json")] +fn test_sbp2json_auto_check_sbp_profiling_msg_measurement_point() { + { + let mut payload = Cursor::new(vec![ + 85, 0, 207, 0, 16, 48, 250, 7, 0, 0, 180, 0, 2, 0, 0, 0, 40, 0, 0, 0, 130, 201, 148, + 141, 97, 85, 0, 0, 18, 130, 201, 148, 0, 0, 0, 0, 66, 64, 157, 15, 0, 0, 0, 0, 18, 0, + 114, 111, 117, 116, 101, 40, 41, 0, 212, 165, + ]); + + // Construct sbp message + let sbp_msg = { + let mut msgs = iter_messages(&mut payload); + msgs.next() + .expect("no message found") + .expect("failed to parse message") + }; + + let mut json_buffer = vec![]; + // Populate json buffer, CompactFormatter + sbp::json::JsonEncoder::new(&mut json_buffer, sbp::json::CompactFormatter {}) + .send(&sbp_msg) + .unwrap(); + + // Reconstruct Sbp message from json fields, roundtrip + let sbp_msg = sbp::messages::Sbp::MsgMeasurementPoint( + serde_json::from_str( + std::str::from_utf8(json_buffer.as_slice()) + .unwrap() + .to_string() + .as_str(), + ) + .unwrap(), + ); + match &sbp_msg { + sbp::messages::Sbp::MsgMeasurementPoint(msg) => { + let msg_type = msg.message_type().unwrap(); + assert_eq!( + msg_type, 0xCF00, + "Incorrect message type, expected 0xCF00, is {}", + msg_type + ); + let sender_id = msg.sender_id().unwrap(); + assert_eq!( + sender_id, 0x1000, + "incorrect sender id, expected 0x1000, is {sender_id}" + ); + assert_eq!( + msg.func.as_bytes(), + &[114, 111, 117, 116, 101, 40, 41, 0], + "incorrect value for msg.func, expected string '{:?}', is '{:?}'", + &[114, 111, 117, 116, 101, 40, 41, 0], + msg.func.as_bytes() + ); + assert_eq!( + msg.id, 2496234002, + "incorrect value for id, expected 2496234002, is {}", + msg.id + ); + assert_eq!( + msg.line, 18, + "incorrect value for line, expected 18, is {}", + msg.line + ); + assert_eq!( + msg.max, 40, + "incorrect value for max, expected 40, is {}", + msg.max + ); + assert_eq!( + msg.min, 2, + "incorrect value for min, expected 2, is {}", + msg.min + ); + assert_eq!( + msg.num_executions, 180, + "incorrect value for num_executions, expected 180, is {}", + msg.num_executions + ); + assert_eq!( + msg.return_addr, 93877475527042, + "incorrect value for return_addr, expected 93877475527042, is {}", + msg.return_addr + ); + assert_eq!( + msg.slice_time, 261963842, + "incorrect value for slice_time, expected 261963842, is {}", + msg.slice_time + ); + assert_eq!( + msg.total_time, 2042, + "incorrect value for total_time, expected 2042, is {}", + msg.total_time + ); + } + _ => panic!("Invalid message type! Expected a MsgMeasurementPoint"), + }; + + // Check payload is still identical + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} diff --git a/rust/sbp/tests/integration/main.rs b/rust/sbp/tests/integration/main.rs index dab35b2bcd..c2d30cb5d6 100644 --- a/rust/sbp/tests/integration/main.rs +++ b/rust/sbp/tests/integration/main.rs @@ -175,6 +175,7 @@ mod auto_check_sbp_piksi_msg_specan_dep; mod auto_check_sbp_piksi_msg_thread_state; mod auto_check_sbp_piksi_msg_uart_state; mod auto_check_sbp_piksi_msg_uart_state_dep_a; +mod auto_check_sbp_profiling_msg_measurement_point; mod auto_check_sbp_sbas_msg_sbas_raw; mod auto_check_sbp_settings_msg_settings_read_by_index_done; mod auto_check_sbp_settings_msg_settings_read_by_index_req; diff --git a/sbpjson/elm/SbpJson.elm b/sbpjson/elm/SbpJson.elm index 3cbc8c33e3..db6b665b0b 100644 --- a/sbpjson/elm/SbpJson.elm +++ b/sbpjson/elm/SbpJson.elm @@ -5,7 +5,7 @@ -- add these imports -- -- import Json.Decode exposing (decodeString)`); --- import SbpJson exposing (acqSvProfile, almanacCommonContent, boundsHeader, carrierPhase, codeBiasesContent, codePhaseBiasesSatSig, doppler, ecdsaSignature, ephemerisCommonContent, estimatedHorizontalErrorEllipse, gnssInputType, gnssCapb, gnssSignal, gpsTime, gpsTimeSEC, gridElement, gridElementNoStd, griddedCorrectionHeader, imuInputType, integritySSRHeader, latency, measurementState, msgAcknowledge, msgAcqResult, msgAcqSvProfile, msgAgeCorrections, msgAlmanac, msgAlmanacGPS, msgAlmanacGlo, msgAngularRate, msgBasePosECEF, msgBasePosLLH, msgBaselineECEF, msgBaselineHeading, msgBaselineNED, msgBootloaderHandshakeReq, msgBootloaderHandshakeResp, msgBootloaderJumpToApp, msgCellModemStatus, msgCertificateChain, msgCommandOutput, msgCommandReq, msgCommandResp, msgCsacTelemetry, msgCsacTelemetryLabels, msgCwResults, msgCwStart, msgDeviceMonitor, msgDgnssStatus, msgDops, msgEcdsaCertificate, msgEcdsaSignature, msgEphemerisBds, msgEphemerisGPS, msgEphemerisGal, msgEphemerisGlo, msgEphemerisQzss, msgEphemerisSbas, msgEXTEvent, msgFileioConfigReq, msgFileioConfigResp, msgFileioReadDirReq, msgFileioReadDirResp, msgFileioReadReq, msgFileioReadResp, msgFileioRemove, msgFileioWriteReq, msgFileioWriteResp, msgFlashDone, msgFlashErase, msgFlashProgram, msgFlashReadReq, msgFlashReadResp, msgFrontEndGain, msgFwd, msgGPSTime, msgGPSTimeGnss, msgGloBiases, msgGnssCapb, msgGnssTimeOffset, msgGroupDelay, msgGroupMeta, msgHeartbeat, msgIarState, msgImuAux, msgImuRaw, msgInsStatus, msgInsUpdates, msgIono, msgLinuxCPUState, msgLinuxMemState, msgLinuxProcessFdCount, msgLinuxProcessFdSummary, msgLinuxProcessSocketCounts, msgLinuxProcessSocketQueues, msgLinuxSocketUsage, msgLinuxSysState, msgLog, msgM25FlashWriteStatus, msgMagRaw, msgMaskSatellite, msgMeasurementState, msgNapDeviceDnaReq, msgNapDeviceDnaResp, msgNdbEvent, msgNetworkBandwidthUsage, msgNetworkStateReq, msgNetworkStateResp, msgObs, msgOdometry, msgOrientEuler, msgOrientQuat, msgOsr, msgPosECEF, msgPosECEFCov, msgPosECEFCovGnss, msgPosECEFGnss, msgPosLLH, msgPosLLHAcc, msgPosLLHCov, msgPosLLHCovGnss, msgPosLLHGnss, msgPoseRelative, msgPpsTime, msgProtectionLevel, msgReferenceFrameParam, msgReset, msgResetFilters, msgSbasRaw, msgSensorAidEvent, msgSetTime, msgSettingsReadByIndexDone, msgSettingsReadByIndexReq, msgSettingsReadByIndexResp, msgSettingsReadReq, msgSettingsReadResp, msgSettingsRegister, msgSettingsRegisterResp, msgSettingsSave, msgSettingsWrite, msgSettingsWriteResp, msgSolnMeta, msgSpecan, msgSsrCodeBiases, msgSsrCodePhaseBiasesBounds, msgSsrFlagHighLevel, msgSsrFlagIonoGridPointSatLos, msgSsrFlagIonoGridPoints, msgSsrFlagIonoTileSatLos, msgSsrFlagSatellites, msgSsrFlagTropoGridPoints, msgSsrGriddedCorrection, msgSsrGriddedCorrectionBounds, msgSsrOrbitClock, msgSsrOrbitClockBounds, msgSsrOrbitClockBoundsDegradation, msgSsrPhaseBiases, msgSsrSatelliteApc, msgSsrStecCorrection, msgSsrTileDefinition, msgStartup, msgStatusJournal, msgStatusReport, msgStmFlashLockSector, msgStmFlashUnlockSector, msgStmUniqueIDReq, msgStmUniqueIDResp, msgSvAzEl, msgTelSv, msgThreadState, msgTrackingIq, msgTrackingState, msgUARTState, msgUserData, msgUTCLeapSecond, msgUTCTime, msgUTCTimeGnss, msgVelBody, msgVelCog, msgVelECEF, msgVelECEFCov, msgVelECEFCovGnss, msgVelECEFGnss, msgVelNED, msgVelNEDCov, msgVelNEDCovGnss, msgVelNEDGnss, msgWheeltick, networkUsage, observationHeader, odoInputType, orbitClockBound, orbitClockBoundDegradation, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, stecSatElementIntegrity, satelliteAPC, solutionInputType, statusJournalItem, subSystemReport, svAzEl, svID, telemetrySV, trackingChannelCorrelation, trackingChannelState, troposphericDelayCorrection, troposphericDelayCorrectionNoStd, uartChannel, utcTime) +-- import SbpJson exposing (acqSvProfile, almanacCommonContent, boundsHeader, carrierPhase, codeBiasesContent, codePhaseBiasesSatSig, doppler, ecdsaSignature, ephemerisCommonContent, estimatedHorizontalErrorEllipse, gnssInputType, gnssCapb, gnssSignal, gpsTime, gpsTimeSEC, gridElement, gridElementNoStd, griddedCorrectionHeader, imuInputType, integritySSRHeader, latency, measurementState, msgAcknowledge, msgAcqResult, msgAcqSvProfile, msgAgeCorrections, msgAlmanac, msgAlmanacGPS, msgAlmanacGlo, msgAngularRate, msgBasePosECEF, msgBasePosLLH, msgBaselineECEF, msgBaselineHeading, msgBaselineNED, msgBootloaderHandshakeReq, msgBootloaderHandshakeResp, msgBootloaderJumpToApp, msgCellModemStatus, msgCertificateChain, msgCommandOutput, msgCommandReq, msgCommandResp, msgCsacTelemetry, msgCsacTelemetryLabels, msgCwResults, msgCwStart, msgDeviceMonitor, msgDgnssStatus, msgDops, msgEcdsaCertificate, msgEcdsaSignature, msgEphemerisBds, msgEphemerisGPS, msgEphemerisGal, msgEphemerisGlo, msgEphemerisQzss, msgEphemerisSbas, msgEXTEvent, msgFileioConfigReq, msgFileioConfigResp, msgFileioReadDirReq, msgFileioReadDirResp, msgFileioReadReq, msgFileioReadResp, msgFileioRemove, msgFileioWriteReq, msgFileioWriteResp, msgFlashDone, msgFlashErase, msgFlashProgram, msgFlashReadReq, msgFlashReadResp, msgFrontEndGain, msgFwd, msgGPSTime, msgGPSTimeGnss, msgGloBiases, msgGnssCapb, msgGnssTimeOffset, msgGroupDelay, msgGroupMeta, msgHeartbeat, msgIarState, msgImuAux, msgImuRaw, msgInsStatus, msgInsUpdates, msgIono, msgLinuxCPUState, msgLinuxMemState, msgLinuxProcessFdCount, msgLinuxProcessFdSummary, msgLinuxProcessSocketCounts, msgLinuxProcessSocketQueues, msgLinuxSocketUsage, msgLinuxSysState, msgLog, msgM25FlashWriteStatus, msgMagRaw, msgMaskSatellite, msgMeasurementPoint, msgMeasurementState, msgNapDeviceDnaReq, msgNapDeviceDnaResp, msgNdbEvent, msgNetworkBandwidthUsage, msgNetworkStateReq, msgNetworkStateResp, msgObs, msgOdometry, msgOrientEuler, msgOrientQuat, msgOsr, msgPosECEF, msgPosECEFCov, msgPosECEFCovGnss, msgPosECEFGnss, msgPosLLH, msgPosLLHAcc, msgPosLLHCov, msgPosLLHCovGnss, msgPosLLHGnss, msgPoseRelative, msgPpsTime, msgProtectionLevel, msgReferenceFrameParam, msgReset, msgResetFilters, msgSbasRaw, msgSensorAidEvent, msgSetTime, msgSettingsReadByIndexDone, msgSettingsReadByIndexReq, msgSettingsReadByIndexResp, msgSettingsReadReq, msgSettingsReadResp, msgSettingsRegister, msgSettingsRegisterResp, msgSettingsSave, msgSettingsWrite, msgSettingsWriteResp, msgSolnMeta, msgSpecan, msgSsrCodeBiases, msgSsrCodePhaseBiasesBounds, msgSsrFlagHighLevel, msgSsrFlagIonoGridPointSatLos, msgSsrFlagIonoGridPoints, msgSsrFlagIonoTileSatLos, msgSsrFlagSatellites, msgSsrFlagTropoGridPoints, msgSsrGriddedCorrection, msgSsrGriddedCorrectionBounds, msgSsrOrbitClock, msgSsrOrbitClockBounds, msgSsrOrbitClockBoundsDegradation, msgSsrPhaseBiases, msgSsrSatelliteApc, msgSsrStecCorrection, msgSsrTileDefinition, msgStartup, msgStatusJournal, msgStatusReport, msgStmFlashLockSector, msgStmFlashUnlockSector, msgStmUniqueIDReq, msgStmUniqueIDResp, msgSvAzEl, msgTelSv, msgThreadState, msgTrackingIq, msgTrackingState, msgUARTState, msgUserData, msgUTCLeapSecond, msgUTCTime, msgUTCTimeGnss, msgVelBody, msgVelCog, msgVelECEF, msgVelECEFCov, msgVelECEFCovGnss, msgVelECEFGnss, msgVelNED, msgVelNEDCov, msgVelNEDCovGnss, msgVelNEDGnss, msgWheeltick, networkUsage, observationHeader, odoInputType, orbitClockBound, orbitClockBoundDegradation, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, stecSatElementIntegrity, satelliteAPC, solutionInputType, statusJournalItem, subSystemReport, svAzEl, svID, telemetrySV, trackingChannelCorrelation, trackingChannelState, troposphericDelayCorrection, troposphericDelayCorrectionNoStd, uartChannel, utcTime) -- -- and you're off to the races with -- @@ -110,6 +110,7 @@ -- decodeString msgM25FlashWriteStatus myJsonString -- decodeString msgMagRaw myJsonString -- decodeString msgMaskSatellite myJsonString +-- decodeString msgMeasurementPoint myJsonString -- decodeString msgMeasurementState myJsonString -- decodeString msgNapDeviceDnaReq myJsonString -- decodeString msgNapDeviceDnaResp myJsonString @@ -529,6 +530,9 @@ module SbpJson exposing , MsgMaskSatellite , msgMaskSatelliteToString , msgMaskSatellite + , MsgMeasurementPoint + , msgMeasurementPointToString + , msgMeasurementPoint , MsgMeasurementState , msgMeasurementStateToString , msgMeasurementState @@ -1958,6 +1962,21 @@ type alias MsgMaskSatellite = , sid : GnssSignal } +{-| Tracks execution time of certain code paths in specially built products. This message +should only be expected and processed on the direction of Swift's engineering teams. +-} +type alias MsgMeasurementPoint = + { func : String + , id : Int + , line : Int + , max : Int + , min : Int + , numExecutions : Int + , returnAddr : Int + , sliceTime : Int + , totalTime : Int + } + {-| The tracking message returns a variable-length array of tracking channel states. It reports status and carrier-to-noise density measurements for all tracked satellites. -} @@ -3798,6 +3817,9 @@ msgMagRawToString r = Jenc.encode 0 (encodeMsgMagRaw r) msgMaskSatelliteToString : MsgMaskSatellite -> String msgMaskSatelliteToString r = Jenc.encode 0 (encodeMsgMaskSatellite r) +msgMeasurementPointToString : MsgMeasurementPoint -> String +msgMeasurementPointToString r = Jenc.encode 0 (encodeMsgMeasurementPoint r) + msgMeasurementStateToString : MsgMeasurementState -> String msgMeasurementStateToString r = Jenc.encode 0 (encodeMsgMeasurementState r) @@ -5884,6 +5906,33 @@ encodeMsgMaskSatellite x = , ("sid", encodeGnssSignal x.sid) ] +msgMeasurementPoint : Jdec.Decoder MsgMeasurementPoint +msgMeasurementPoint = + Jpipe.decode MsgMeasurementPoint + |> Jpipe.required "func" Jdec.string + |> Jpipe.required "id" Jdec.int + |> Jpipe.required "line" Jdec.int + |> Jpipe.required "max" Jdec.int + |> Jpipe.required "min" Jdec.int + |> Jpipe.required "num_executions" Jdec.int + |> Jpipe.required "return_addr" Jdec.int + |> Jpipe.required "slice_time" Jdec.int + |> Jpipe.required "total_time" Jdec.int + +encodeMsgMeasurementPoint : MsgMeasurementPoint -> Jenc.Value +encodeMsgMeasurementPoint x = + Jenc.object + [ ("func", Jenc.string x.func) + , ("id", Jenc.int x.id) + , ("line", Jenc.int x.line) + , ("max", Jenc.int x.max) + , ("min", Jenc.int x.min) + , ("num_executions", Jenc.int x.numExecutions) + , ("return_addr", Jenc.int x.returnAddr) + , ("slice_time", Jenc.int x.sliceTime) + , ("total_time", Jenc.int x.totalTime) + ] + msgMeasurementState : Jdec.Decoder MsgMeasurementState msgMeasurementState = Jpipe.decode MsgMeasurementState diff --git a/sbpjson/javascript/SbpJson.js b/sbpjson/javascript/SbpJson.js index 7825558a43..fd15b5f96b 100644 --- a/sbpjson/javascript/SbpJson.js +++ b/sbpjson/javascript/SbpJson.js @@ -103,6 +103,7 @@ // const msgM25FlashWriteStatus = Convert.toMsgM25FlashWriteStatus(json); // const msgMagRaw = Convert.toMsgMagRaw(json); // const msgMaskSatellite = Convert.toMsgMaskSatellite(json); +// const msgMeasurementPoint = Convert.toMsgMeasurementPoint(json); // const msgMeasurementState = Convert.toMsgMeasurementState(json); // const msgNapDeviceDnaReq = Convert.toMsgNapDeviceDnaReq(json); // const msgNapDeviceDnaResp = Convert.toMsgNapDeviceDnaResp(json); @@ -1031,6 +1032,14 @@ function msgMaskSatelliteToJson(value) { return JSON.stringify(uncast(value, r("MsgMaskSatellite")), null, 2); } +function toMsgMeasurementPoint(json) { + return cast(JSON.parse(json), r("MsgMeasurementPoint")); +} + +function msgMeasurementPointToJson(value) { + return JSON.stringify(uncast(value, r("MsgMeasurementPoint")), null, 2); +} + function toMsgMeasurementState(json) { return cast(JSON.parse(json), r("MsgMeasurementState")); } @@ -2729,6 +2738,17 @@ const typeMap = { { json: "mask", js: "mask", typ: 0 }, { json: "sid", js: "sid", typ: r("GnssSignal") }, ], "any"), + "MsgMeasurementPoint": o([ + { json: "func", js: "func", typ: "" }, + { json: "id", js: "id", typ: 0 }, + { json: "line", js: "line", typ: 0 }, + { json: "max", js: "max", typ: 0 }, + { json: "min", js: "min", typ: 0 }, + { json: "num_executions", js: "num_executions", typ: 0 }, + { json: "return_addr", js: "return_addr", typ: 0 }, + { json: "slice_time", js: "slice_time", typ: 0 }, + { json: "total_time", js: "total_time", typ: 0 }, + ], "any"), "MsgMeasurementState": o([ { json: "states", js: "states", typ: a(r("MeasurementState")) }, ], "any"), @@ -3818,6 +3838,8 @@ module.exports = { "toMsgMagRaw": toMsgMagRaw, "msgMaskSatelliteToJson": msgMaskSatelliteToJson, "toMsgMaskSatellite": toMsgMaskSatellite, + "msgMeasurementPointToJson": msgMeasurementPointToJson, + "toMsgMeasurementPoint": toMsgMeasurementPoint, "msgMeasurementStateToJson": msgMeasurementStateToJson, "toMsgMeasurementState": toMsgMeasurementState, "msgNapDeviceDnaReqToJson": msgNapDeviceDnaReqToJson, diff --git a/sbpjson/typescript/SbpJson.ts b/sbpjson/typescript/SbpJson.ts index 844ef2152f..fb17ed827d 100644 --- a/sbpjson/typescript/SbpJson.ts +++ b/sbpjson/typescript/SbpJson.ts @@ -1,6 +1,6 @@ // To parse this data: // -// import { Convert, AcqSvProfile, AlmanacCommonContent, BoundsHeader, CarrierPhase, CodeBiasesContent, CodePhaseBiasesSatSig, Doppler, ECDSASignature, EphemerisCommonContent, EstimatedHorizontalErrorEllipse, GNSSInputType, GnssCapb, GnssSignal, GpsTime, GpsTimeSEC, GridElement, GridElementNoStd, GriddedCorrectionHeader, IMUInputType, IntegritySSRHeader, Latency, MeasurementState, MsgAcknowledge, MsgAcqResult, MsgAcqSvProfile, MsgAgeCorrections, MsgAlmanacGPS, MsgAlmanacGlo, MsgAngularRate, MsgBasePosECEF, MsgBasePosLLH, MsgBaselineECEF, MsgBaselineHeading, MsgBaselineNED, MsgBootloaderHandshakeResp, MsgBootloaderJumpToApp, MsgCellModemStatus, MsgCertificateChain, MsgCommandOutput, MsgCommandReq, MsgCommandResp, MsgCsacTelemetry, MsgCsacTelemetryLabels, MsgDeviceMonitor, MsgDgnssStatus, MsgDops, MsgEcdsaCertificate, MsgEcdsaSignature, MsgEphemerisBds, MsgEphemerisGPS, MsgEphemerisGal, MsgEphemerisGlo, MsgEphemerisQzss, MsgEphemerisSbas, MsgEXTEvent, MsgFileioConfigReq, MsgFileioConfigResp, MsgFileioReadDirReq, MsgFileioReadDirResp, MsgFileioReadReq, MsgFileioReadResp, MsgFileioRemove, MsgFileioWriteReq, MsgFileioWriteResp, MsgFlashDone, MsgFlashErase, MsgFlashProgram, MsgFlashReadReq, MsgFlashReadResp, MsgFrontEndGain, MsgFwd, MsgGPSTime, MsgGPSTimeGnss, MsgGloBiases, MsgGnssCapb, MsgGnssTimeOffset, MsgGroupDelay, MsgGroupMeta, MsgHeartbeat, MsgIarState, MsgImuAux, MsgImuRaw, MsgInsStatus, MsgInsUpdates, MsgIono, MsgLinuxCPUState, MsgLinuxMemState, MsgLinuxProcessFdCount, MsgLinuxProcessFdSummary, MsgLinuxProcessSocketCounts, MsgLinuxProcessSocketQueues, MsgLinuxSocketUsage, MsgLinuxSysState, MsgLog, MsgM25FlashWriteStatus, MsgMagRaw, MsgMaskSatellite, MsgMeasurementState, MsgNapDeviceDnaResp, MsgNdbEvent, MsgNetworkBandwidthUsage, MsgNetworkStateResp, MsgObs, MsgOdometry, MsgOrientEuler, MsgOrientQuat, MsgOsr, MsgPosECEF, MsgPosECEFCov, MsgPosECEFCovGnss, MsgPosECEFGnss, MsgPosLLH, MsgPosLLHAcc, MsgPosLLHCov, MsgPosLLHCovGnss, MsgPosLLHGnss, MsgPoseRelative, MsgPpsTime, MsgProtectionLevel, MsgReferenceFrameParam, MsgReset, MsgResetFilters, MsgSbasRaw, MsgSensorAidEvent, MsgSettingsReadByIndexReq, MsgSettingsReadByIndexResp, MsgSettingsReadReq, MsgSettingsReadResp, MsgSettingsRegister, MsgSettingsRegisterResp, MsgSettingsWrite, MsgSettingsWriteResp, MsgSolnMeta, MsgSpecan, MsgSsrCodeBiases, MsgSsrCodePhaseBiasesBounds, MsgSsrFlagHighLevel, MsgSsrFlagIonoGridPointSatLos, MsgSsrFlagIonoGridPoints, MsgSsrFlagIonoTileSatLos, MsgSsrFlagSatellites, MsgSsrFlagTropoGridPoints, MsgSsrGriddedCorrection, MsgSsrGriddedCorrectionBounds, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, MsgSsrOrbitClockBoundsDegradation, MsgSsrPhaseBiases, MsgSsrSatelliteApc, MsgSsrStecCorrection, MsgSsrTileDefinition, MsgStartup, MsgStatusJournal, MsgStatusReport, MsgStmFlashLockSector, MsgStmFlashUnlockSector, MsgStmUniqueIDResp, MsgSvAzEl, MsgTelSv, MsgThreadState, MsgTrackingIq, MsgTrackingState, MsgUARTState, MsgUserData, MsgUTCLeapSecond, MsgUTCTime, MsgUTCTimeGnss, MsgVelBody, MsgVelCog, MsgVelECEF, MsgVelECEFCov, MsgVelECEFCovGnss, MsgVelECEFGnss, MsgVelNED, MsgVelNEDCov, MsgVelNEDCovGnss, MsgVelNEDGnss, MsgWheeltick, NetworkUsage, ObservationHeader, OdoInputType, OrbitClockBound, OrbitClockBoundDegradation, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, STECSatElementIntegrity, SatelliteAPC, SolutionInputType, StatusJournalItem, SubSystemReport, SvAzEl, SvID, TelemetrySV, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel, UTCTime } from "./file"; +// import { Convert, AcqSvProfile, AlmanacCommonContent, BoundsHeader, CarrierPhase, CodeBiasesContent, CodePhaseBiasesSatSig, Doppler, ECDSASignature, EphemerisCommonContent, EstimatedHorizontalErrorEllipse, GNSSInputType, GnssCapb, GnssSignal, GpsTime, GpsTimeSEC, GridElement, GridElementNoStd, GriddedCorrectionHeader, IMUInputType, IntegritySSRHeader, Latency, MeasurementState, MsgAcknowledge, MsgAcqResult, MsgAcqSvProfile, MsgAgeCorrections, MsgAlmanacGPS, MsgAlmanacGlo, MsgAngularRate, MsgBasePosECEF, MsgBasePosLLH, MsgBaselineECEF, MsgBaselineHeading, MsgBaselineNED, MsgBootloaderHandshakeResp, MsgBootloaderJumpToApp, MsgCellModemStatus, MsgCertificateChain, MsgCommandOutput, MsgCommandReq, MsgCommandResp, MsgCsacTelemetry, MsgCsacTelemetryLabels, MsgDeviceMonitor, MsgDgnssStatus, MsgDops, MsgEcdsaCertificate, MsgEcdsaSignature, MsgEphemerisBds, MsgEphemerisGPS, MsgEphemerisGal, MsgEphemerisGlo, MsgEphemerisQzss, MsgEphemerisSbas, MsgEXTEvent, MsgFileioConfigReq, MsgFileioConfigResp, MsgFileioReadDirReq, MsgFileioReadDirResp, MsgFileioReadReq, MsgFileioReadResp, MsgFileioRemove, MsgFileioWriteReq, MsgFileioWriteResp, MsgFlashDone, MsgFlashErase, MsgFlashProgram, MsgFlashReadReq, MsgFlashReadResp, MsgFrontEndGain, MsgFwd, MsgGPSTime, MsgGPSTimeGnss, MsgGloBiases, MsgGnssCapb, MsgGnssTimeOffset, MsgGroupDelay, MsgGroupMeta, MsgHeartbeat, MsgIarState, MsgImuAux, MsgImuRaw, MsgInsStatus, MsgInsUpdates, MsgIono, MsgLinuxCPUState, MsgLinuxMemState, MsgLinuxProcessFdCount, MsgLinuxProcessFdSummary, MsgLinuxProcessSocketCounts, MsgLinuxProcessSocketQueues, MsgLinuxSocketUsage, MsgLinuxSysState, MsgLog, MsgM25FlashWriteStatus, MsgMagRaw, MsgMaskSatellite, MsgMeasurementPoint, MsgMeasurementState, MsgNapDeviceDnaResp, MsgNdbEvent, MsgNetworkBandwidthUsage, MsgNetworkStateResp, MsgObs, MsgOdometry, MsgOrientEuler, MsgOrientQuat, MsgOsr, MsgPosECEF, MsgPosECEFCov, MsgPosECEFCovGnss, MsgPosECEFGnss, MsgPosLLH, MsgPosLLHAcc, MsgPosLLHCov, MsgPosLLHCovGnss, MsgPosLLHGnss, MsgPoseRelative, MsgPpsTime, MsgProtectionLevel, MsgReferenceFrameParam, MsgReset, MsgResetFilters, MsgSbasRaw, MsgSensorAidEvent, MsgSettingsReadByIndexReq, MsgSettingsReadByIndexResp, MsgSettingsReadReq, MsgSettingsReadResp, MsgSettingsRegister, MsgSettingsRegisterResp, MsgSettingsWrite, MsgSettingsWriteResp, MsgSolnMeta, MsgSpecan, MsgSsrCodeBiases, MsgSsrCodePhaseBiasesBounds, MsgSsrFlagHighLevel, MsgSsrFlagIonoGridPointSatLos, MsgSsrFlagIonoGridPoints, MsgSsrFlagIonoTileSatLos, MsgSsrFlagSatellites, MsgSsrFlagTropoGridPoints, MsgSsrGriddedCorrection, MsgSsrGriddedCorrectionBounds, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, MsgSsrOrbitClockBoundsDegradation, MsgSsrPhaseBiases, MsgSsrSatelliteApc, MsgSsrStecCorrection, MsgSsrTileDefinition, MsgStartup, MsgStatusJournal, MsgStatusReport, MsgStmFlashLockSector, MsgStmFlashUnlockSector, MsgStmUniqueIDResp, MsgSvAzEl, MsgTelSv, MsgThreadState, MsgTrackingIq, MsgTrackingState, MsgUARTState, MsgUserData, MsgUTCLeapSecond, MsgUTCTime, MsgUTCTimeGnss, MsgVelBody, MsgVelCog, MsgVelECEF, MsgVelECEFCov, MsgVelECEFCovGnss, MsgVelECEFGnss, MsgVelNED, MsgVelNEDCov, MsgVelNEDCovGnss, MsgVelNEDGnss, MsgWheeltick, NetworkUsage, ObservationHeader, OdoInputType, OrbitClockBound, OrbitClockBoundDegradation, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, STECSatElementIntegrity, SatelliteAPC, SolutionInputType, StatusJournalItem, SubSystemReport, SvAzEl, SvID, TelemetrySV, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel, UTCTime } from "./file"; // // const acqSvProfile = Convert.toAcqSvProfile(json); // const almanacCommonContent = Convert.toAlmanacCommonContent(json); @@ -103,6 +103,7 @@ // const msgM25FlashWriteStatus = Convert.toMsgM25FlashWriteStatus(json); // const msgMagRaw = Convert.toMsgMagRaw(json); // const msgMaskSatellite = Convert.toMsgMaskSatellite(json); +// const msgMeasurementPoint = Convert.toMsgMeasurementPoint(json); // const msgMeasurementState = Convert.toMsgMeasurementState(json); // const msgNapDeviceDnaReq = Convert.toMsgNapDeviceDnaReq(json); // const msgNapDeviceDnaResp = Convert.toMsgNapDeviceDnaResp(json); @@ -1474,6 +1475,23 @@ export interface MsgMaskSatellite { [property: string]: any; } +/** + * Tracks execution time of certain code paths in specially built products. This message + * should only be expected and processed on the direction of Swift's engineering teams. + */ +export interface MsgMeasurementPoint { + func: string; + id: number; + line: number; + max: number; + min: number; + num_executions: number; + return_addr: number; + slice_time: number; + total_time: number; + [property: string]: any; +} + /** * The tracking message returns a variable-length array of tracking channel states. It * reports status and carrier-to-noise density measurements for all tracked satellites. @@ -4035,6 +4053,14 @@ export class Convert { return JSON.stringify(uncast(value, r("MsgMaskSatellite")), null, 2); } + public static toMsgMeasurementPoint(json: string): MsgMeasurementPoint { + return cast(JSON.parse(json), r("MsgMeasurementPoint")); + } + + public static msgMeasurementPointToJson(value: MsgMeasurementPoint): string { + return JSON.stringify(uncast(value, r("MsgMeasurementPoint")), null, 2); + } + public static toMsgMeasurementState(json: string): MsgMeasurementState { return cast(JSON.parse(json), r("MsgMeasurementState")); } @@ -5734,6 +5760,17 @@ const typeMap: any = { { json: "mask", js: "mask", typ: 0 }, { json: "sid", js: "sid", typ: r("GnssSignal") }, ], "any"), + "MsgMeasurementPoint": o([ + { json: "func", js: "func", typ: "" }, + { json: "id", js: "id", typ: 0 }, + { json: "line", js: "line", typ: 0 }, + { json: "max", js: "max", typ: 0 }, + { json: "min", js: "min", typ: 0 }, + { json: "num_executions", js: "num_executions", typ: 0 }, + { json: "return_addr", js: "return_addr", typ: 0 }, + { json: "slice_time", js: "slice_time", typ: 0 }, + { json: "total_time", js: "total_time", typ: 0 }, + ], "any"), "MsgMeasurementState": o([ { json: "states", js: "states", typ: a(r("MeasurementState")) }, ], "any"),