mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-04-17 20:50:14 +00:00
Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
08d69502de | |||
683f59c063 | |||
0ef9f16f40 | |||
a5dd650510 | |||
de90b7d284 | |||
fe0ef398ec | |||
58bd8eb5b4 | |||
0a294e41b5 | |||
f71d30ca83 | |||
ef0a97ab3d | |||
e93d3bc534 | |||
31e359b314 | |||
0a3fcaeb2d | |||
77051e8956 | |||
3a9cb20c03 | |||
1b96b4f91f | |||
101b155d91 | |||
3f4c262267 | |||
88939d4396 | |||
269b7f4d9d | |||
0ce60b789f | |||
8fe0c7c6c2 | |||
4917de2b32 | |||
d81af6b607 | |||
cb6ac27ba4 | |||
1430c30ab3 | |||
cb49afeb01 | |||
9ba826963c | |||
1f7fcc139d | |||
8a496d9019 | |||
ef97eccf62 |
1440
Cargo.lock
generated
1440
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
# UI build stage
|
||||
FROM --platform=$BUILDPLATFORM alpine:3.17.0 AS ui-build
|
||||
FROM --platform=$BUILDPLATFORM alpine:3.17.3 AS ui-build
|
||||
|
||||
ENV PROJECT_PATH=/chirpstack
|
||||
|
||||
@ -15,7 +15,7 @@ RUN cd $PROJECT_PATH/ui && \
|
||||
|
||||
|
||||
# ChirpStack build stage
|
||||
FROM --platform=$BUILDPLATFORM rust:1.65.0-buster AS rust-build
|
||||
FROM --platform=$BUILDPLATFORM rust:1.68.2-buster AS rust-build
|
||||
|
||||
ENV PROJECT_PATH=/chirpstack
|
||||
RUN mkdir -p $PROJECT_PATH
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM rust:1.65.0-buster
|
||||
FROM rust:1.68.2-buster
|
||||
|
||||
ENV PROJECT_PATH=/chirpstack
|
||||
RUN mkdir -p $PROJECT_PATH
|
||||
|
694
api/csharp/Chirpstack/api/Application.cs
vendored
694
api/csharp/Chirpstack/api/Application.cs
vendored
@ -99,267 +99,268 @@ namespace Chirpstack.Api {
|
||||
"c3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiegoUTG9yYUNsb3VkSW50ZWdy",
|
||||
"YXRpb24SFgoOYXBwbGljYXRpb25faWQYASABKAkSSgoabW9kZW1fZ2VvbG9j",
|
||||
"YXRpb25fc2VydmljZXMYAiABKAsyJi5hcGkuTG9yYUNsb3VkTW9kZW1HZW9s",
|
||||
"b2NhdGlvblNlcnZpY2VzIsADCiFMb3JhQ2xvdWRNb2RlbUdlb2xvY2F0aW9u",
|
||||
"b2NhdGlvblNlcnZpY2VzItUDCiFMb3JhQ2xvdWRNb2RlbUdlb2xvY2F0aW9u",
|
||||
"U2VydmljZXMSDQoFdG9rZW4YASABKAkSFQoNbW9kZW1fZW5hYmxlZBgCIAEo",
|
||||
"CBISCgptb2RlbV9wb3J0GAMgASgNEhEKCWduc3NfcG9ydBgEIAEoDRIYChBn",
|
||||
"bnNzX3VzZV9yeF90aW1lGAUgASgIEhEKCXBhcnNlX3RsdhgGIAEoCBIeChZn",
|
||||
"ZW9sb2NhdGlvbl9idWZmZXJfdHRsGAcgASgNEiMKG2dlb2xvY2F0aW9uX21p",
|
||||
"bl9idWZmZXJfc2l6ZRgIIAEoDRIYChBnZW9sb2NhdGlvbl90ZG9hGAkgASgI",
|
||||
"EhgKEGdlb2xvY2F0aW9uX3Jzc2kYCiABKAgSGAoQZ2VvbG9jYXRpb25fZ25z",
|
||||
"cxgLIAEoCBImCh5nZW9sb2NhdGlvbl9nbnNzX3BheWxvYWRfZmllbGQYDCAB",
|
||||
"KAkSJAocZ2VvbG9jYXRpb25fZ25zc191c2VfcnhfdGltZRgNIAEoCBIYChBn",
|
||||
"ZW9sb2NhdGlvbl93aWZpGA4gASgIEiYKHmdlb2xvY2F0aW9uX3dpZmlfcGF5",
|
||||
"bG9hZF9maWVsZBgPIAEoCSJTCiFDcmVhdGVMb3JhQ2xvdWRJbnRlZ3JhdGlv",
|
||||
"blJlcXVlc3QSLgoLaW50ZWdyYXRpb24YASABKAsyGS5hcGkuTG9yYUNsb3Vk",
|
||||
"SW50ZWdyYXRpb24iOAoeR2V0TG9yYUNsb3VkSW50ZWdyYXRpb25SZXF1ZXN0",
|
||||
"EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIlEKH0dldExvcmFDbG91ZEludGVn",
|
||||
"cmF0aW9uUmVzcG9uc2USLgoLaW50ZWdyYXRpb24YASABKAsyGS5hcGkuTG9y",
|
||||
"YUNsb3VkSW50ZWdyYXRpb24iUwohVXBkYXRlTG9yYUNsb3VkSW50ZWdyYXRp",
|
||||
"b25SZXF1ZXN0Ei4KC2ludGVncmF0aW9uGAEgASgLMhkuYXBpLkxvcmFDbG91",
|
||||
"ZEludGVncmF0aW9uIjsKIURlbGV0ZUxvcmFDbG91ZEludGVncmF0aW9uUmVx",
|
||||
"dWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSKRAQoUR2NwUHViU3ViSW50",
|
||||
"ZWdyYXRpb24SFgoOYXBwbGljYXRpb25faWQYASABKAkSHwoIZW5jb2RpbmcY",
|
||||
"AiABKA4yDS5hcGkuRW5jb2RpbmcSGAoQY3JlZGVudGlhbHNfZmlsZRgDIAEo",
|
||||
"CRISCgpwcm9qZWN0X2lkGAQgASgJEhIKCnRvcGljX25hbWUYBSABKAkiUwoh",
|
||||
"Q3JlYXRlR2NwUHViU3ViSW50ZWdyYXRpb25SZXF1ZXN0Ei4KC2ludGVncmF0",
|
||||
"aW9uGAEgASgLMhkuYXBpLkdjcFB1YlN1YkludGVncmF0aW9uIjgKHkdldEdj",
|
||||
"cFB1YlN1YkludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgB",
|
||||
"IAEoCSJRCh9HZXRHY3BQdWJTdWJJbnRlZ3JhdGlvblJlc3BvbnNlEi4KC2lu",
|
||||
"dGVncmF0aW9uGAEgASgLMhkuYXBpLkdjcFB1YlN1YkludGVncmF0aW9uIlMK",
|
||||
"IVVwZGF0ZUdjcFB1YlN1YkludGVncmF0aW9uUmVxdWVzdBIuCgtpbnRlZ3Jh",
|
||||
"dGlvbhgBIAEoCzIZLmFwaS5HY3BQdWJTdWJJbnRlZ3JhdGlvbiI7CiFEZWxl",
|
||||
"dGVHY3BQdWJTdWJJbnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25f",
|
||||
"aWQYASABKAkioQEKEUF3c1Nuc0ludGVncmF0aW9uEhYKDmFwcGxpY2F0aW9u",
|
||||
"X2lkGAEgASgJEh8KCGVuY29kaW5nGAIgASgOMg0uYXBpLkVuY29kaW5nEg4K",
|
||||
"BnJlZ2lvbhgDIAEoCRIVCg1hY2Nlc3Nfa2V5X2lkGAQgASgJEhkKEXNlY3Jl",
|
||||
"dF9hY2Nlc3Nfa2V5GAUgASgJEhEKCXRvcGljX2FybhgGIAEoCSJNCh5DcmVh",
|
||||
"dGVBd3NTbnNJbnRlZ3JhdGlvblJlcXVlc3QSKwoLaW50ZWdyYXRpb24YASAB",
|
||||
"KAsyFi5hcGkuQXdzU25zSW50ZWdyYXRpb24iNQobR2V0QXdzU25zSW50ZWdy",
|
||||
"YXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIksKHEdldEF3",
|
||||
"c1Nuc0ludGVncmF0aW9uUmVzcG9uc2USKwoLaW50ZWdyYXRpb24YASABKAsy",
|
||||
"Fi5hcGkuQXdzU25zSW50ZWdyYXRpb24iTQoeVXBkYXRlQXdzU25zSW50ZWdy",
|
||||
"YXRpb25SZXF1ZXN0EisKC2ludGVncmF0aW9uGAEgASgLMhYuYXBpLkF3c1Nu",
|
||||
"c0ludGVncmF0aW9uIjgKHkRlbGV0ZUF3c1Nuc0ludGVncmF0aW9uUmVxdWVz",
|
||||
"dBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSKGAQoaQXp1cmVTZXJ2aWNlQnVz",
|
||||
"SW50ZWdyYXRpb24SFgoOYXBwbGljYXRpb25faWQYASABKAkSHwoIZW5jb2Rp",
|
||||
"bmcYAiABKA4yDS5hcGkuRW5jb2RpbmcSGQoRY29ubmVjdGlvbl9zdHJpbmcY",
|
||||
"AyABKAkSFAoMcHVibGlzaF9uYW1lGAQgASgJIl8KJ0NyZWF0ZUF6dXJlU2Vy",
|
||||
"dmljZUJ1c0ludGVncmF0aW9uUmVxdWVzdBI0CgtpbnRlZ3JhdGlvbhgBIAEo",
|
||||
"CzIfLmFwaS5BenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvbiI+CiRHZXRBenVy",
|
||||
"ZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25f",
|
||||
"aWQYASABKAkiXQolR2V0QXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXNw",
|
||||
"b25zZRI0CgtpbnRlZ3JhdGlvbhgBIAEoCzIfLmFwaS5BenVyZVNlcnZpY2VC",
|
||||
"dXNJbnRlZ3JhdGlvbiJfCidVcGRhdGVBenVyZVNlcnZpY2VCdXNJbnRlZ3Jh",
|
||||
"dGlvblJlcXVlc3QSNAoLaW50ZWdyYXRpb24YASABKAsyHy5hcGkuQXp1cmVT",
|
||||
"ZXJ2aWNlQnVzSW50ZWdyYXRpb24iQQonRGVsZXRlQXp1cmVTZXJ2aWNlQnVz",
|
||||
"SW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIk8K",
|
||||
"FlBpbG90VGhpbmdzSW50ZWdyYXRpb24SFgoOYXBwbGljYXRpb25faWQYASAB",
|
||||
"KAkSDgoGc2VydmVyGAIgASgJEg0KBXRva2VuGAMgASgJIlcKI0NyZWF0ZVBp",
|
||||
"bG90VGhpbmdzSW50ZWdyYXRpb25SZXF1ZXN0EjAKC2ludGVncmF0aW9uGAEg",
|
||||
"ASgLMhsuYXBpLlBpbG90VGhpbmdzSW50ZWdyYXRpb24iOgogR2V0UGlsb3RU",
|
||||
"aGluZ3NJbnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASAB",
|
||||
"KAkiVQohR2V0UGlsb3RUaGluZ3NJbnRlZ3JhdGlvblJlc3BvbnNlEjAKC2lu",
|
||||
"dGVncmF0aW9uGAEgASgLMhsuYXBpLlBpbG90VGhpbmdzSW50ZWdyYXRpb24i",
|
||||
"VwojVXBkYXRlUGlsb3RUaGluZ3NJbnRlZ3JhdGlvblJlcXVlc3QSMAoLaW50",
|
||||
"ZWdyYXRpb24YASABKAsyGy5hcGkuUGlsb3RUaGluZ3NJbnRlZ3JhdGlvbiI9",
|
||||
"CiNEZWxldGVQaWxvdFRoaW5nc0ludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBs",
|
||||
"aWNhdGlvbl9pZBgBIAEoCSJOChBJZnR0dEludGVncmF0aW9uEhYKDmFwcGxp",
|
||||
"Y2F0aW9uX2lkGAEgASgJEgsKA2tleRgCIAEoCRIVCg11cGxpbmtfdmFsdWVz",
|
||||
"GAMgAygJIksKHUNyZWF0ZUlmdHR0SW50ZWdyYXRpb25SZXF1ZXN0EioKC2lu",
|
||||
"dGVncmF0aW9uGAEgASgLMhUuYXBpLklmdHR0SW50ZWdyYXRpb24iNAoaR2V0",
|
||||
"SWZ0dHRJbnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASAB",
|
||||
"KAkiSQobR2V0SWZ0dHRJbnRlZ3JhdGlvblJlc3BvbnNlEioKC2ludGVncmF0",
|
||||
"aW9uGAEgASgLMhUuYXBpLklmdHR0SW50ZWdyYXRpb24iSwodVXBkYXRlSWZ0",
|
||||
"dHRJbnRlZ3JhdGlvblJlcXVlc3QSKgoLaW50ZWdyYXRpb24YASABKAsyFS5h",
|
||||
"cGkuSWZ0dHRJbnRlZ3JhdGlvbiI3Ch1EZWxldGVJZnR0dEludGVncmF0aW9u",
|
||||
"UmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJJCi9HZW5lcmF0ZU1x",
|
||||
"dHRJbnRlZ3JhdGlvbkNsaWVudENlcnRpZmljYXRlUmVxdWVzdBIWCg5hcHBs",
|
||||
"aWNhdGlvbl9pZBgBIAEoCSKWAQowR2VuZXJhdGVNcXR0SW50ZWdyYXRpb25D",
|
||||
"bGllbnRDZXJ0aWZpY2F0ZVJlc3BvbnNlEhAKCHRsc19jZXJ0GAEgASgJEg8K",
|
||||
"B3Rsc19rZXkYAiABKAkSDwoHY2FfY2VydBgDIAEoCRIuCgpleHBpcmVzX2F0",
|
||||
"GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCoiCghFbmNvZGlu",
|
||||
"ZxIICgRKU09OEAASDAoIUFJPVE9CVUYQASq/AQoPSW50ZWdyYXRpb25LaW5k",
|
||||
"EggKBEhUVFAQABINCglJTkZMVVhfREIQARIQCgxUSElOR1NfQk9BUkQQAhIO",
|
||||
"CgpNWV9ERVZJQ0VTEAMSDgoKTE9SQV9DTE9VRBAEEg8KC0dDUF9QVUJfU1VC",
|
||||
"EAUSCwoHQVdTX1NOUxAGEhUKEUFaVVJFX1NFUlZJQ0VfQlVTEAcSEAoMUElM",
|
||||
"T1RfVEhJTkdTEAgSDwoLTVFUVF9HTE9CQUwQCRIJCgVJRlRUVBAKKj8KEUlu",
|
||||
"Zmx1eERiUHJlY2lzaW9uEgYKAk5TEAASBQoBVRABEgYKAk1TEAISBQoBUxAD",
|
||||
"EgUKAU0QBBIFCgFIEAUqMQoPSW5mbHV4RGJWZXJzaW9uEg4KCklORkxVWERC",
|
||||
"XzEQABIOCgpJTkZMVVhEQl8yEAEyuDwKEkFwcGxpY2F0aW9uU2VydmljZRJl",
|
||||
"CgZDcmVhdGUSHS5hcGkuQ3JlYXRlQXBwbGljYXRpb25SZXF1ZXN0Gh4uYXBp",
|
||||
"LkNyZWF0ZUFwcGxpY2F0aW9uUmVzcG9uc2UiHILT5JMCFiIRL2FwaS9hcHBs",
|
||||
"aWNhdGlvbnM6ASoSXgoDR2V0EhouYXBpLkdldEFwcGxpY2F0aW9uUmVxdWVz",
|
||||
"dBobLmFwaS5HZXRBcHBsaWNhdGlvblJlc3BvbnNlIh6C0+STAhgSFi9hcGkv",
|
||||
"YXBwbGljYXRpb25zL3tpZH0SbgoGVXBkYXRlEh0uYXBpLlVwZGF0ZUFwcGxp",
|
||||
"Y2F0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSItgtPkkwIn",
|
||||
"GiIvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb24uaWR9OgEqEl8KBkRl",
|
||||
"bGV0ZRIdLmFwaS5EZWxldGVBcHBsaWNhdGlvblJlcXVlc3QaFi5nb29nbGUu",
|
||||
"cHJvdG9idWYuRW1wdHkiHoLT5JMCGCoWL2FwaS9hcHBsaWNhdGlvbnMve2lk",
|
||||
"fRJeCgRMaXN0EhwuYXBpLkxpc3RBcHBsaWNhdGlvbnNSZXF1ZXN0Gh0uYXBp",
|
||||
"Lkxpc3RBcHBsaWNhdGlvbnNSZXNwb25zZSIZgtPkkwITEhEvYXBpL2FwcGxp",
|
||||
"Y2F0aW9ucxKIAQoQTGlzdEludGVncmF0aW9ucxIcLmFwaS5MaXN0SW50ZWdy",
|
||||
"YXRpb25zUmVxdWVzdBodLmFwaS5MaXN0SW50ZWdyYXRpb25zUmVzcG9uc2Ui",
|
||||
"N4LT5JMCMRIvL2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9p",
|
||||
"bnRlZ3JhdGlvbnMSnwEKFUNyZWF0ZUh0dHBJbnRlZ3JhdGlvbhIhLmFwaS5D",
|
||||
"cmVhdGVIdHRwSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVm",
|
||||
"LkVtcHR5IkuC0+STAkUiQC9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlv",
|
||||
"bi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2h0dHA6ASoSkwEKEkdl",
|
||||
"dEh0dHBJbnRlZ3JhdGlvbhIeLmFwaS5HZXRIdHRwSW50ZWdyYXRpb25SZXF1",
|
||||
"ZXN0Gh8uYXBpLkdldEh0dHBJbnRlZ3JhdGlvblJlc3BvbnNlIjyC0+STAjYS",
|
||||
"NC9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRp",
|
||||
"b25zL2h0dHASnwEKFVVwZGF0ZUh0dHBJbnRlZ3JhdGlvbhIhLmFwaS5VcGRh",
|
||||
"dGVIdHRwSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVt",
|
||||
"cHR5IkuC0+STAkUaQC9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5h",
|
||||
"cHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2h0dHA6ASoSkAEKFURlbGV0",
|
||||
"ZUh0dHBJbnRlZ3JhdGlvbhIhLmFwaS5EZWxldGVIdHRwSW50ZWdyYXRpb25S",
|
||||
"ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjyC0+STAjYqNC9hcGkv",
|
||||
"YXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2h0",
|
||||
"dHASqwEKGUNyZWF0ZUluZmx1eERiSW50ZWdyYXRpb24SJS5hcGkuQ3JlYXRl",
|
||||
"SW5mbHV4RGJJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYu",
|
||||
"RW1wdHkiT4LT5JMCSSJEL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9u",
|
||||
"LmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvaW5mbHV4ZGI6ASoSowEK",
|
||||
"FkdldEluZmx1eERiSW50ZWdyYXRpb24SIi5hcGkuR2V0SW5mbHV4RGJJbnRl",
|
||||
"Z3JhdGlvblJlcXVlc3QaIy5hcGkuR2V0SW5mbHV4RGJJbnRlZ3JhdGlvblJl",
|
||||
"c3BvbnNlIkCC0+STAjoSOC9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlv",
|
||||
"bl9pZH0vaW50ZWdyYXRpb25zL2luZmx1eGRiEqsBChlVcGRhdGVJbmZsdXhE",
|
||||
"YkludGVncmF0aW9uEiUuYXBpLlVwZGF0ZUluZmx1eERiSW50ZWdyYXRpb25S",
|
||||
"ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ik+C0+STAkkaRC9hcGkv",
|
||||
"YXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50",
|
||||
"ZWdyYXRpb25zL2luZmx1eGRiOgEqEpwBChlEZWxldGVJbmZsdXhEYkludGVn",
|
||||
"cmF0aW9uEiUuYXBpLkRlbGV0ZUluZmx1eERiSW50ZWdyYXRpb25SZXF1ZXN0",
|
||||
"GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkCC0+STAjoqOC9hcGkvYXBwbGlj",
|
||||
"YXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2luZmx1eGRi",
|
||||
"ErQBChxDcmVhdGVUaGluZ3NCb2FyZEludGVncmF0aW9uEiguYXBpLkNyZWF0",
|
||||
"ZVRoaW5nc0JvYXJkSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3Rv",
|
||||
"YnVmLkVtcHR5IlKC0+STAkwiRy9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3Jh",
|
||||
"dGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL3RoaW5nc2JvYXJk",
|
||||
"OgEqEq8BChlHZXRUaGluZ3NCb2FyZEludGVncmF0aW9uEiUuYXBpLkdldFRo",
|
||||
"aW5nc0JvYXJkSW50ZWdyYXRpb25SZXF1ZXN0GiYuYXBpLkdldFRoaW5nc0Jv",
|
||||
"YXJkSW50ZWdyYXRpb25SZXNwb25zZSJDgtPkkwI9EjsvYXBpL2FwcGxpY2F0",
|
||||
"aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy90aGluZ3Nib2Fy",
|
||||
"ZBK0AQocVXBkYXRlVGhpbmdzQm9hcmRJbnRlZ3JhdGlvbhIoLmFwaS5VcGRh",
|
||||
"dGVUaGluZ3NCb2FyZEludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90",
|
||||
"b2J1Zi5FbXB0eSJSgtPkkwJMGkcvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdy",
|
||||
"YXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy90aGluZ3Nib2Fy",
|
||||
"ZDoBKhKlAQocRGVsZXRlVGhpbmdzQm9hcmRJbnRlZ3JhdGlvbhIoLmFwaS5E",
|
||||
"ZWxldGVUaGluZ3NCb2FyZEludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5w",
|
||||
"cm90b2J1Zi5FbXB0eSJDgtPkkwI9KjsvYXBpL2FwcGxpY2F0aW9ucy97YXBw",
|
||||
"bGljYXRpb25faWR9L2ludGVncmF0aW9ucy90aGluZ3Nib2FyZBKuAQoaQ3Jl",
|
||||
"YXRlTXlEZXZpY2VzSW50ZWdyYXRpb24SJi5hcGkuQ3JlYXRlTXlEZXZpY2Vz",
|
||||
"SW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlCC",
|
||||
"0+STAkoiRS9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNh",
|
||||
"dGlvbl9pZH0vaW50ZWdyYXRpb25zL215ZGV2aWNlczoBKhKnAQoXR2V0TXlE",
|
||||
"ZXZpY2VzSW50ZWdyYXRpb24SIy5hcGkuR2V0TXlEZXZpY2VzSW50ZWdyYXRp",
|
||||
"b25SZXF1ZXN0GiQuYXBpLkdldE15RGV2aWNlc0ludGVncmF0aW9uUmVzcG9u",
|
||||
"c2UiQYLT5JMCOxI5L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lk",
|
||||
"fS9pbnRlZ3JhdGlvbnMvbXlkZXZpY2VzEq4BChpVcGRhdGVNeURldmljZXNJ",
|
||||
"bnRlZ3JhdGlvbhImLmFwaS5VcGRhdGVNeURldmljZXNJbnRlZ3JhdGlvblJl",
|
||||
"cXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiUILT5JMCShpFL2FwaS9h",
|
||||
"cHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRl",
|
||||
"Z3JhdGlvbnMvbXlkZXZpY2VzOgEqEp8BChpEZWxldGVNeURldmljZXNJbnRl",
|
||||
"Z3JhdGlvbhImLmFwaS5EZWxldGVNeURldmljZXNJbnRlZ3JhdGlvblJlcXVl",
|
||||
"c3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiQYLT5JMCOyo5L2FwaS9hcHBs",
|
||||
"aWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbXlkZXZp",
|
||||
"Y2VzEq4BChpDcmVhdGVMb3JhQ2xvdWRJbnRlZ3JhdGlvbhImLmFwaS5DcmVh",
|
||||
"dGVMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9i",
|
||||
"dWYuRW1wdHkiUILT5JMCSiJFL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0",
|
||||
"aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbG9yYWNsb3VkOgEq",
|
||||
"EqcBChdHZXRMb3JhQ2xvdWRJbnRlZ3JhdGlvbhIjLmFwaS5HZXRMb3JhQ2xv",
|
||||
"dWRJbnRlZ3JhdGlvblJlcXVlc3QaJC5hcGkuR2V0TG9yYUNsb3VkSW50ZWdy",
|
||||
"YXRpb25SZXNwb25zZSJBgtPkkwI7EjkvYXBpL2FwcGxpY2F0aW9ucy97YXBw",
|
||||
"bGljYXRpb25faWR9L2ludGVncmF0aW9ucy9sb3JhY2xvdWQSrgEKGlVwZGF0",
|
||||
"ZUxvcmFDbG91ZEludGVncmF0aW9uEiYuYXBpLlVwZGF0ZUxvcmFDbG91ZElu",
|
||||
"dGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJQgtPk",
|
||||
"kwJKGkUvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRp",
|
||||
"b25faWR9L2ludGVncmF0aW9ucy9sb3JhY2xvdWQ6ASoSnwEKGkRlbGV0ZUxv",
|
||||
"cmFDbG91ZEludGVncmF0aW9uEiYuYXBpLkRlbGV0ZUxvcmFDbG91ZEludGVn",
|
||||
"cmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJBgtPkkwI7",
|
||||
"KjkvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0",
|
||||
"aW9ucy9sb3JhY2xvdWQSsAEKGkNyZWF0ZUdjcFB1YlN1YkludGVncmF0aW9u",
|
||||
"EiYuYXBpLkNyZWF0ZUdjcFB1YlN1YkludGVncmF0aW9uUmVxdWVzdBoWLmdv",
|
||||
"b2dsZS5wcm90b2J1Zi5FbXB0eSJSgtPkkwJMIkcvYXBpL2FwcGxpY2F0aW9u",
|
||||
"cy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9n",
|
||||
"Y3AtcHViLXN1YjoBKhKpAQoXR2V0R2NwUHViU3ViSW50ZWdyYXRpb24SIy5h",
|
||||
"cGkuR2V0R2NwUHViU3ViSW50ZWdyYXRpb25SZXF1ZXN0GiQuYXBpLkdldEdj",
|
||||
"cFB1YlN1YkludGVncmF0aW9uUmVzcG9uc2UiQ4LT5JMCPRI7L2FwaS9hcHBs",
|
||||
"aWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvZ2NwLXB1",
|
||||
"Yi1zdWISsAEKGlVwZGF0ZUdjcFB1YlN1YkludGVncmF0aW9uEiYuYXBpLlVw",
|
||||
"ZGF0ZUdjcFB1YlN1YkludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90",
|
||||
"b2J1Zi5FbXB0eSJSgtPkkwJMGkcvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdy",
|
||||
"YXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9nY3AtcHViLXN1",
|
||||
"YjoBKhKhAQoaRGVsZXRlR2NwUHViU3ViSW50ZWdyYXRpb24SJi5hcGkuRGVs",
|
||||
"ZXRlR2NwUHViU3ViSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3Rv",
|
||||
"YnVmLkVtcHR5IkOC0+STAj0qOy9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNh",
|
||||
"dGlvbl9pZH0vaW50ZWdyYXRpb25zL2djcC1wdWItc3ViEqYBChdDcmVhdGVB",
|
||||
"d3NTbnNJbnRlZ3JhdGlvbhIjLmFwaS5DcmVhdGVBd3NTbnNJbnRlZ3JhdGlv",
|
||||
"blJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiToLT5JMCSCJDL2Fw",
|
||||
"aS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9p",
|
||||
"bnRlZ3JhdGlvbnMvYXdzLXNuczoBKhKcAQoUR2V0QXdzU25zSW50ZWdyYXRp",
|
||||
"b24SIC5hcGkuR2V0QXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0GiEuYXBpLkdl",
|
||||
"dEF3c1Nuc0ludGVncmF0aW9uUmVzcG9uc2UiP4LT5JMCORI3L2FwaS9hcHBs",
|
||||
"aWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvYXdzLXNu",
|
||||
"cxKmAQoXVXBkYXRlQXdzU25zSW50ZWdyYXRpb24SIy5hcGkuVXBkYXRlQXdz",
|
||||
"U25zSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5",
|
||||
"Ik6C0+STAkgaQy9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBs",
|
||||
"aWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2F3cy1zbnM6ASoSlwEKF0RlbGV0",
|
||||
"ZUF3c1Nuc0ludGVncmF0aW9uEiMuYXBpLkRlbGV0ZUF3c1Nuc0ludGVncmF0",
|
||||
"aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI/gtPkkwI5Kjcv",
|
||||
"YXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9u",
|
||||
"cy9hd3Mtc25zEsIBCiBDcmVhdGVBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlv",
|
||||
"bhIsLmFwaS5DcmVhdGVBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVl",
|
||||
"c3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiWILT5JMCUiJNL2FwaS9hcHBs",
|
||||
"CBIXCg9mb3J3YXJkX2ZfcG9ydHMYECADKA0SGAoQZ25zc191c2VfcnhfdGlt",
|
||||
"ZRgFIAEoCBIhChlnbnNzX3VzZV9nYXRld2F5X2xvY2F0aW9uGBEgASgIEhEK",
|
||||
"CXBhcnNlX3RsdhgGIAEoCBIeChZnZW9sb2NhdGlvbl9idWZmZXJfdHRsGAcg",
|
||||
"ASgNEiMKG2dlb2xvY2F0aW9uX21pbl9idWZmZXJfc2l6ZRgIIAEoDRIYChBn",
|
||||
"ZW9sb2NhdGlvbl90ZG9hGAkgASgIEhgKEGdlb2xvY2F0aW9uX3Jzc2kYCiAB",
|
||||
"KAgSGAoQZ2VvbG9jYXRpb25fZ25zcxgLIAEoCBImCh5nZW9sb2NhdGlvbl9n",
|
||||
"bnNzX3BheWxvYWRfZmllbGQYDCABKAkSJAocZ2VvbG9jYXRpb25fZ25zc191",
|
||||
"c2VfcnhfdGltZRgNIAEoCBIYChBnZW9sb2NhdGlvbl93aWZpGA4gASgIEiYK",
|
||||
"Hmdlb2xvY2F0aW9uX3dpZmlfcGF5bG9hZF9maWVsZBgPIAEoCSJTCiFDcmVh",
|
||||
"dGVMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlcXVlc3QSLgoLaW50ZWdyYXRpb24Y",
|
||||
"ASABKAsyGS5hcGkuTG9yYUNsb3VkSW50ZWdyYXRpb24iOAoeR2V0TG9yYUNs",
|
||||
"b3VkSW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJ",
|
||||
"IlEKH0dldExvcmFDbG91ZEludGVncmF0aW9uUmVzcG9uc2USLgoLaW50ZWdy",
|
||||
"YXRpb24YASABKAsyGS5hcGkuTG9yYUNsb3VkSW50ZWdyYXRpb24iUwohVXBk",
|
||||
"YXRlTG9yYUNsb3VkSW50ZWdyYXRpb25SZXF1ZXN0Ei4KC2ludGVncmF0aW9u",
|
||||
"GAEgASgLMhkuYXBpLkxvcmFDbG91ZEludGVncmF0aW9uIjsKIURlbGV0ZUxv",
|
||||
"cmFDbG91ZEludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgB",
|
||||
"IAEoCSKRAQoUR2NwUHViU3ViSW50ZWdyYXRpb24SFgoOYXBwbGljYXRpb25f",
|
||||
"aWQYASABKAkSHwoIZW5jb2RpbmcYAiABKA4yDS5hcGkuRW5jb2RpbmcSGAoQ",
|
||||
"Y3JlZGVudGlhbHNfZmlsZRgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhIK",
|
||||
"CnRvcGljX25hbWUYBSABKAkiUwohQ3JlYXRlR2NwUHViU3ViSW50ZWdyYXRp",
|
||||
"b25SZXF1ZXN0Ei4KC2ludGVncmF0aW9uGAEgASgLMhkuYXBpLkdjcFB1YlN1",
|
||||
"YkludGVncmF0aW9uIjgKHkdldEdjcFB1YlN1YkludGVncmF0aW9uUmVxdWVz",
|
||||
"dBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJRCh9HZXRHY3BQdWJTdWJJbnRl",
|
||||
"Z3JhdGlvblJlc3BvbnNlEi4KC2ludGVncmF0aW9uGAEgASgLMhkuYXBpLkdj",
|
||||
"cFB1YlN1YkludGVncmF0aW9uIlMKIVVwZGF0ZUdjcFB1YlN1YkludGVncmF0",
|
||||
"aW9uUmVxdWVzdBIuCgtpbnRlZ3JhdGlvbhgBIAEoCzIZLmFwaS5HY3BQdWJT",
|
||||
"dWJJbnRlZ3JhdGlvbiI7CiFEZWxldGVHY3BQdWJTdWJJbnRlZ3JhdGlvblJl",
|
||||
"cXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkioQEKEUF3c1Nuc0ludGVn",
|
||||
"cmF0aW9uEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEh8KCGVuY29kaW5nGAIg",
|
||||
"ASgOMg0uYXBpLkVuY29kaW5nEg4KBnJlZ2lvbhgDIAEoCRIVCg1hY2Nlc3Nf",
|
||||
"a2V5X2lkGAQgASgJEhkKEXNlY3JldF9hY2Nlc3Nfa2V5GAUgASgJEhEKCXRv",
|
||||
"cGljX2FybhgGIAEoCSJNCh5DcmVhdGVBd3NTbnNJbnRlZ3JhdGlvblJlcXVl",
|
||||
"c3QSKwoLaW50ZWdyYXRpb24YASABKAsyFi5hcGkuQXdzU25zSW50ZWdyYXRp",
|
||||
"b24iNQobR2V0QXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0",
|
||||
"aW9uX2lkGAEgASgJIksKHEdldEF3c1Nuc0ludGVncmF0aW9uUmVzcG9uc2US",
|
||||
"KwoLaW50ZWdyYXRpb24YASABKAsyFi5hcGkuQXdzU25zSW50ZWdyYXRpb24i",
|
||||
"TQoeVXBkYXRlQXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0EisKC2ludGVncmF0",
|
||||
"aW9uGAEgASgLMhYuYXBpLkF3c1Nuc0ludGVncmF0aW9uIjgKHkRlbGV0ZUF3",
|
||||
"c1Nuc0ludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEo",
|
||||
"CSKGAQoaQXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24SFgoOYXBwbGljYXRp",
|
||||
"b25faWQYASABKAkSHwoIZW5jb2RpbmcYAiABKA4yDS5hcGkuRW5jb2RpbmcS",
|
||||
"GQoRY29ubmVjdGlvbl9zdHJpbmcYAyABKAkSFAoMcHVibGlzaF9uYW1lGAQg",
|
||||
"ASgJIl8KJ0NyZWF0ZUF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uUmVxdWVz",
|
||||
"dBI0CgtpbnRlZ3JhdGlvbhgBIAEoCzIfLmFwaS5BenVyZVNlcnZpY2VCdXNJ",
|
||||
"bnRlZ3JhdGlvbiI+CiRHZXRBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJl",
|
||||
"cXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiXQolR2V0QXp1cmVTZXJ2",
|
||||
"aWNlQnVzSW50ZWdyYXRpb25SZXNwb25zZRI0CgtpbnRlZ3JhdGlvbhgBIAEo",
|
||||
"CzIfLmFwaS5BenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvbiJfCidVcGRhdGVB",
|
||||
"enVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QSNAoLaW50ZWdyYXRp",
|
||||
"b24YASABKAsyHy5hcGkuQXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24iQQon",
|
||||
"RGVsZXRlQXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFw",
|
||||
"cGxpY2F0aW9uX2lkGAEgASgJIk8KFlBpbG90VGhpbmdzSW50ZWdyYXRpb24S",
|
||||
"FgoOYXBwbGljYXRpb25faWQYASABKAkSDgoGc2VydmVyGAIgASgJEg0KBXRv",
|
||||
"a2VuGAMgASgJIlcKI0NyZWF0ZVBpbG90VGhpbmdzSW50ZWdyYXRpb25SZXF1",
|
||||
"ZXN0EjAKC2ludGVncmF0aW9uGAEgASgLMhsuYXBpLlBpbG90VGhpbmdzSW50",
|
||||
"ZWdyYXRpb24iOgogR2V0UGlsb3RUaGluZ3NJbnRlZ3JhdGlvblJlcXVlc3QS",
|
||||
"FgoOYXBwbGljYXRpb25faWQYASABKAkiVQohR2V0UGlsb3RUaGluZ3NJbnRl",
|
||||
"Z3JhdGlvblJlc3BvbnNlEjAKC2ludGVncmF0aW9uGAEgASgLMhsuYXBpLlBp",
|
||||
"bG90VGhpbmdzSW50ZWdyYXRpb24iVwojVXBkYXRlUGlsb3RUaGluZ3NJbnRl",
|
||||
"Z3JhdGlvblJlcXVlc3QSMAoLaW50ZWdyYXRpb24YASABKAsyGy5hcGkuUGls",
|
||||
"b3RUaGluZ3NJbnRlZ3JhdGlvbiI9CiNEZWxldGVQaWxvdFRoaW5nc0ludGVn",
|
||||
"cmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJOChBJZnR0",
|
||||
"dEludGVncmF0aW9uEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEgsKA2tleRgC",
|
||||
"IAEoCRIVCg11cGxpbmtfdmFsdWVzGAMgAygJIksKHUNyZWF0ZUlmdHR0SW50",
|
||||
"ZWdyYXRpb25SZXF1ZXN0EioKC2ludGVncmF0aW9uGAEgASgLMhUuYXBpLklm",
|
||||
"dHR0SW50ZWdyYXRpb24iNAoaR2V0SWZ0dHRJbnRlZ3JhdGlvblJlcXVlc3QS",
|
||||
"FgoOYXBwbGljYXRpb25faWQYASABKAkiSQobR2V0SWZ0dHRJbnRlZ3JhdGlv",
|
||||
"blJlc3BvbnNlEioKC2ludGVncmF0aW9uGAEgASgLMhUuYXBpLklmdHR0SW50",
|
||||
"ZWdyYXRpb24iSwodVXBkYXRlSWZ0dHRJbnRlZ3JhdGlvblJlcXVlc3QSKgoL",
|
||||
"aW50ZWdyYXRpb24YASABKAsyFS5hcGkuSWZ0dHRJbnRlZ3JhdGlvbiI3Ch1E",
|
||||
"ZWxldGVJZnR0dEludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9p",
|
||||
"ZBgBIAEoCSJJCi9HZW5lcmF0ZU1xdHRJbnRlZ3JhdGlvbkNsaWVudENlcnRp",
|
||||
"ZmljYXRlUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSKWAQowR2Vu",
|
||||
"ZXJhdGVNcXR0SW50ZWdyYXRpb25DbGllbnRDZXJ0aWZpY2F0ZVJlc3BvbnNl",
|
||||
"EhAKCHRsc19jZXJ0GAEgASgJEg8KB3Rsc19rZXkYAiABKAkSDwoHY2FfY2Vy",
|
||||
"dBgDIAEoCRIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVm",
|
||||
"LlRpbWVzdGFtcCoiCghFbmNvZGluZxIICgRKU09OEAASDAoIUFJPVE9CVUYQ",
|
||||
"ASq/AQoPSW50ZWdyYXRpb25LaW5kEggKBEhUVFAQABINCglJTkZMVVhfREIQ",
|
||||
"ARIQCgxUSElOR1NfQk9BUkQQAhIOCgpNWV9ERVZJQ0VTEAMSDgoKTE9SQV9D",
|
||||
"TE9VRBAEEg8KC0dDUF9QVUJfU1VCEAUSCwoHQVdTX1NOUxAGEhUKEUFaVVJF",
|
||||
"X1NFUlZJQ0VfQlVTEAcSEAoMUElMT1RfVEhJTkdTEAgSDwoLTVFUVF9HTE9C",
|
||||
"QUwQCRIJCgVJRlRUVBAKKj8KEUluZmx1eERiUHJlY2lzaW9uEgYKAk5TEAAS",
|
||||
"BQoBVRABEgYKAk1TEAISBQoBUxADEgUKAU0QBBIFCgFIEAUqMQoPSW5mbHV4",
|
||||
"RGJWZXJzaW9uEg4KCklORkxVWERCXzEQABIOCgpJTkZMVVhEQl8yEAEyuDwK",
|
||||
"EkFwcGxpY2F0aW9uU2VydmljZRJlCgZDcmVhdGUSHS5hcGkuQ3JlYXRlQXBw",
|
||||
"bGljYXRpb25SZXF1ZXN0Gh4uYXBpLkNyZWF0ZUFwcGxpY2F0aW9uUmVzcG9u",
|
||||
"c2UiHILT5JMCFiIRL2FwaS9hcHBsaWNhdGlvbnM6ASoSXgoDR2V0EhouYXBp",
|
||||
"LkdldEFwcGxpY2F0aW9uUmVxdWVzdBobLmFwaS5HZXRBcHBsaWNhdGlvblJl",
|
||||
"c3BvbnNlIh6C0+STAhgSFi9hcGkvYXBwbGljYXRpb25zL3tpZH0SbgoGVXBk",
|
||||
"YXRlEh0uYXBpLlVwZGF0ZUFwcGxpY2F0aW9uUmVxdWVzdBoWLmdvb2dsZS5w",
|
||||
"cm90b2J1Zi5FbXB0eSItgtPkkwInGiIvYXBpL2FwcGxpY2F0aW9ucy97YXBw",
|
||||
"bGljYXRpb24uaWR9OgEqEl8KBkRlbGV0ZRIdLmFwaS5EZWxldGVBcHBsaWNh",
|
||||
"dGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiHoLT5JMCGCoW",
|
||||
"L2FwaS9hcHBsaWNhdGlvbnMve2lkfRJeCgRMaXN0EhwuYXBpLkxpc3RBcHBs",
|
||||
"aWNhdGlvbnNSZXF1ZXN0Gh0uYXBpLkxpc3RBcHBsaWNhdGlvbnNSZXNwb25z",
|
||||
"ZSIZgtPkkwITEhEvYXBpL2FwcGxpY2F0aW9ucxKIAQoQTGlzdEludGVncmF0",
|
||||
"aW9ucxIcLmFwaS5MaXN0SW50ZWdyYXRpb25zUmVxdWVzdBodLmFwaS5MaXN0",
|
||||
"SW50ZWdyYXRpb25zUmVzcG9uc2UiN4LT5JMCMRIvL2FwaS9hcHBsaWNhdGlv",
|
||||
"bnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMSnwEKFUNyZWF0ZUh0",
|
||||
"dHBJbnRlZ3JhdGlvbhIhLmFwaS5DcmVhdGVIdHRwSW50ZWdyYXRpb25SZXF1",
|
||||
"ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkuC0+STAkUiQC9hcGkvYXBw",
|
||||
"bGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdy",
|
||||
"YXRpb25zL2h0dHA6ASoSkwEKEkdldEh0dHBJbnRlZ3JhdGlvbhIeLmFwaS5H",
|
||||
"ZXRIdHRwSW50ZWdyYXRpb25SZXF1ZXN0Gh8uYXBpLkdldEh0dHBJbnRlZ3Jh",
|
||||
"dGlvblJlc3BvbnNlIjyC0+STAjYSNC9hcGkvYXBwbGljYXRpb25zL3thcHBs",
|
||||
"aWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2h0dHASnwEKFVVwZGF0ZUh0dHBJ",
|
||||
"bnRlZ3JhdGlvbhIhLmFwaS5VcGRhdGVIdHRwSW50ZWdyYXRpb25SZXF1ZXN0",
|
||||
"GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkuC0+STAkUaQC9hcGkvYXBwbGlj",
|
||||
"YXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRp",
|
||||
"b25zL2h0dHA6ASoSkAEKFURlbGV0ZUh0dHBJbnRlZ3JhdGlvbhIhLmFwaS5E",
|
||||
"ZWxldGVIdHRwSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVm",
|
||||
"LkVtcHR5IjyC0+STAjYqNC9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlv",
|
||||
"bl9pZH0vaW50ZWdyYXRpb25zL2h0dHASqwEKGUNyZWF0ZUluZmx1eERiSW50",
|
||||
"ZWdyYXRpb24SJS5hcGkuQ3JlYXRlSW5mbHV4RGJJbnRlZ3JhdGlvblJlcXVl",
|
||||
"c3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiT4LT5JMCSSJEL2FwaS9hcHBs",
|
||||
"aWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3Jh",
|
||||
"dGlvbnMvYXp1cmUtc2VydmljZS1idXM6ASoSwQEKHUdldEF6dXJlU2Vydmlj",
|
||||
"ZUJ1c0ludGVncmF0aW9uEikuYXBpLkdldEF6dXJlU2VydmljZUJ1c0ludGVn",
|
||||
"cmF0aW9uUmVxdWVzdBoqLmFwaS5HZXRBenVyZVNlcnZpY2VCdXNJbnRlZ3Jh",
|
||||
"dGlvblJlc3BvbnNlIkmC0+STAkMSQS9hcGkvYXBwbGljYXRpb25zL3thcHBs",
|
||||
"aWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2F6dXJlLXNlcnZpY2UtYnVzEsIB",
|
||||
"CiBVcGRhdGVBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvbhIsLmFwaS5VcGRh",
|
||||
"dGVBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUu",
|
||||
"cHJvdG9idWYuRW1wdHkiWILT5JMCUhpNL2FwaS9hcHBsaWNhdGlvbnMve2lu",
|
||||
"dGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvYXp1cmUt",
|
||||
"c2VydmljZS1idXM6ASoSswEKIERlbGV0ZUF6dXJlU2VydmljZUJ1c0ludGVn",
|
||||
"cmF0aW9uEiwuYXBpLkRlbGV0ZUF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9u",
|
||||
"UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJJgtPkkwJDKkEvYXBp",
|
||||
"L2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9h",
|
||||
"enVyZS1zZXJ2aWNlLWJ1cxK1AQocQ3JlYXRlUGlsb3RUaGluZ3NJbnRlZ3Jh",
|
||||
"dGlvbhIoLmFwaS5DcmVhdGVQaWxvdFRoaW5nc0ludGVncmF0aW9uUmVxdWVz",
|
||||
"dBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJTgtPkkwJNIkgvYXBpL2FwcGxp",
|
||||
"Y2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0",
|
||||
"aW9ucy9waWxvdC10aGluZ3M6ASoSsAEKGUdldFBpbG90VGhpbmdzSW50ZWdy",
|
||||
"YXRpb24SJS5hcGkuR2V0UGlsb3RUaGluZ3NJbnRlZ3JhdGlvblJlcXVlc3Qa",
|
||||
"Ji5hcGkuR2V0UGlsb3RUaGluZ3NJbnRlZ3JhdGlvblJlc3BvbnNlIkSC0+ST",
|
||||
"Aj4SPC9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdy",
|
||||
"YXRpb25zL3BpbG90LXRoaW5ncxK1AQocVXBkYXRlUGlsb3RUaGluZ3NJbnRl",
|
||||
"Z3JhdGlvbhIoLmFwaS5VcGRhdGVQaWxvdFRoaW5nc0ludGVncmF0aW9uUmVx",
|
||||
"dWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJTgtPkkwJNGkgvYXBpL2Fw",
|
||||
"cGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVn",
|
||||
"cmF0aW9ucy9waWxvdC10aGluZ3M6ASoSpgEKHERlbGV0ZVBpbG90VGhpbmdz",
|
||||
"SW50ZWdyYXRpb24SKC5hcGkuRGVsZXRlUGlsb3RUaGluZ3NJbnRlZ3JhdGlv",
|
||||
"blJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiRILT5JMCPio8L2Fw",
|
||||
"aS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMv",
|
||||
"cGlsb3QtdGhpbmdzEqIBChZDcmVhdGVJZnR0dEludGVncmF0aW9uEiIuYXBp",
|
||||
"LkNyZWF0ZUlmdHR0SW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3Rv",
|
||||
"YnVmLkVtcHR5IkyC0+STAkYiQS9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3Jh",
|
||||
"dGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2lmdHR0OgEqEpcB",
|
||||
"ChNHZXRJZnR0dEludGVncmF0aW9uEh8uYXBpLkdldElmdHR0SW50ZWdyYXRp",
|
||||
"b25SZXF1ZXN0GiAuYXBpLkdldElmdHR0SW50ZWdyYXRpb25SZXNwb25zZSI9",
|
||||
"gtPkkwI3EjUvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2lu",
|
||||
"dGVncmF0aW9ucy9pZnR0dBKiAQoWVXBkYXRlSWZ0dHRJbnRlZ3JhdGlvbhIi",
|
||||
"LmFwaS5VcGRhdGVJZnR0dEludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5w",
|
||||
"cm90b2J1Zi5FbXB0eSJMgtPkkwJGGkEvYXBpL2FwcGxpY2F0aW9ucy97aW50",
|
||||
"ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9pZnR0dDoB",
|
||||
"KhKTAQoWRGVsZXRlSWZ0dHRJbnRlZ3JhdGlvbhIiLmFwaS5EZWxldGVJZnR0",
|
||||
"dEludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI9",
|
||||
"gtPkkwI3KjUvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2lu",
|
||||
"dGVncmF0aW9ucy9pZnR0dBLhAQooR2VuZXJhdGVNcXR0SW50ZWdyYXRpb25D",
|
||||
"bGllbnRDZXJ0aWZpY2F0ZRI0LmFwaS5HZW5lcmF0ZU1xdHRJbnRlZ3JhdGlv",
|
||||
"bkNsaWVudENlcnRpZmljYXRlUmVxdWVzdBo1LmFwaS5HZW5lcmF0ZU1xdHRJ",
|
||||
"bnRlZ3JhdGlvbkNsaWVudENlcnRpZmljYXRlUmVzcG9uc2UiSILT5JMCQiJA",
|
||||
"L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlv",
|
||||
"bnMvbXF0dC9jZXJ0aWZpY2F0ZUJoChFpby5jaGlycHN0YWNrLmFwaUIQQXBw",
|
||||
"bGljYXRpb25Qcm90b1ABWi5naXRodWIuY29tL2NoaXJwc3RhY2svY2hpcnBz",
|
||||
"dGFjay9hcGkvZ28vdjQvYXBpqgIOQ2hpcnBzdGFjay5BcGliBnByb3RvMw=="));
|
||||
"dGlvbnMvaW5mbHV4ZGI6ASoSowEKFkdldEluZmx1eERiSW50ZWdyYXRpb24S",
|
||||
"Ii5hcGkuR2V0SW5mbHV4RGJJbnRlZ3JhdGlvblJlcXVlc3QaIy5hcGkuR2V0",
|
||||
"SW5mbHV4RGJJbnRlZ3JhdGlvblJlc3BvbnNlIkCC0+STAjoSOC9hcGkvYXBw",
|
||||
"bGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2luZmx1",
|
||||
"eGRiEqsBChlVcGRhdGVJbmZsdXhEYkludGVncmF0aW9uEiUuYXBpLlVwZGF0",
|
||||
"ZUluZmx1eERiSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVm",
|
||||
"LkVtcHR5Ik+C0+STAkkaRC9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlv",
|
||||
"bi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2luZmx1eGRiOgEqEpwB",
|
||||
"ChlEZWxldGVJbmZsdXhEYkludGVncmF0aW9uEiUuYXBpLkRlbGV0ZUluZmx1",
|
||||
"eERiSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5",
|
||||
"IkCC0+STAjoqOC9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0v",
|
||||
"aW50ZWdyYXRpb25zL2luZmx1eGRiErQBChxDcmVhdGVUaGluZ3NCb2FyZElu",
|
||||
"dGVncmF0aW9uEiguYXBpLkNyZWF0ZVRoaW5nc0JvYXJkSW50ZWdyYXRpb25S",
|
||||
"ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlKC0+STAkwiRy9hcGkv",
|
||||
"YXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50",
|
||||
"ZWdyYXRpb25zL3RoaW5nc2JvYXJkOgEqEq8BChlHZXRUaGluZ3NCb2FyZElu",
|
||||
"dGVncmF0aW9uEiUuYXBpLkdldFRoaW5nc0JvYXJkSW50ZWdyYXRpb25SZXF1",
|
||||
"ZXN0GiYuYXBpLkdldFRoaW5nc0JvYXJkSW50ZWdyYXRpb25SZXNwb25zZSJD",
|
||||
"gtPkkwI9EjsvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2lu",
|
||||
"dGVncmF0aW9ucy90aGluZ3Nib2FyZBK0AQocVXBkYXRlVGhpbmdzQm9hcmRJ",
|
||||
"bnRlZ3JhdGlvbhIoLmFwaS5VcGRhdGVUaGluZ3NCb2FyZEludGVncmF0aW9u",
|
||||
"UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJSgtPkkwJMGkcvYXBp",
|
||||
"L2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2lu",
|
||||
"dGVncmF0aW9ucy90aGluZ3Nib2FyZDoBKhKlAQocRGVsZXRlVGhpbmdzQm9h",
|
||||
"cmRJbnRlZ3JhdGlvbhIoLmFwaS5EZWxldGVUaGluZ3NCb2FyZEludGVncmF0",
|
||||
"aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJDgtPkkwI9Kjsv",
|
||||
"YXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9u",
|
||||
"cy90aGluZ3Nib2FyZBKuAQoaQ3JlYXRlTXlEZXZpY2VzSW50ZWdyYXRpb24S",
|
||||
"Ji5hcGkuQ3JlYXRlTXlEZXZpY2VzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29v",
|
||||
"Z2xlLnByb3RvYnVmLkVtcHR5IlCC0+STAkoiRS9hcGkvYXBwbGljYXRpb25z",
|
||||
"L3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL215",
|
||||
"ZGV2aWNlczoBKhKnAQoXR2V0TXlEZXZpY2VzSW50ZWdyYXRpb24SIy5hcGku",
|
||||
"R2V0TXlEZXZpY2VzSW50ZWdyYXRpb25SZXF1ZXN0GiQuYXBpLkdldE15RGV2",
|
||||
"aWNlc0ludGVncmF0aW9uUmVzcG9uc2UiQYLT5JMCOxI5L2FwaS9hcHBsaWNh",
|
||||
"dGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbXlkZXZpY2Vz",
|
||||
"Eq4BChpVcGRhdGVNeURldmljZXNJbnRlZ3JhdGlvbhImLmFwaS5VcGRhdGVN",
|
||||
"eURldmljZXNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYu",
|
||||
"RW1wdHkiUILT5JMCShpFL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9u",
|
||||
"LmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbXlkZXZpY2VzOgEqEp8B",
|
||||
"ChpEZWxldGVNeURldmljZXNJbnRlZ3JhdGlvbhImLmFwaS5EZWxldGVNeURl",
|
||||
"dmljZXNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1w",
|
||||
"dHkiQYLT5JMCOyo5L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lk",
|
||||
"fS9pbnRlZ3JhdGlvbnMvbXlkZXZpY2VzEq4BChpDcmVhdGVMb3JhQ2xvdWRJ",
|
||||
"bnRlZ3JhdGlvbhImLmFwaS5DcmVhdGVMb3JhQ2xvdWRJbnRlZ3JhdGlvblJl",
|
||||
"cXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiUILT5JMCSiJFL2FwaS9h",
|
||||
"cHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRl",
|
||||
"Z3JhdGlvbnMvbG9yYWNsb3VkOgEqEqcBChdHZXRMb3JhQ2xvdWRJbnRlZ3Jh",
|
||||
"dGlvbhIjLmFwaS5HZXRMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlcXVlc3QaJC5h",
|
||||
"cGkuR2V0TG9yYUNsb3VkSW50ZWdyYXRpb25SZXNwb25zZSJBgtPkkwI7Ejkv",
|
||||
"YXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9u",
|
||||
"cy9sb3JhY2xvdWQSrgEKGlVwZGF0ZUxvcmFDbG91ZEludGVncmF0aW9uEiYu",
|
||||
"YXBpLlVwZGF0ZUxvcmFDbG91ZEludGVncmF0aW9uUmVxdWVzdBoWLmdvb2ds",
|
||||
"ZS5wcm90b2J1Zi5FbXB0eSJQgtPkkwJKGkUvYXBpL2FwcGxpY2F0aW9ucy97",
|
||||
"aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9sb3Jh",
|
||||
"Y2xvdWQ6ASoSnwEKGkRlbGV0ZUxvcmFDbG91ZEludGVncmF0aW9uEiYuYXBp",
|
||||
"LkRlbGV0ZUxvcmFDbG91ZEludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5w",
|
||||
"cm90b2J1Zi5FbXB0eSJBgtPkkwI7KjkvYXBpL2FwcGxpY2F0aW9ucy97YXBw",
|
||||
"bGljYXRpb25faWR9L2ludGVncmF0aW9ucy9sb3JhY2xvdWQSsAEKGkNyZWF0",
|
||||
"ZUdjcFB1YlN1YkludGVncmF0aW9uEiYuYXBpLkNyZWF0ZUdjcFB1YlN1Yklu",
|
||||
"dGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJSgtPk",
|
||||
"kwJMIkcvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRp",
|
||||
"b25faWR9L2ludGVncmF0aW9ucy9nY3AtcHViLXN1YjoBKhKpAQoXR2V0R2Nw",
|
||||
"UHViU3ViSW50ZWdyYXRpb24SIy5hcGkuR2V0R2NwUHViU3ViSW50ZWdyYXRp",
|
||||
"b25SZXF1ZXN0GiQuYXBpLkdldEdjcFB1YlN1YkludGVncmF0aW9uUmVzcG9u",
|
||||
"c2UiQ4LT5JMCPRI7L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lk",
|
||||
"fS9pbnRlZ3JhdGlvbnMvZ2NwLXB1Yi1zdWISsAEKGlVwZGF0ZUdjcFB1YlN1",
|
||||
"YkludGVncmF0aW9uEiYuYXBpLlVwZGF0ZUdjcFB1YlN1YkludGVncmF0aW9u",
|
||||
"UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJSgtPkkwJMGkcvYXBp",
|
||||
"L2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2lu",
|
||||
"dGVncmF0aW9ucy9nY3AtcHViLXN1YjoBKhKhAQoaRGVsZXRlR2NwUHViU3Vi",
|
||||
"SW50ZWdyYXRpb24SJi5hcGkuRGVsZXRlR2NwUHViU3ViSW50ZWdyYXRpb25S",
|
||||
"ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkOC0+STAj0qOy9hcGkv",
|
||||
"YXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2dj",
|
||||
"cC1wdWItc3ViEqYBChdDcmVhdGVBd3NTbnNJbnRlZ3JhdGlvbhIjLmFwaS5D",
|
||||
"cmVhdGVBd3NTbnNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9i",
|
||||
"dWYuRW1wdHkiToLT5JMCSCJDL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0",
|
||||
"aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvYXdzLXNuczoBKhKc",
|
||||
"AQoUR2V0QXdzU25zSW50ZWdyYXRpb24SIC5hcGkuR2V0QXdzU25zSW50ZWdy",
|
||||
"YXRpb25SZXF1ZXN0GiEuYXBpLkdldEF3c1Nuc0ludGVncmF0aW9uUmVzcG9u",
|
||||
"c2UiP4LT5JMCORI3L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lk",
|
||||
"fS9pbnRlZ3JhdGlvbnMvYXdzLXNucxKmAQoXVXBkYXRlQXdzU25zSW50ZWdy",
|
||||
"YXRpb24SIy5hcGkuVXBkYXRlQXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0GhYu",
|
||||
"Z29vZ2xlLnByb3RvYnVmLkVtcHR5Ik6C0+STAkgaQy9hcGkvYXBwbGljYXRp",
|
||||
"b25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25z",
|
||||
"L2F3cy1zbnM6ASoSlwEKF0RlbGV0ZUF3c1Nuc0ludGVncmF0aW9uEiMuYXBp",
|
||||
"LkRlbGV0ZUF3c1Nuc0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90",
|
||||
"b2J1Zi5FbXB0eSI/gtPkkwI5KjcvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGlj",
|
||||
"YXRpb25faWR9L2ludGVncmF0aW9ucy9hd3Mtc25zEsIBCiBDcmVhdGVBenVy",
|
||||
"ZVNlcnZpY2VCdXNJbnRlZ3JhdGlvbhIsLmFwaS5DcmVhdGVBenVyZVNlcnZp",
|
||||
"Y2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1w",
|
||||
"dHkiWILT5JMCUiJNL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFw",
|
||||
"cGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvYXp1cmUtc2VydmljZS1idXM6",
|
||||
"ASoSwQEKHUdldEF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uEikuYXBpLkdl",
|
||||
"dEF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uUmVxdWVzdBoqLmFwaS5HZXRB",
|
||||
"enVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlc3BvbnNlIkmC0+STAkMSQS9h",
|
||||
"cGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25z",
|
||||
"L2F6dXJlLXNlcnZpY2UtYnVzEsIBCiBVcGRhdGVBenVyZVNlcnZpY2VCdXNJ",
|
||||
"bnRlZ3JhdGlvbhIsLmFwaS5VcGRhdGVBenVyZVNlcnZpY2VCdXNJbnRlZ3Jh",
|
||||
"dGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiWILT5JMCUhpN",
|
||||
"L2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lk",
|
||||
"fS9pbnRlZ3JhdGlvbnMvYXp1cmUtc2VydmljZS1idXM6ASoSswEKIERlbGV0",
|
||||
"ZUF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uEiwuYXBpLkRlbGV0ZUF6dXJl",
|
||||
"U2VydmljZUJ1c0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1",
|
||||
"Zi5FbXB0eSJJgtPkkwJDKkEvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRp",
|
||||
"b25faWR9L2ludGVncmF0aW9ucy9henVyZS1zZXJ2aWNlLWJ1cxK1AQocQ3Jl",
|
||||
"YXRlUGlsb3RUaGluZ3NJbnRlZ3JhdGlvbhIoLmFwaS5DcmVhdGVQaWxvdFRo",
|
||||
"aW5nc0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0",
|
||||
"eSJTgtPkkwJNIkgvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBw",
|
||||
"bGljYXRpb25faWR9L2ludGVncmF0aW9ucy9waWxvdC10aGluZ3M6ASoSsAEK",
|
||||
"GUdldFBpbG90VGhpbmdzSW50ZWdyYXRpb24SJS5hcGkuR2V0UGlsb3RUaGlu",
|
||||
"Z3NJbnRlZ3JhdGlvblJlcXVlc3QaJi5hcGkuR2V0UGlsb3RUaGluZ3NJbnRl",
|
||||
"Z3JhdGlvblJlc3BvbnNlIkSC0+STAj4SPC9hcGkvYXBwbGljYXRpb25zL3th",
|
||||
"cHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL3BpbG90LXRoaW5ncxK1AQoc",
|
||||
"VXBkYXRlUGlsb3RUaGluZ3NJbnRlZ3JhdGlvbhIoLmFwaS5VcGRhdGVQaWxv",
|
||||
"dFRoaW5nc0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5F",
|
||||
"bXB0eSJTgtPkkwJNGkgvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24u",
|
||||
"YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9waWxvdC10aGluZ3M6ASoS",
|
||||
"pgEKHERlbGV0ZVBpbG90VGhpbmdzSW50ZWdyYXRpb24SKC5hcGkuRGVsZXRl",
|
||||
"UGlsb3RUaGluZ3NJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9i",
|
||||
"dWYuRW1wdHkiRILT5JMCPio8L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0",
|
||||
"aW9uX2lkfS9pbnRlZ3JhdGlvbnMvcGlsb3QtdGhpbmdzEqIBChZDcmVhdGVJ",
|
||||
"ZnR0dEludGVncmF0aW9uEiIuYXBpLkNyZWF0ZUlmdHR0SW50ZWdyYXRpb25S",
|
||||
"ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkyC0+STAkYiQS9hcGkv",
|
||||
"YXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50",
|
||||
"ZWdyYXRpb25zL2lmdHR0OgEqEpcBChNHZXRJZnR0dEludGVncmF0aW9uEh8u",
|
||||
"YXBpLkdldElmdHR0SW50ZWdyYXRpb25SZXF1ZXN0GiAuYXBpLkdldElmdHR0",
|
||||
"SW50ZWdyYXRpb25SZXNwb25zZSI9gtPkkwI3EjUvYXBpL2FwcGxpY2F0aW9u",
|
||||
"cy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9pZnR0dBKiAQoWVXBk",
|
||||
"YXRlSWZ0dHRJbnRlZ3JhdGlvbhIiLmFwaS5VcGRhdGVJZnR0dEludGVncmF0",
|
||||
"aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJMgtPkkwJGGkEv",
|
||||
"YXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9",
|
||||
"L2ludGVncmF0aW9ucy9pZnR0dDoBKhKTAQoWRGVsZXRlSWZ0dHRJbnRlZ3Jh",
|
||||
"dGlvbhIiLmFwaS5EZWxldGVJZnR0dEludGVncmF0aW9uUmVxdWVzdBoWLmdv",
|
||||
"b2dsZS5wcm90b2J1Zi5FbXB0eSI9gtPkkwI3KjUvYXBpL2FwcGxpY2F0aW9u",
|
||||
"cy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9pZnR0dBLhAQooR2Vu",
|
||||
"ZXJhdGVNcXR0SW50ZWdyYXRpb25DbGllbnRDZXJ0aWZpY2F0ZRI0LmFwaS5H",
|
||||
"ZW5lcmF0ZU1xdHRJbnRlZ3JhdGlvbkNsaWVudENlcnRpZmljYXRlUmVxdWVz",
|
||||
"dBo1LmFwaS5HZW5lcmF0ZU1xdHRJbnRlZ3JhdGlvbkNsaWVudENlcnRpZmlj",
|
||||
"YXRlUmVzcG9uc2UiSILT5JMCQiJAL2FwaS9hcHBsaWNhdGlvbnMve2FwcGxp",
|
||||
"Y2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbXF0dC9jZXJ0aWZpY2F0ZUJoChFp",
|
||||
"by5jaGlycHN0YWNrLmFwaUIQQXBwbGljYXRpb25Qcm90b1ABWi5naXRodWIu",
|
||||
"Y29tL2NoaXJwc3RhY2svY2hpcnBzdGFjay9hcGkvZ28vdjQvYXBpqgIOQ2hp",
|
||||
"cnBzdGFjay5BcGliBnByb3RvMw=="));
|
||||
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
|
||||
new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, },
|
||||
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Chirpstack.Api.Encoding), typeof(global::Chirpstack.Api.IntegrationKind), typeof(global::Chirpstack.Api.InfluxDbPrecision), typeof(global::Chirpstack.Api.InfluxDbVersion), }, null, new pbr::GeneratedClrTypeInfo[] {
|
||||
@ -401,7 +402,7 @@ namespace Chirpstack.Api {
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.UpdateMyDevicesIntegrationRequest), global::Chirpstack.Api.UpdateMyDevicesIntegrationRequest.Parser, new[]{ "Integration" }, null, null, null, null),
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.DeleteMyDevicesIntegrationRequest), global::Chirpstack.Api.DeleteMyDevicesIntegrationRequest.Parser, new[]{ "ApplicationId" }, null, null, null, null),
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.LoraCloudIntegration), global::Chirpstack.Api.LoraCloudIntegration.Parser, new[]{ "ApplicationId", "ModemGeolocationServices" }, null, null, null, null),
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.LoraCloudModemGeolocationServices), global::Chirpstack.Api.LoraCloudModemGeolocationServices.Parser, new[]{ "Token", "ModemEnabled", "ModemPort", "GnssPort", "GnssUseRxTime", "ParseTlv", "GeolocationBufferTtl", "GeolocationMinBufferSize", "GeolocationTdoa", "GeolocationRssi", "GeolocationGnss", "GeolocationGnssPayloadField", "GeolocationGnssUseRxTime", "GeolocationWifi", "GeolocationWifiPayloadField" }, null, null, null, null),
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.LoraCloudModemGeolocationServices), global::Chirpstack.Api.LoraCloudModemGeolocationServices.Parser, new[]{ "Token", "ModemEnabled", "ForwardFPorts", "GnssUseRxTime", "GnssUseGatewayLocation", "ParseTlv", "GeolocationBufferTtl", "GeolocationMinBufferSize", "GeolocationTdoa", "GeolocationRssi", "GeolocationGnss", "GeolocationGnssPayloadField", "GeolocationGnssUseRxTime", "GeolocationWifi", "GeolocationWifiPayloadField" }, null, null, null, null),
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.CreateLoraCloudIntegrationRequest), global::Chirpstack.Api.CreateLoraCloudIntegrationRequest.Parser, new[]{ "Integration" }, null, null, null, null),
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.GetLoraCloudIntegrationRequest), global::Chirpstack.Api.GetLoraCloudIntegrationRequest.Parser, new[]{ "ApplicationId" }, null, null, null, null),
|
||||
new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.GetLoraCloudIntegrationResponse), global::Chirpstack.Api.GetLoraCloudIntegrationResponse.Parser, new[]{ "Integration" }, null, null, null, null),
|
||||
@ -3661,7 +3662,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -4163,7 +4164,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -4757,7 +4758,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -4959,7 +4960,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -5742,7 +5743,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -6336,7 +6337,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -6529,7 +6530,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -6961,7 +6962,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -7555,7 +7556,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -7748,7 +7749,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -8180,7 +8181,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -8774,7 +8775,7 @@ namespace Chirpstack.Api {
|
||||
public const int ApplicationIdFieldNumber = 1;
|
||||
private string applicationId_ = "";
|
||||
/// <summary>
|
||||
/// Application ID (UUIO).
|
||||
/// Application ID (UUID).
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
@ -9195,9 +9196,9 @@ namespace Chirpstack.Api {
|
||||
public LoraCloudModemGeolocationServices(LoraCloudModemGeolocationServices other) : this() {
|
||||
token_ = other.token_;
|
||||
modemEnabled_ = other.modemEnabled_;
|
||||
modemPort_ = other.modemPort_;
|
||||
gnssPort_ = other.gnssPort_;
|
||||
forwardFPorts_ = other.forwardFPorts_.Clone();
|
||||
gnssUseRxTime_ = other.gnssUseRxTime_;
|
||||
gnssUseGatewayLocation_ = other.gnssUseGatewayLocation_;
|
||||
parseTlv_ = other.parseTlv_;
|
||||
geolocationBufferTtl_ = other.geolocationBufferTtl_;
|
||||
geolocationMinBufferSize_ = other.geolocationMinBufferSize_;
|
||||
@ -9247,38 +9248,19 @@ namespace Chirpstack.Api {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Field number for the "modem_port" field.</summary>
|
||||
public const int ModemPortFieldNumber = 3;
|
||||
private uint modemPort_;
|
||||
/// <summary>Field number for the "forward_f_ports" field.</summary>
|
||||
public const int ForwardFPortsFieldNumber = 16;
|
||||
private static readonly pb::FieldCodec<uint> _repeated_forwardFPorts_codec
|
||||
= pb::FieldCodec.ForUInt32(130);
|
||||
private readonly pbc::RepeatedField<uint> forwardFPorts_ = new pbc::RepeatedField<uint>();
|
||||
/// <summary>
|
||||
/// Modem port (fPort).
|
||||
/// ChirpStack will only forward the FrmPayload to the MGS if the port
|
||||
/// is equal to the configured value.
|
||||
/// Forward FPorts.
|
||||
/// Forward uplink messages matching the given FPorts to the MGS.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
public uint ModemPort {
|
||||
get { return modemPort_; }
|
||||
set {
|
||||
modemPort_ = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Field number for the "gnss_port" field.</summary>
|
||||
public const int GnssPortFieldNumber = 4;
|
||||
private uint gnssPort_;
|
||||
/// <summary>
|
||||
/// GNSS port (fPort).
|
||||
/// ChirpStack will forward the FrmPayload to MGS as GNSS payload if the
|
||||
/// port is equal to the configured value.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
public uint GnssPort {
|
||||
get { return gnssPort_; }
|
||||
set {
|
||||
gnssPort_ = value;
|
||||
}
|
||||
public pbc::RepeatedField<uint> ForwardFPorts {
|
||||
get { return forwardFPorts_; }
|
||||
}
|
||||
|
||||
/// <summary>Field number for the "gnss_use_rx_time" field.</summary>
|
||||
@ -9298,6 +9280,26 @@ namespace Chirpstack.Api {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Field number for the "gnss_use_gateway_location" field.</summary>
|
||||
public const int GnssUseGatewayLocationFieldNumber = 17;
|
||||
private bool gnssUseGatewayLocation_;
|
||||
/// <summary>
|
||||
/// Use gateway location for GNSS resolving.
|
||||
/// In the case this is set to true, ChirpStack will provide the location of
|
||||
/// one of the gateways to the MGS resolver to aid the resolving process.
|
||||
/// Disable this in case the gateway location is not accurate / incorrectly
|
||||
/// configured as an incorrect location will cause the resolver to return an
|
||||
/// error.
|
||||
/// </summary>
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
|
||||
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
|
||||
public bool GnssUseGatewayLocation {
|
||||
get { return gnssUseGatewayLocation_; }
|
||||
set {
|
||||
gnssUseGatewayLocation_ = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Field number for the "parse_tlv" field.</summary>
|
||||
public const int ParseTlvFieldNumber = 6;
|
||||
private bool parseTlv_;
|
||||
@ -9481,9 +9483,9 @@ namespace Chirpstack.Api {
|
||||
}
|
||||
if (Token != other.Token) return false;
|
||||
if (ModemEnabled != other.ModemEnabled) return false;
|
||||
if (ModemPort != other.ModemPort) return false;
|
||||
if (GnssPort != other.GnssPort) return false;
|
||||
if(!forwardFPorts_.Equals(other.forwardFPorts_)) return false;
|
||||
if (GnssUseRxTime != other.GnssUseRxTime) return false;
|
||||
if (GnssUseGatewayLocation != other.GnssUseGatewayLocation) return false;
|
||||
if (ParseTlv != other.ParseTlv) return false;
|
||||
if (GeolocationBufferTtl != other.GeolocationBufferTtl) return false;
|
||||
if (GeolocationMinBufferSize != other.GeolocationMinBufferSize) return false;
|
||||
@ -9503,9 +9505,9 @@ namespace Chirpstack.Api {
|
||||
int hash = 1;
|
||||
if (Token.Length != 0) hash ^= Token.GetHashCode();
|
||||
if (ModemEnabled != false) hash ^= ModemEnabled.GetHashCode();
|
||||
if (ModemPort != 0) hash ^= ModemPort.GetHashCode();
|
||||
if (GnssPort != 0) hash ^= GnssPort.GetHashCode();
|
||||
hash ^= forwardFPorts_.GetHashCode();
|
||||
if (GnssUseRxTime != false) hash ^= GnssUseRxTime.GetHashCode();
|
||||
if (GnssUseGatewayLocation != false) hash ^= GnssUseGatewayLocation.GetHashCode();
|
||||
if (ParseTlv != false) hash ^= ParseTlv.GetHashCode();
|
||||
if (GeolocationBufferTtl != 0) hash ^= GeolocationBufferTtl.GetHashCode();
|
||||
if (GeolocationMinBufferSize != 0) hash ^= GeolocationMinBufferSize.GetHashCode();
|
||||
@ -9542,14 +9544,6 @@ namespace Chirpstack.Api {
|
||||
output.WriteRawTag(16);
|
||||
output.WriteBool(ModemEnabled);
|
||||
}
|
||||
if (ModemPort != 0) {
|
||||
output.WriteRawTag(24);
|
||||
output.WriteUInt32(ModemPort);
|
||||
}
|
||||
if (GnssPort != 0) {
|
||||
output.WriteRawTag(32);
|
||||
output.WriteUInt32(GnssPort);
|
||||
}
|
||||
if (GnssUseRxTime != false) {
|
||||
output.WriteRawTag(40);
|
||||
output.WriteBool(GnssUseRxTime);
|
||||
@ -9594,6 +9588,11 @@ namespace Chirpstack.Api {
|
||||
output.WriteRawTag(122);
|
||||
output.WriteString(GeolocationWifiPayloadField);
|
||||
}
|
||||
forwardFPorts_.WriteTo(output, _repeated_forwardFPorts_codec);
|
||||
if (GnssUseGatewayLocation != false) {
|
||||
output.WriteRawTag(136, 1);
|
||||
output.WriteBool(GnssUseGatewayLocation);
|
||||
}
|
||||
if (_unknownFields != null) {
|
||||
_unknownFields.WriteTo(output);
|
||||
}
|
||||
@ -9612,14 +9611,6 @@ namespace Chirpstack.Api {
|
||||
output.WriteRawTag(16);
|
||||
output.WriteBool(ModemEnabled);
|
||||
}
|
||||
if (ModemPort != 0) {
|
||||
output.WriteRawTag(24);
|
||||
output.WriteUInt32(ModemPort);
|
||||
}
|
||||
if (GnssPort != 0) {
|
||||
output.WriteRawTag(32);
|
||||
output.WriteUInt32(GnssPort);
|
||||
}
|
||||
if (GnssUseRxTime != false) {
|
||||
output.WriteRawTag(40);
|
||||
output.WriteBool(GnssUseRxTime);
|
||||
@ -9664,6 +9655,11 @@ namespace Chirpstack.Api {
|
||||
output.WriteRawTag(122);
|
||||
output.WriteString(GeolocationWifiPayloadField);
|
||||
}
|
||||
forwardFPorts_.WriteTo(ref output, _repeated_forwardFPorts_codec);
|
||||
if (GnssUseGatewayLocation != false) {
|
||||
output.WriteRawTag(136, 1);
|
||||
output.WriteBool(GnssUseGatewayLocation);
|
||||
}
|
||||
if (_unknownFields != null) {
|
||||
_unknownFields.WriteTo(ref output);
|
||||
}
|
||||
@ -9680,15 +9676,13 @@ namespace Chirpstack.Api {
|
||||
if (ModemEnabled != false) {
|
||||
size += 1 + 1;
|
||||
}
|
||||
if (ModemPort != 0) {
|
||||
size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ModemPort);
|
||||
}
|
||||
if (GnssPort != 0) {
|
||||
size += 1 + pb::CodedOutputStream.ComputeUInt32Size(GnssPort);
|
||||
}
|
||||
size += forwardFPorts_.CalculateSize(_repeated_forwardFPorts_codec);
|
||||
if (GnssUseRxTime != false) {
|
||||
size += 1 + 1;
|
||||
}
|
||||
if (GnssUseGatewayLocation != false) {
|
||||
size += 2 + 1;
|
||||
}
|
||||
if (ParseTlv != false) {
|
||||
size += 1 + 1;
|
||||
}
|
||||
@ -9737,15 +9731,13 @@ namespace Chirpstack.Api {
|
||||
if (other.ModemEnabled != false) {
|
||||
ModemEnabled = other.ModemEnabled;
|
||||
}
|
||||
if (other.ModemPort != 0) {
|
||||
ModemPort = other.ModemPort;
|
||||
}
|
||||
if (other.GnssPort != 0) {
|
||||
GnssPort = other.GnssPort;
|
||||
}
|
||||
forwardFPorts_.Add(other.forwardFPorts_);
|
||||
if (other.GnssUseRxTime != false) {
|
||||
GnssUseRxTime = other.GnssUseRxTime;
|
||||
}
|
||||
if (other.GnssUseGatewayLocation != false) {
|
||||
GnssUseGatewayLocation = other.GnssUseGatewayLocation;
|
||||
}
|
||||
if (other.ParseTlv != false) {
|
||||
ParseTlv = other.ParseTlv;
|
||||
}
|
||||
@ -9799,14 +9791,6 @@ namespace Chirpstack.Api {
|
||||
ModemEnabled = input.ReadBool();
|
||||
break;
|
||||
}
|
||||
case 24: {
|
||||
ModemPort = input.ReadUInt32();
|
||||
break;
|
||||
}
|
||||
case 32: {
|
||||
GnssPort = input.ReadUInt32();
|
||||
break;
|
||||
}
|
||||
case 40: {
|
||||
GnssUseRxTime = input.ReadBool();
|
||||
break;
|
||||
@ -9851,6 +9835,15 @@ namespace Chirpstack.Api {
|
||||
GeolocationWifiPayloadField = input.ReadString();
|
||||
break;
|
||||
}
|
||||
case 130:
|
||||
case 128: {
|
||||
forwardFPorts_.AddEntriesFrom(input, _repeated_forwardFPorts_codec);
|
||||
break;
|
||||
}
|
||||
case 136: {
|
||||
GnssUseGatewayLocation = input.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -9874,14 +9867,6 @@ namespace Chirpstack.Api {
|
||||
ModemEnabled = input.ReadBool();
|
||||
break;
|
||||
}
|
||||
case 24: {
|
||||
ModemPort = input.ReadUInt32();
|
||||
break;
|
||||
}
|
||||
case 32: {
|
||||
GnssPort = input.ReadUInt32();
|
||||
break;
|
||||
}
|
||||
case 40: {
|
||||
GnssUseRxTime = input.ReadBool();
|
||||
break;
|
||||
@ -9926,6 +9911,15 @@ namespace Chirpstack.Api {
|
||||
GeolocationWifiPayloadField = input.ReadString();
|
||||
break;
|
||||
}
|
||||
case 130:
|
||||
case 128: {
|
||||
forwardFPorts_.AddEntriesFrom(ref input, _repeated_forwardFPorts_codec);
|
||||
break;
|
||||
}
|
||||
case 136: {
|
||||
GnssUseGatewayLocation = input.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1518
api/go/api/application.pb.go
vendored
1518
api/go/api/application.pb.go
vendored
File diff suppressed because it is too large
Load Diff
16
api/grpc-web/api/application_pb.d.ts
vendored
16
api/grpc-web/api/application_pb.d.ts
vendored
@ -866,15 +866,17 @@ export class LoraCloudModemGeolocationServices extends jspb.Message {
|
||||
getModemEnabled(): boolean;
|
||||
setModemEnabled(value: boolean): LoraCloudModemGeolocationServices;
|
||||
|
||||
getModemPort(): number;
|
||||
setModemPort(value: number): LoraCloudModemGeolocationServices;
|
||||
|
||||
getGnssPort(): number;
|
||||
setGnssPort(value: number): LoraCloudModemGeolocationServices;
|
||||
getForwardFPortsList(): Array<number>;
|
||||
setForwardFPortsList(value: Array<number>): LoraCloudModemGeolocationServices;
|
||||
clearForwardFPortsList(): LoraCloudModemGeolocationServices;
|
||||
addForwardFPorts(value: number, index?: number): LoraCloudModemGeolocationServices;
|
||||
|
||||
getGnssUseRxTime(): boolean;
|
||||
setGnssUseRxTime(value: boolean): LoraCloudModemGeolocationServices;
|
||||
|
||||
getGnssUseGatewayLocation(): boolean;
|
||||
setGnssUseGatewayLocation(value: boolean): LoraCloudModemGeolocationServices;
|
||||
|
||||
getParseTlv(): boolean;
|
||||
setParseTlv(value: boolean): LoraCloudModemGeolocationServices;
|
||||
|
||||
@ -917,9 +919,9 @@ export namespace LoraCloudModemGeolocationServices {
|
||||
export type AsObject = {
|
||||
token: string,
|
||||
modemEnabled: boolean,
|
||||
modemPort: number,
|
||||
gnssPort: number,
|
||||
forwardFPortsList: Array<number>,
|
||||
gnssUseRxTime: boolean,
|
||||
gnssUseGatewayLocation: boolean,
|
||||
parseTlv: boolean,
|
||||
geolocationBufferTtl: number,
|
||||
geolocationMinBufferSize: number,
|
||||
|
104
api/grpc-web/api/application_pb.js
vendored
104
api/grpc-web/api/application_pb.js
vendored
@ -907,7 +907,7 @@ if (goog.DEBUG && !COMPILED) {
|
||||
* @constructor
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, proto.api.LoraCloudModemGeolocationServices.repeatedFields_, null);
|
||||
};
|
||||
goog.inherits(proto.api.LoraCloudModemGeolocationServices, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
@ -8074,6 +8074,13 @@ proto.api.LoraCloudIntegration.prototype.hasModemGeolocationServices = function(
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* List of repeated fields within this message type.
|
||||
* @private {!Array<number>}
|
||||
* @const
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.repeatedFields_ = [16];
|
||||
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
@ -8107,9 +8114,9 @@ proto.api.LoraCloudModemGeolocationServices.toObject = function(includeInstance,
|
||||
var f, obj = {
|
||||
token: jspb.Message.getFieldWithDefault(msg, 1, ""),
|
||||
modemEnabled: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),
|
||||
modemPort: jspb.Message.getFieldWithDefault(msg, 3, 0),
|
||||
gnssPort: jspb.Message.getFieldWithDefault(msg, 4, 0),
|
||||
forwardFPortsList: (f = jspb.Message.getRepeatedField(msg, 16)) == null ? undefined : f,
|
||||
gnssUseRxTime: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),
|
||||
gnssUseGatewayLocation: jspb.Message.getBooleanFieldWithDefault(msg, 17, false),
|
||||
parseTlv: jspb.Message.getBooleanFieldWithDefault(msg, 6, false),
|
||||
geolocationBufferTtl: jspb.Message.getFieldWithDefault(msg, 7, 0),
|
||||
geolocationMinBufferSize: jspb.Message.getFieldWithDefault(msg, 8, 0),
|
||||
@ -8164,18 +8171,18 @@ proto.api.LoraCloudModemGeolocationServices.deserializeBinaryFromReader = functi
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setModemEnabled(value);
|
||||
break;
|
||||
case 3:
|
||||
var value = /** @type {number} */ (reader.readUint32());
|
||||
msg.setModemPort(value);
|
||||
break;
|
||||
case 4:
|
||||
var value = /** @type {number} */ (reader.readUint32());
|
||||
msg.setGnssPort(value);
|
||||
case 16:
|
||||
var value = /** @type {!Array<number>} */ (reader.readPackedUint32());
|
||||
msg.setForwardFPortsList(value);
|
||||
break;
|
||||
case 5:
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setGnssUseRxTime(value);
|
||||
break;
|
||||
case 17:
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setGnssUseGatewayLocation(value);
|
||||
break;
|
||||
case 6:
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setParseTlv(value);
|
||||
@ -8259,17 +8266,10 @@ proto.api.LoraCloudModemGeolocationServices.serializeBinaryToWriter = function(m
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getModemPort();
|
||||
if (f !== 0) {
|
||||
writer.writeUint32(
|
||||
3,
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getGnssPort();
|
||||
if (f !== 0) {
|
||||
writer.writeUint32(
|
||||
4,
|
||||
f = message.getForwardFPortsList();
|
||||
if (f.length > 0) {
|
||||
writer.writePackedUint32(
|
||||
16,
|
||||
f
|
||||
);
|
||||
}
|
||||
@ -8280,6 +8280,13 @@ proto.api.LoraCloudModemGeolocationServices.serializeBinaryToWriter = function(m
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getGnssUseGatewayLocation();
|
||||
if (f) {
|
||||
writer.writeBool(
|
||||
17,
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getParseTlv();
|
||||
if (f) {
|
||||
writer.writeBool(
|
||||
@ -8390,38 +8397,39 @@ proto.api.LoraCloudModemGeolocationServices.prototype.setModemEnabled = function
|
||||
|
||||
|
||||
/**
|
||||
* optional uint32 modem_port = 3;
|
||||
* @return {number}
|
||||
* repeated uint32 forward_f_ports = 16;
|
||||
* @return {!Array<number>}
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getModemPort = function() {
|
||||
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getForwardFPortsList = function() {
|
||||
return /** @type {!Array<number>} */ (jspb.Message.getRepeatedField(this, 16));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {!Array<number>} value
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setForwardFPortsList = function(value) {
|
||||
return jspb.Message.setField(this, 16, value || []);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} value
|
||||
* @param {number=} opt_index
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setModemPort = function(value) {
|
||||
return jspb.Message.setProto3IntField(this, 3, value);
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.addForwardFPorts = function(value, opt_index) {
|
||||
return jspb.Message.addToRepeatedField(this, 16, value, opt_index);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional uint32 gnss_port = 4;
|
||||
* @return {number}
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getGnssPort = function() {
|
||||
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} value
|
||||
* Clears the list making it empty but non-null.
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setGnssPort = function(value) {
|
||||
return jspb.Message.setProto3IntField(this, 4, value);
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.clearForwardFPortsList = function() {
|
||||
return this.setForwardFPortsList([]);
|
||||
};
|
||||
|
||||
|
||||
@ -8443,6 +8451,24 @@ proto.api.LoraCloudModemGeolocationServices.prototype.setGnssUseRxTime = functio
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional bool gnss_use_gateway_location = 17;
|
||||
* @return {boolean}
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getGnssUseGatewayLocation = function() {
|
||||
return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 17, false));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {boolean} value
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setGnssUseGatewayLocation = function(value) {
|
||||
return jspb.Message.setProto3BooleanField(this, 17, value);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional bool parse_tlv = 6;
|
||||
* @return {boolean}
|
||||
|
2
api/grpc-web/package.json
vendored
2
api/grpc-web/package.json
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@chirpstack/chirpstack-api-grpc-web",
|
||||
"version": "4.3.0",
|
||||
"version": "4.3.2",
|
||||
"description": "Chirpstack gRPC-web API",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
2
api/java/build.gradle.kts
vendored
2
api/java/build.gradle.kts
vendored
@ -8,7 +8,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "io.chirpstack"
|
||||
version = "4.3.0"
|
||||
version = "4.3.2"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
16
api/js/api/application_pb.d.ts
vendored
16
api/js/api/application_pb.d.ts
vendored
@ -942,15 +942,17 @@ export class LoraCloudModemGeolocationServices extends jspb.Message {
|
||||
getModemEnabled(): boolean;
|
||||
setModemEnabled(value: boolean): void;
|
||||
|
||||
getModemPort(): number;
|
||||
setModemPort(value: number): void;
|
||||
|
||||
getGnssPort(): number;
|
||||
setGnssPort(value: number): void;
|
||||
clearForwardFPortsList(): void;
|
||||
getForwardFPortsList(): Array<number>;
|
||||
setForwardFPortsList(value: Array<number>): void;
|
||||
addForwardFPorts(value: number, index?: number): number;
|
||||
|
||||
getGnssUseRxTime(): boolean;
|
||||
setGnssUseRxTime(value: boolean): void;
|
||||
|
||||
getGnssUseGatewayLocation(): boolean;
|
||||
setGnssUseGatewayLocation(value: boolean): void;
|
||||
|
||||
getParseTlv(): boolean;
|
||||
setParseTlv(value: boolean): void;
|
||||
|
||||
@ -995,9 +997,9 @@ export namespace LoraCloudModemGeolocationServices {
|
||||
export type AsObject = {
|
||||
token: string,
|
||||
modemEnabled: boolean,
|
||||
modemPort: number,
|
||||
gnssPort: number,
|
||||
forwardFPortsList: Array<number>,
|
||||
gnssUseRxTime: boolean,
|
||||
gnssUseGatewayLocation: boolean,
|
||||
parseTlv: boolean,
|
||||
geolocationBufferTtl: number,
|
||||
geolocationMinBufferSize: number,
|
||||
|
104
api/js/api/application_pb.js
vendored
104
api/js/api/application_pb.js
vendored
@ -907,7 +907,7 @@ if (goog.DEBUG && !COMPILED) {
|
||||
* @constructor
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, proto.api.LoraCloudModemGeolocationServices.repeatedFields_, null);
|
||||
};
|
||||
goog.inherits(proto.api.LoraCloudModemGeolocationServices, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
@ -8074,6 +8074,13 @@ proto.api.LoraCloudIntegration.prototype.hasModemGeolocationServices = function(
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* List of repeated fields within this message type.
|
||||
* @private {!Array<number>}
|
||||
* @const
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.repeatedFields_ = [16];
|
||||
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
@ -8107,9 +8114,9 @@ proto.api.LoraCloudModemGeolocationServices.toObject = function(includeInstance,
|
||||
var f, obj = {
|
||||
token: jspb.Message.getFieldWithDefault(msg, 1, ""),
|
||||
modemEnabled: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),
|
||||
modemPort: jspb.Message.getFieldWithDefault(msg, 3, 0),
|
||||
gnssPort: jspb.Message.getFieldWithDefault(msg, 4, 0),
|
||||
forwardFPortsList: (f = jspb.Message.getRepeatedField(msg, 16)) == null ? undefined : f,
|
||||
gnssUseRxTime: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),
|
||||
gnssUseGatewayLocation: jspb.Message.getBooleanFieldWithDefault(msg, 17, false),
|
||||
parseTlv: jspb.Message.getBooleanFieldWithDefault(msg, 6, false),
|
||||
geolocationBufferTtl: jspb.Message.getFieldWithDefault(msg, 7, 0),
|
||||
geolocationMinBufferSize: jspb.Message.getFieldWithDefault(msg, 8, 0),
|
||||
@ -8164,18 +8171,18 @@ proto.api.LoraCloudModemGeolocationServices.deserializeBinaryFromReader = functi
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setModemEnabled(value);
|
||||
break;
|
||||
case 3:
|
||||
var value = /** @type {number} */ (reader.readUint32());
|
||||
msg.setModemPort(value);
|
||||
break;
|
||||
case 4:
|
||||
var value = /** @type {number} */ (reader.readUint32());
|
||||
msg.setGnssPort(value);
|
||||
case 16:
|
||||
var value = /** @type {!Array<number>} */ (reader.readPackedUint32());
|
||||
msg.setForwardFPortsList(value);
|
||||
break;
|
||||
case 5:
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setGnssUseRxTime(value);
|
||||
break;
|
||||
case 17:
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setGnssUseGatewayLocation(value);
|
||||
break;
|
||||
case 6:
|
||||
var value = /** @type {boolean} */ (reader.readBool());
|
||||
msg.setParseTlv(value);
|
||||
@ -8259,17 +8266,10 @@ proto.api.LoraCloudModemGeolocationServices.serializeBinaryToWriter = function(m
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getModemPort();
|
||||
if (f !== 0) {
|
||||
writer.writeUint32(
|
||||
3,
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getGnssPort();
|
||||
if (f !== 0) {
|
||||
writer.writeUint32(
|
||||
4,
|
||||
f = message.getForwardFPortsList();
|
||||
if (f.length > 0) {
|
||||
writer.writePackedUint32(
|
||||
16,
|
||||
f
|
||||
);
|
||||
}
|
||||
@ -8280,6 +8280,13 @@ proto.api.LoraCloudModemGeolocationServices.serializeBinaryToWriter = function(m
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getGnssUseGatewayLocation();
|
||||
if (f) {
|
||||
writer.writeBool(
|
||||
17,
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getParseTlv();
|
||||
if (f) {
|
||||
writer.writeBool(
|
||||
@ -8390,38 +8397,39 @@ proto.api.LoraCloudModemGeolocationServices.prototype.setModemEnabled = function
|
||||
|
||||
|
||||
/**
|
||||
* optional uint32 modem_port = 3;
|
||||
* @return {number}
|
||||
* repeated uint32 forward_f_ports = 16;
|
||||
* @return {!Array<number>}
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getModemPort = function() {
|
||||
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getForwardFPortsList = function() {
|
||||
return /** @type {!Array<number>} */ (jspb.Message.getRepeatedField(this, 16));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {!Array<number>} value
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setForwardFPortsList = function(value) {
|
||||
return jspb.Message.setField(this, 16, value || []);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} value
|
||||
* @param {number=} opt_index
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setModemPort = function(value) {
|
||||
return jspb.Message.setProto3IntField(this, 3, value);
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.addForwardFPorts = function(value, opt_index) {
|
||||
return jspb.Message.addToRepeatedField(this, 16, value, opt_index);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional uint32 gnss_port = 4;
|
||||
* @return {number}
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getGnssPort = function() {
|
||||
return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} value
|
||||
* Clears the list making it empty but non-null.
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setGnssPort = function(value) {
|
||||
return jspb.Message.setProto3IntField(this, 4, value);
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.clearForwardFPortsList = function() {
|
||||
return this.setForwardFPortsList([]);
|
||||
};
|
||||
|
||||
|
||||
@ -8443,6 +8451,24 @@ proto.api.LoraCloudModemGeolocationServices.prototype.setGnssUseRxTime = functio
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional bool gnss_use_gateway_location = 17;
|
||||
* @return {boolean}
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.getGnssUseGatewayLocation = function() {
|
||||
return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 17, false));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {boolean} value
|
||||
* @return {!proto.api.LoraCloudModemGeolocationServices} returns this
|
||||
*/
|
||||
proto.api.LoraCloudModemGeolocationServices.prototype.setGnssUseGatewayLocation = function(value) {
|
||||
return jspb.Message.setProto3BooleanField(this, 17, value);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional bool parse_tlv = 6;
|
||||
* @return {boolean}
|
||||
|
2
api/js/package.json
vendored
2
api/js/package.json
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@chirpstack/chirpstack-api",
|
||||
"version": "4.3.0",
|
||||
"version": "4.3.2",
|
||||
"description": "Chirpstack JS and TS API",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
2
api/kotlin/build.gradle.kts
vendored
2
api/kotlin/build.gradle.kts
vendored
@ -9,7 +9,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "io.chirpstack"
|
||||
version = "4.3.0"
|
||||
version = "4.3.2"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
28
api/md/api/api.md
vendored
28
api/md/api/api.md
vendored
@ -580,7 +580,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -610,7 +610,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -640,7 +640,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -670,7 +670,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -860,7 +860,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -920,7 +920,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -980,7 +980,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -1040,7 +1040,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
|
||||
|
||||
|
||||
@ -1070,7 +1070,7 @@
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
| headers | [HttpIntegration.HeadersEntry](#api-HttpIntegration-HeadersEntry) | repeated | HTTP headers to set when making requests. |
|
||||
| encoding | [Encoding](#api-Encoding) | | Payload encoding. |
|
||||
| event_endpoint_url | [string](#string) | | Event endpoint URL. The HTTP integration will POST all events to this enpoint. The request will contain a query parameters "event" containing the type of the event. |
|
||||
@ -1123,7 +1123,7 @@ Note: The first value is always used for the DevEUI. |
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
| endpoint | [string](#string) | | InfluxDb API write endpoint (e.g. http://localhost:8086/write). |
|
||||
| db | [string](#string) | | InfluxDb database name. (InfluxDb v1) |
|
||||
| username | [string](#string) | | InfluxDb username. (InfluxDb v1) |
|
||||
@ -1246,9 +1246,9 @@ Note: The first value is always used for the DevEUI. |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| token | [string](#string) | | API token. |
|
||||
| modem_enabled | [bool](#bool) | | Device implements Modem / Modem-E stack. |
|
||||
| modem_port | [uint32](#uint32) | | Modem port (fPort). ChirpStack will only forward the FrmPayload to the MGS if the port is equal to the configured value. |
|
||||
| gnss_port | [uint32](#uint32) | | GNSS port (fPort). ChirpStack will forward the FrmPayload to MGS as GNSS payload if the port is equal to the configured value. |
|
||||
| forward_f_ports | [uint32](#uint32) | repeated | Forward FPorts. Forward uplink messages matching the given FPorts to the MGS. |
|
||||
| gnss_use_rx_time | [bool](#bool) | | Use rx time for GNSS resolving. In case this is set to true, the MGS resolver will use the RX time of the network instead of the timestamp included in the LR1110 payload. |
|
||||
| gnss_use_gateway_location | [bool](#bool) | | Use gateway location for GNSS resolving. In the case this is set to true, ChirpStack will provide the location of one of the gateways to the MGS resolver to aid the resolving process. Disable this in case the gateway location is not accurate / incorrectly configured as an incorrect location will cause the resolver to return an error. |
|
||||
| parse_tlv | [bool](#bool) | | Parse TLV records. If enabled, stream records (expected in TLV format) are scanned for GNSS data (0x06 or 0x07). If found, ChirpStack will make an additional geolocation call to the MGS API for resolving the location of the detected payload. |
|
||||
| geolocation_buffer_ttl | [uint32](#uint32) | | Geolocation buffer TTL (in seconds). If > 0, uplink RX meta-data will be stored in a buffer so that the meta-data of multiple uplinks can be used for geolocation. |
|
||||
| geolocation_min_buffer_size | [uint32](#uint32) | | Geolocation minimum buffer size. If > 0, geolocation will only be performed when the buffer has at least the given size. |
|
||||
@ -1273,7 +1273,7 @@ Note: The first value is always used for the DevEUI. |
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
| endpoint | [string](#string) | | myDevices API endpoint. |
|
||||
|
||||
|
||||
@ -1306,7 +1306,7 @@ Note: The first value is always used for the DevEUI. |
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| application_id | [string](#string) | | Application ID (UUIO). |
|
||||
| application_id | [string](#string) | | Application ID (UUID). |
|
||||
| server | [string](#string) | | ThingsBoard server endpoint, e.g. https://example.com |
|
||||
|
||||
|
||||
|
44
api/proto/api/application.proto
vendored
44
api/proto/api/application.proto
vendored
@ -499,7 +499,7 @@ message ListIntegrationsResponse {
|
||||
}
|
||||
|
||||
message HttpIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// HTTP headers to set when making requests.
|
||||
@ -521,7 +521,7 @@ message CreateHttpIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetHttpIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -536,7 +536,7 @@ message UpdateHttpIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteHttpIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -555,7 +555,7 @@ enum InfluxDbVersion {
|
||||
}
|
||||
|
||||
message InfluxDbIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// InfluxDb API write endpoint (e.g. http://localhost:8086/write).
|
||||
@ -595,7 +595,7 @@ message CreateInfluxDbIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetInfluxDbIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -610,12 +610,12 @@ message UpdateInfluxDbIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteInfluxDbIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
message ThingsBoardIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// ThingsBoard server endpoint, e.g. https://example.com
|
||||
@ -628,7 +628,7 @@ message CreateThingsBoardIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetThingsBoardIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -643,12 +643,12 @@ message UpdateThingsBoardIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteThingsBoardIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
message MyDevicesIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// myDevices API endpoint.
|
||||
@ -661,7 +661,7 @@ message CreateMyDevicesIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetMyDevicesIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -676,7 +676,7 @@ message UpdateMyDevicesIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteMyDevicesIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -695,21 +695,23 @@ message LoraCloudModemGeolocationServices {
|
||||
// Device implements Modem / Modem-E stack.
|
||||
bool modem_enabled = 2;
|
||||
|
||||
// Modem port (fPort).
|
||||
// ChirpStack will only forward the FrmPayload to the MGS if the port
|
||||
// is equal to the configured value.
|
||||
uint32 modem_port = 3;
|
||||
|
||||
// GNSS port (fPort).
|
||||
// ChirpStack will forward the FrmPayload to MGS as GNSS payload if the
|
||||
// port is equal to the configured value.
|
||||
uint32 gnss_port = 4;
|
||||
// Forward FPorts.
|
||||
// Forward uplink messages matching the given FPorts to the MGS.
|
||||
repeated uint32 forward_f_ports = 16;
|
||||
|
||||
// Use rx time for GNSS resolving.
|
||||
// In case this is set to true, the MGS resolver will use the RX time of the
|
||||
// network instead of the timestamp included in the LR1110 payload.
|
||||
bool gnss_use_rx_time = 5;
|
||||
|
||||
// Use gateway location for GNSS resolving.
|
||||
// In the case this is set to true, ChirpStack will provide the location of
|
||||
// one of the gateways to the MGS resolver to aid the resolving process.
|
||||
// Disable this in case the gateway location is not accurate / incorrectly
|
||||
// configured as an incorrect location will cause the resolver to return an
|
||||
// error.
|
||||
bool gnss_use_gateway_location = 17;
|
||||
|
||||
// Parse TLV records.
|
||||
// If enabled, stream records (expected in TLV format) are scanned for GNSS
|
||||
// data (0x06 or 0x07). If found, ChirpStack will make an additional
|
||||
|
@ -499,7 +499,7 @@ message ListIntegrationsResponse {
|
||||
}
|
||||
|
||||
message HttpIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// HTTP headers to set when making requests.
|
||||
@ -521,7 +521,7 @@ message CreateHttpIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetHttpIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -536,7 +536,7 @@ message UpdateHttpIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteHttpIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -555,7 +555,7 @@ enum InfluxDbVersion {
|
||||
}
|
||||
|
||||
message InfluxDbIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// InfluxDb API write endpoint (e.g. http://localhost:8086/write).
|
||||
@ -595,7 +595,7 @@ message CreateInfluxDbIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetInfluxDbIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -610,12 +610,12 @@ message UpdateInfluxDbIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteInfluxDbIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
message ThingsBoardIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// ThingsBoard server endpoint, e.g. https://example.com
|
||||
@ -628,7 +628,7 @@ message CreateThingsBoardIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetThingsBoardIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -643,12 +643,12 @@ message UpdateThingsBoardIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteThingsBoardIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
message MyDevicesIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// myDevices API endpoint.
|
||||
@ -661,7 +661,7 @@ message CreateMyDevicesIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetMyDevicesIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -676,7 +676,7 @@ message UpdateMyDevicesIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteMyDevicesIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -695,21 +695,23 @@ message LoraCloudModemGeolocationServices {
|
||||
// Device implements Modem / Modem-E stack.
|
||||
bool modem_enabled = 2;
|
||||
|
||||
// Modem port (fPort).
|
||||
// ChirpStack will only forward the FrmPayload to the MGS if the port
|
||||
// is equal to the configured value.
|
||||
uint32 modem_port = 3;
|
||||
|
||||
// GNSS port (fPort).
|
||||
// ChirpStack will forward the FrmPayload to MGS as GNSS payload if the
|
||||
// port is equal to the configured value.
|
||||
uint32 gnss_port = 4;
|
||||
// Forward FPorts.
|
||||
// Forward uplink messages matching the given FPorts to the MGS.
|
||||
repeated uint32 forward_f_ports = 16;
|
||||
|
||||
// Use rx time for GNSS resolving.
|
||||
// In case this is set to true, the MGS resolver will use the RX time of the
|
||||
// network instead of the timestamp included in the LR1110 payload.
|
||||
bool gnss_use_rx_time = 5;
|
||||
|
||||
// Use gateway location for GNSS resolving.
|
||||
// In the case this is set to true, ChirpStack will provide the location of
|
||||
// one of the gateways to the MGS resolver to aid the resolving process.
|
||||
// Disable this in case the gateway location is not accurate / incorrectly
|
||||
// configured as an incorrect location will cause the resolver to return an
|
||||
// error.
|
||||
bool gnss_use_gateway_location = 17;
|
||||
|
||||
// Parse TLV records.
|
||||
// If enabled, stream records (expected in TLV format) are scanned for GNSS
|
||||
// data (0x06 or 0x07). If found, ChirpStack will make an additional
|
||||
|
10
api/python/src/README.md
vendored
10
api/python/src/README.md
vendored
@ -10,13 +10,15 @@ pip install chirpstack-api
|
||||
|
||||
## Usage
|
||||
|
||||
All messages, services, constants, etc. are auto-generated from the ChirpStack protobuf definitions. The result is that
|
||||
this package structure matches that of the protobuf definitions.
|
||||
All messages, services, constants, etc. are auto-generated from the ChirpStack
|
||||
protobuf definitions. The result is that this package structure matches that
|
||||
of the protobuf definitions.
|
||||
|
||||
The protobuf definitions can be found here: https://github.com/brocaar/chirpstack-api/tree/master/protobuf
|
||||
The protobuf definitions can be found here:
|
||||
[https://github.com/chirpstack/chirpstack/tree/master/api/proto](https://github.com/chirpstack/chirpstack/tree/master/api/proto)
|
||||
|
||||
## Links
|
||||
|
||||
* [`chirpstack-api` Python package page](https://pypi.org/project/chirpstack-api/)
|
||||
* [ChirpStack documentation](https://www.chirpstack.io/)
|
||||
* [ChirpStack Application Server API examples](https://www.chirpstack.io/application-server/api/python-examples/)
|
||||
* [Code examples](https://www.chirpstack.io/docs/chirpstack/api/python-examples.html)
|
||||
|
172
api/python/src/chirpstack_api/api/application_pb2.py
vendored
172
api/python/src/chirpstack_api/api/application_pb2.py
vendored
File diff suppressed because one or more lines are too long
@ -496,7 +496,8 @@ class LoraCloudIntegration(_message.Message):
|
||||
def __init__(self, application_id: _Optional[str] = ..., modem_geolocation_services: _Optional[_Union[LoraCloudModemGeolocationServices, _Mapping]] = ...) -> None: ...
|
||||
|
||||
class LoraCloudModemGeolocationServices(_message.Message):
|
||||
__slots__ = ["geolocation_buffer_ttl", "geolocation_gnss", "geolocation_gnss_payload_field", "geolocation_gnss_use_rx_time", "geolocation_min_buffer_size", "geolocation_rssi", "geolocation_tdoa", "geolocation_wifi", "geolocation_wifi_payload_field", "gnss_port", "gnss_use_rx_time", "modem_enabled", "modem_port", "parse_tlv", "token"]
|
||||
__slots__ = ["forward_f_ports", "geolocation_buffer_ttl", "geolocation_gnss", "geolocation_gnss_payload_field", "geolocation_gnss_use_rx_time", "geolocation_min_buffer_size", "geolocation_rssi", "geolocation_tdoa", "geolocation_wifi", "geolocation_wifi_payload_field", "gnss_use_gateway_location", "gnss_use_rx_time", "modem_enabled", "parse_tlv", "token"]
|
||||
FORWARD_F_PORTS_FIELD_NUMBER: _ClassVar[int]
|
||||
GEOLOCATION_BUFFER_TTL_FIELD_NUMBER: _ClassVar[int]
|
||||
GEOLOCATION_GNSS_FIELD_NUMBER: _ClassVar[int]
|
||||
GEOLOCATION_GNSS_PAYLOAD_FIELD_FIELD_NUMBER: _ClassVar[int]
|
||||
@ -506,12 +507,12 @@ class LoraCloudModemGeolocationServices(_message.Message):
|
||||
GEOLOCATION_TDOA_FIELD_NUMBER: _ClassVar[int]
|
||||
GEOLOCATION_WIFI_FIELD_NUMBER: _ClassVar[int]
|
||||
GEOLOCATION_WIFI_PAYLOAD_FIELD_FIELD_NUMBER: _ClassVar[int]
|
||||
GNSS_PORT_FIELD_NUMBER: _ClassVar[int]
|
||||
GNSS_USE_GATEWAY_LOCATION_FIELD_NUMBER: _ClassVar[int]
|
||||
GNSS_USE_RX_TIME_FIELD_NUMBER: _ClassVar[int]
|
||||
MODEM_ENABLED_FIELD_NUMBER: _ClassVar[int]
|
||||
MODEM_PORT_FIELD_NUMBER: _ClassVar[int]
|
||||
PARSE_TLV_FIELD_NUMBER: _ClassVar[int]
|
||||
TOKEN_FIELD_NUMBER: _ClassVar[int]
|
||||
forward_f_ports: _containers.RepeatedScalarFieldContainer[int]
|
||||
geolocation_buffer_ttl: int
|
||||
geolocation_gnss: bool
|
||||
geolocation_gnss_payload_field: str
|
||||
@ -521,13 +522,12 @@ class LoraCloudModemGeolocationServices(_message.Message):
|
||||
geolocation_tdoa: bool
|
||||
geolocation_wifi: bool
|
||||
geolocation_wifi_payload_field: str
|
||||
gnss_port: int
|
||||
gnss_use_gateway_location: bool
|
||||
gnss_use_rx_time: bool
|
||||
modem_enabled: bool
|
||||
modem_port: int
|
||||
parse_tlv: bool
|
||||
token: str
|
||||
def __init__(self, token: _Optional[str] = ..., modem_enabled: bool = ..., modem_port: _Optional[int] = ..., gnss_port: _Optional[int] = ..., gnss_use_rx_time: bool = ..., parse_tlv: bool = ..., geolocation_buffer_ttl: _Optional[int] = ..., geolocation_min_buffer_size: _Optional[int] = ..., geolocation_tdoa: bool = ..., geolocation_rssi: bool = ..., geolocation_gnss: bool = ..., geolocation_gnss_payload_field: _Optional[str] = ..., geolocation_gnss_use_rx_time: bool = ..., geolocation_wifi: bool = ..., geolocation_wifi_payload_field: _Optional[str] = ...) -> None: ...
|
||||
def __init__(self, token: _Optional[str] = ..., modem_enabled: bool = ..., forward_f_ports: _Optional[_Iterable[int]] = ..., gnss_use_rx_time: bool = ..., gnss_use_gateway_location: bool = ..., parse_tlv: bool = ..., geolocation_buffer_ttl: _Optional[int] = ..., geolocation_min_buffer_size: _Optional[int] = ..., geolocation_tdoa: bool = ..., geolocation_rssi: bool = ..., geolocation_gnss: bool = ..., geolocation_gnss_payload_field: _Optional[str] = ..., geolocation_gnss_use_rx_time: bool = ..., geolocation_wifi: bool = ..., geolocation_wifi_payload_field: _Optional[str] = ...) -> None: ...
|
||||
|
||||
class MyDevicesIntegration(_message.Message):
|
||||
__slots__ = ["application_id", "endpoint"]
|
||||
|
2
api/python/src/setup.py
vendored
2
api/python/src/setup.py
vendored
@ -18,7 +18,7 @@ CLASSIFIERS = [
|
||||
|
||||
setup(
|
||||
name='chirpstack-api',
|
||||
version = "4.3.0",
|
||||
version = "4.3.2",
|
||||
url='https://github.com/brocaar/chirpstack-api',
|
||||
author='Orne Brocaar',
|
||||
author_email='info@brocaar.com',
|
||||
|
501
api/rust/Cargo.lock
generated
vendored
501
api/rust/Cargo.lock
generated
vendored
@ -4,40 +4,19 @@ version = 3
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.68"
|
||||
version = "1.0.70"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
|
||||
|
||||
[[package]]
|
||||
name = "async-stream"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e"
|
||||
dependencies = [
|
||||
"async-stream-impl",
|
||||
"futures-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-stream-impl"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.64"
|
||||
version = "0.1.68"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2"
|
||||
checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.15",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -48,9 +27,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "axum"
|
||||
version = "0.6.4"
|
||||
version = "0.6.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5694b64066a2459918d8074c2ce0d5a88f409431994c2356617c8ae0c4721fc"
|
||||
checksum = "b70caf9f1b0c045f7da350636435b775a9733adf2df56e8aa2a29210fbc335d4"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"axum-core",
|
||||
@ -70,16 +49,15 @@ dependencies = [
|
||||
"serde",
|
||||
"sync_wrapper",
|
||||
"tower",
|
||||
"tower-http",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum-core"
|
||||
version = "0.3.2"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34"
|
||||
checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
@ -98,6 +76,12 @@ version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.21.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
@ -110,6 +94,12 @@ version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.79"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
@ -118,7 +108,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "chirpstack_api"
|
||||
version = "4.3.0"
|
||||
version = "4.3.2"
|
||||
dependencies = [
|
||||
"hex",
|
||||
"pbjson",
|
||||
@ -135,9 +125,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.23"
|
||||
version = "0.4.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
|
||||
checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
|
||||
dependencies = [
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
@ -150,10 +140,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "1.8.0"
|
||||
name = "errno"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
|
||||
checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
|
||||
dependencies = [
|
||||
"errno-dragonfly",
|
||||
"libc",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "errno-dragonfly"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
|
||||
dependencies = [
|
||||
"instant",
|
||||
]
|
||||
@ -172,36 +183,36 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.26"
|
||||
version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5"
|
||||
checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.26"
|
||||
version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608"
|
||||
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
|
||||
|
||||
[[package]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.26"
|
||||
version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364"
|
||||
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.26"
|
||||
version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366"
|
||||
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.26"
|
||||
version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1"
|
||||
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
@ -211,9 +222,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.8"
|
||||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
|
||||
checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
@ -222,9 +233,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.3.15"
|
||||
version = "0.3.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4"
|
||||
checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
@ -247,9 +258,15 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
|
||||
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
|
||||
|
||||
[[package]]
|
||||
name = "hex"
|
||||
@ -259,9 +276,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
||||
|
||||
[[package]]
|
||||
name = "http"
|
||||
version = "0.2.8"
|
||||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
|
||||
checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
@ -279,12 +296,6 @@ dependencies = [
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-range-header"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
|
||||
|
||||
[[package]]
|
||||
name = "httparse"
|
||||
version = "1.8.0"
|
||||
@ -299,9 +310,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.14.23"
|
||||
version = "0.14.26"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c"
|
||||
checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
@ -335,9 +346,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.9.2"
|
||||
version = "1.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
|
||||
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"hashbrown",
|
||||
@ -352,6 +363,17 @@ dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "io-lifetimes"
|
||||
version = "1.0.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.10.5"
|
||||
@ -363,9 +385,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.5"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
|
||||
checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
@ -375,9 +397,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.139"
|
||||
version = "0.2.142"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
|
||||
checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "36eb31c1778188ae1e64398743890d0877fef36d11521ac60406b42016e8c2cf"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
@ -402,20 +430,20 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
|
||||
[[package]]
|
||||
name = "mime"
|
||||
version = "0.3.16"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
|
||||
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.5"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
|
||||
checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"wasi",
|
||||
"windows-sys",
|
||||
"windows-sys 0.45.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -445,9 +473,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.17.0"
|
||||
version = "1.17.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
|
||||
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
|
||||
|
||||
[[package]]
|
||||
name = "pbjson"
|
||||
@ -455,7 +483,7 @@ version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "048f9ac93c1eab514f9470c4bc8d97ca2a0a236b84f45cc19d69a59fc11467f6"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.13.1",
|
||||
"serde",
|
||||
]
|
||||
|
||||
@ -494,9 +522,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
|
||||
|
||||
[[package]]
|
||||
name = "petgraph"
|
||||
version = "0.6.2"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143"
|
||||
checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4"
|
||||
dependencies = [
|
||||
"fixedbitset",
|
||||
"indexmap",
|
||||
@ -519,7 +547,7 @@ checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -542,28 +570,28 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
||||
|
||||
[[package]]
|
||||
name = "prettyplease"
|
||||
version = "0.1.23"
|
||||
version = "0.1.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78"
|
||||
checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"syn",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.50"
|
||||
version = "1.0.56"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
|
||||
checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost"
|
||||
version = "0.11.6"
|
||||
version = "0.11.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698"
|
||||
checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"prost-derive",
|
||||
@ -571,9 +599,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "prost-build"
|
||||
version = "0.11.6"
|
||||
version = "0.11.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e"
|
||||
checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"heck",
|
||||
@ -586,39 +614,38 @@ dependencies = [
|
||||
"prost",
|
||||
"prost-types",
|
||||
"regex",
|
||||
"syn",
|
||||
"syn 1.0.109",
|
||||
"tempfile",
|
||||
"which",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost-derive"
|
||||
version = "0.11.6"
|
||||
version = "0.11.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d"
|
||||
checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost-types"
|
||||
version = "0.11.6"
|
||||
version = "0.11.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788"
|
||||
checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"prost",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.23"
|
||||
version = "1.0.26"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
|
||||
checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
@ -655,77 +682,82 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.2.16"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
||||
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.7.1"
|
||||
version = "1.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
|
||||
checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370"
|
||||
dependencies = [
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.28"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
|
||||
checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c"
|
||||
|
||||
[[package]]
|
||||
name = "remove_dir_all"
|
||||
version = "0.5.3"
|
||||
name = "rustix"
|
||||
version = "0.37.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
|
||||
checksum = "a0661814f891c57c930a610266415528da53c4933e6dea5fb350cbfe048a9ece"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
"bitflags",
|
||||
"errno",
|
||||
"io-lifetimes",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
version = "1.0.11"
|
||||
version = "1.0.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70"
|
||||
checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.152"
|
||||
version = "1.0.160"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
|
||||
checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.152"
|
||||
version = "1.0.160"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
|
||||
checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.15",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.7"
|
||||
version = "0.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
|
||||
checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.4.7"
|
||||
version = "0.4.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
|
||||
checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"winapi",
|
||||
@ -733,9 +765,20 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.107"
|
||||
version = "1.0.109"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
|
||||
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -744,39 +787,37 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sync_wrapper"
|
||||
version = "0.1.1"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8"
|
||||
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.3.0"
|
||||
version = "3.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
|
||||
checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"fastrand",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"remove_dir_all",
|
||||
"winapi",
|
||||
"rustix",
|
||||
"windows-sys 0.45.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.25.0"
|
||||
version = "1.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af"
|
||||
checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"bytes",
|
||||
"libc",
|
||||
"memchr",
|
||||
"mio",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"tokio-macros",
|
||||
"windows-sys",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -791,20 +832,20 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tokio-macros"
|
||||
version = "1.8.2"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
|
||||
checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.15",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-stream"
|
||||
version = "0.1.11"
|
||||
version = "0.1.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce"
|
||||
checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"pin-project-lite",
|
||||
@ -813,9 +854,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tokio-util"
|
||||
version = "0.7.4"
|
||||
version = "0.7.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740"
|
||||
checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-core",
|
||||
@ -827,14 +868,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tonic"
|
||||
version = "0.8.3"
|
||||
version = "0.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb"
|
||||
checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a"
|
||||
dependencies = [
|
||||
"async-stream",
|
||||
"async-trait",
|
||||
"axum",
|
||||
"base64",
|
||||
"base64 0.21.0",
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
@ -846,28 +886,25 @@ dependencies = [
|
||||
"percent-encoding",
|
||||
"pin-project",
|
||||
"prost",
|
||||
"prost-derive",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
"tracing-futures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tonic-build"
|
||||
version = "0.8.4"
|
||||
version = "0.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4"
|
||||
checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07"
|
||||
dependencies = [
|
||||
"prettyplease",
|
||||
"proc-macro2",
|
||||
"prost-build",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -890,25 +927,6 @@ dependencies = [
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower-http"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
"http-range-header",
|
||||
"pin-project-lite",
|
||||
"tower",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tower-layer"
|
||||
version = "0.3.2"
|
||||
@ -923,12 +941,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.37"
|
||||
version = "0.1.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
|
||||
checksum = "cf9cf6a813d3f40c88b0b6b6f29a5c95c6cdbf97c1f9cc53fb820200f5ad814d"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"log",
|
||||
"pin-project-lite",
|
||||
"tracing-attributes",
|
||||
"tracing-core",
|
||||
@ -936,13 +952,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tracing-attributes"
|
||||
version = "0.1.23"
|
||||
version = "0.1.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
|
||||
checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.15",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -954,16 +970,6 @@ dependencies = [
|
||||
"once_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-futures"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
|
||||
dependencies = [
|
||||
"pin-project",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "try-lock"
|
||||
version = "0.2.4"
|
||||
@ -972,9 +978,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.6"
|
||||
version = "1.0.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
|
||||
checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
|
||||
|
||||
[[package]]
|
||||
name = "want"
|
||||
@ -1027,57 +1033,132 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.42.0"
|
||||
version = "0.45.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
|
||||
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
"windows-targets 0.42.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
|
||||
dependencies = [
|
||||
"windows-targets 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.42.2",
|
||||
"windows_aarch64_msvc 0.42.2",
|
||||
"windows_i686_gnu 0.42.2",
|
||||
"windows_i686_msvc 0.42.2",
|
||||
"windows_x86_64_gnu 0.42.2",
|
||||
"windows_x86_64_gnullvm 0.42.2",
|
||||
"windows_x86_64_msvc 0.42.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.48.0",
|
||||
"windows_aarch64_msvc 0.48.0",
|
||||
"windows_i686_gnu 0.48.0",
|
||||
"windows_i686_msvc 0.48.0",
|
||||
"windows_x86_64_gnu 0.48.0",
|
||||
"windows_x86_64_gnullvm 0.48.0",
|
||||
"windows_x86_64_msvc 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.42.1"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
|
||||
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.42.1"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
|
||||
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.42.1"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
|
||||
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.42.1"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
|
||||
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.42.1"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
|
||||
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.42.1"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
|
||||
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.42.1"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
|
||||
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.48.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
||||
|
17
api/rust/Cargo.toml
vendored
17
api/rust/Cargo.toml
vendored
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "chirpstack_api"
|
||||
description = "ChirpStack Protobuf / gRPC API definitions."
|
||||
version = "4.3.0"
|
||||
version = "4.3.2"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
license = "MIT"
|
||||
homepage = "https://www.chirpstack.io"
|
||||
@ -9,22 +9,23 @@ repository = "https://github.com/chirpstack/chirpstack"
|
||||
edition = "2021"
|
||||
|
||||
[features]
|
||||
default = ["api"]
|
||||
default = ["api", "json"]
|
||||
api = ["tonic/transport", "tonic-build/transport", "tokio"]
|
||||
json = ["pbjson", "pbjson-types", "serde"]
|
||||
internal = []
|
||||
|
||||
[dependencies]
|
||||
prost = "0.11"
|
||||
prost-types = "0.11"
|
||||
pbjson = "0.5"
|
||||
pbjson-types = "0.5"
|
||||
hex = "0.4"
|
||||
rand = "0.8"
|
||||
|
||||
tonic = { version = "0.8", features = ["codegen", "prost"], default-features = false }
|
||||
tokio = { version = "1.25", features = ["macros"], optional = true }
|
||||
serde = { version = "1.0" }
|
||||
tonic = { version = "0.9", features = ["codegen", "prost"], default-features = false, optional = true }
|
||||
tokio = { version = "1.27", features = ["macros"], optional = true }
|
||||
pbjson = { version = "0.5", optional = true }
|
||||
pbjson-types = { version = "0.5", optional = true }
|
||||
serde = { version = "1.0", optional = true }
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build = { version = "0.8", features = ["prost"], default-features = false }
|
||||
tonic-build = { version = "0.9", features = ["prost"], default-features = false }
|
||||
pbjson-build = "0.5"
|
||||
|
94
api/rust/build.rs
vendored
94
api/rust/build.rs
vendored
@ -16,12 +16,18 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
std::fs::create_dir_all(out_dir.join("meta")).unwrap();
|
||||
std::fs::create_dir_all(out_dir.join("api")).unwrap();
|
||||
|
||||
#[cfg(feature = "json")]
|
||||
let well_known_types_path = "::pbjson_types";
|
||||
|
||||
#[cfg(not(feature = "json"))]
|
||||
let well_known_types_path = "::prost_types";
|
||||
|
||||
// common
|
||||
tonic_build::configure()
|
||||
.out_dir(out_dir.join("common"))
|
||||
.file_descriptor_set_path(out_dir.join("common").join("proto_descriptor.bin"))
|
||||
.compile_well_known_types(true)
|
||||
.extern_path(".google.protobuf", "::pbjson_types")
|
||||
.extern_path(".google.protobuf", well_known_types_path)
|
||||
.compile(
|
||||
&[cs_dir.join("common").join("common.proto").to_str().unwrap()],
|
||||
&[
|
||||
@ -30,18 +36,21 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
],
|
||||
)?;
|
||||
|
||||
let descriptor_set = std::fs::read(out_dir.join("common").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("common"))
|
||||
.build(&[".common"])?;
|
||||
#[cfg(feature = "json")]
|
||||
{
|
||||
let descriptor_set = std::fs::read(out_dir.join("common").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("common"))
|
||||
.build(&[".common"])?;
|
||||
}
|
||||
|
||||
// gw
|
||||
tonic_build::configure()
|
||||
.out_dir(out_dir.join("gw"))
|
||||
.file_descriptor_set_path(out_dir.join("gw").join("proto_descriptor.bin"))
|
||||
.compile_well_known_types(true)
|
||||
.extern_path(".google.protobuf", "::pbjson_types")
|
||||
.extern_path(".google.protobuf", well_known_types_path)
|
||||
.extern_path(".common", "crate::common")
|
||||
.compile(
|
||||
&[cs_dir.join("gw").join("gw.proto").to_str().unwrap()],
|
||||
@ -51,19 +60,22 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
],
|
||||
)?;
|
||||
|
||||
let descriptor_set = std::fs::read(out_dir.join("gw").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("gw"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.build(&[".gw"])?;
|
||||
#[cfg(feature = "json")]
|
||||
{
|
||||
let descriptor_set = std::fs::read(out_dir.join("gw").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("gw"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.build(&[".gw"])?;
|
||||
}
|
||||
|
||||
// internal
|
||||
tonic_build::configure()
|
||||
.out_dir(out_dir.join("internal"))
|
||||
.file_descriptor_set_path(out_dir.join("internal").join("proto_descriptor.bin"))
|
||||
.compile_well_known_types(true)
|
||||
.extern_path(".google.protobuf", "::pbjson_types")
|
||||
.extern_path(".google.protobuf", well_known_types_path)
|
||||
.extern_path(".common", "crate::common")
|
||||
.compile(
|
||||
&[cs_dir
|
||||
@ -77,19 +89,22 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
],
|
||||
)?;
|
||||
|
||||
let descriptor_set = std::fs::read(out_dir.join("internal").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("internal"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.build(&[".internal"])?;
|
||||
#[cfg(feature = "json")]
|
||||
{
|
||||
let descriptor_set = std::fs::read(out_dir.join("internal").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("internal"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.build(&[".internal"])?;
|
||||
}
|
||||
|
||||
// integration
|
||||
tonic_build::configure()
|
||||
.out_dir(out_dir.join("integration"))
|
||||
.file_descriptor_set_path(out_dir.join("integration").join("proto_descriptor.bin"))
|
||||
.compile_well_known_types(true)
|
||||
.extern_path(".google.protobuf", "::pbjson_types")
|
||||
.extern_path(".google.protobuf", well_known_types_path)
|
||||
.extern_path(".common", "crate::common")
|
||||
.extern_path(".gw", "crate::gw")
|
||||
.compile(
|
||||
@ -104,14 +119,18 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
],
|
||||
)?;
|
||||
|
||||
let descriptor_set = std::fs::read(out_dir.join("integration").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.emit_fields()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("integration"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.extern_path(".gw", "crate::gw")
|
||||
.build(&[".integration"])?;
|
||||
#[cfg(feature = "json")]
|
||||
{
|
||||
let descriptor_set =
|
||||
std::fs::read(out_dir.join("integration").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.emit_fields()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("integration"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.extern_path(".gw", "crate::gw")
|
||||
.build(&[".integration"])?;
|
||||
}
|
||||
|
||||
// meta
|
||||
tonic_build::configure()
|
||||
@ -125,13 +144,16 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
&[proto_dir.join("chirpstack").to_str().unwrap()],
|
||||
)?;
|
||||
|
||||
let descriptor_set = std::fs::read(out_dir.join("meta").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("meta"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.extern_path(".gw", "crate::gw")
|
||||
.build(&[".meta"])?;
|
||||
#[cfg(feature = "json")]
|
||||
{
|
||||
let descriptor_set = std::fs::read(out_dir.join("meta").join("proto_descriptor.bin"))?;
|
||||
pbjson_build::Builder::new()
|
||||
.register_descriptors(&descriptor_set)?
|
||||
.out_dir(out_dir.join("meta"))
|
||||
.extern_path(".common", "crate::common")
|
||||
.extern_path(".gw", "crate::gw")
|
||||
.build(&[".meta"])?;
|
||||
}
|
||||
|
||||
// api
|
||||
tonic_build::configure()
|
||||
|
44
api/rust/proto/chirpstack/api/application.proto
vendored
44
api/rust/proto/chirpstack/api/application.proto
vendored
@ -499,7 +499,7 @@ message ListIntegrationsResponse {
|
||||
}
|
||||
|
||||
message HttpIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// HTTP headers to set when making requests.
|
||||
@ -521,7 +521,7 @@ message CreateHttpIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetHttpIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -536,7 +536,7 @@ message UpdateHttpIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteHttpIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -555,7 +555,7 @@ enum InfluxDbVersion {
|
||||
}
|
||||
|
||||
message InfluxDbIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// InfluxDb API write endpoint (e.g. http://localhost:8086/write).
|
||||
@ -595,7 +595,7 @@ message CreateInfluxDbIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetInfluxDbIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -610,12 +610,12 @@ message UpdateInfluxDbIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteInfluxDbIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
message ThingsBoardIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// ThingsBoard server endpoint, e.g. https://example.com
|
||||
@ -628,7 +628,7 @@ message CreateThingsBoardIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetThingsBoardIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -643,12 +643,12 @@ message UpdateThingsBoardIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteThingsBoardIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
message MyDevicesIntegration {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
|
||||
// myDevices API endpoint.
|
||||
@ -661,7 +661,7 @@ message CreateMyDevicesIntegrationRequest {
|
||||
}
|
||||
|
||||
message GetMyDevicesIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -676,7 +676,7 @@ message UpdateMyDevicesIntegrationRequest {
|
||||
}
|
||||
|
||||
message DeleteMyDevicesIntegrationRequest {
|
||||
// Application ID (UUIO).
|
||||
// Application ID (UUID).
|
||||
string application_id = 1;
|
||||
}
|
||||
|
||||
@ -695,21 +695,23 @@ message LoraCloudModemGeolocationServices {
|
||||
// Device implements Modem / Modem-E stack.
|
||||
bool modem_enabled = 2;
|
||||
|
||||
// Modem port (fPort).
|
||||
// ChirpStack will only forward the FrmPayload to the MGS if the port
|
||||
// is equal to the configured value.
|
||||
uint32 modem_port = 3;
|
||||
|
||||
// GNSS port (fPort).
|
||||
// ChirpStack will forward the FrmPayload to MGS as GNSS payload if the
|
||||
// port is equal to the configured value.
|
||||
uint32 gnss_port = 4;
|
||||
// Forward FPorts.
|
||||
// Forward uplink messages matching the given FPorts to the MGS.
|
||||
repeated uint32 forward_f_ports = 16;
|
||||
|
||||
// Use rx time for GNSS resolving.
|
||||
// In case this is set to true, the MGS resolver will use the RX time of the
|
||||
// network instead of the timestamp included in the LR1110 payload.
|
||||
bool gnss_use_rx_time = 5;
|
||||
|
||||
// Use gateway location for GNSS resolving.
|
||||
// In the case this is set to true, ChirpStack will provide the location of
|
||||
// one of the gateways to the MGS resolver to aid the resolving process.
|
||||
// Disable this in case the gateway location is not accurate / incorrectly
|
||||
// configured as an incorrect location will cause the resolver to return an
|
||||
// error.
|
||||
bool gnss_use_gateway_location = 17;
|
||||
|
||||
// Parse TLV records.
|
||||
// If enabled, stream records (expected in TLV format) are scanned for GNSS
|
||||
// data (0x06 or 0x07). If found, ChirpStack will make an additional
|
||||
|
3
api/rust/src/common.rs
vendored
3
api/rust/src/common.rs
vendored
@ -2,7 +2,8 @@ use std::error::Error;
|
||||
use std::fmt;
|
||||
use std::str::FromStr;
|
||||
|
||||
tonic::include_proto!("common/common");
|
||||
include!(concat!(env!("OUT_DIR"), "/common/common.rs"));
|
||||
#[cfg(feature = "json")]
|
||||
include!(concat!(env!("OUT_DIR"), "/common/common.serde.rs"));
|
||||
|
||||
#[allow(clippy::from_over_into)]
|
||||
|
3
api/rust/src/gw.rs
vendored
3
api/rust/src/gw.rs
vendored
@ -2,7 +2,8 @@ use rand::Rng;
|
||||
use std::error::Error;
|
||||
use std::str::FromStr;
|
||||
|
||||
tonic::include_proto!("gw/gw");
|
||||
include!(concat!(env!("OUT_DIR"), "/gw/gw.rs"));
|
||||
#[cfg(feature = "json")]
|
||||
include!(concat!(env!("OUT_DIR"), "/gw/gw.serde.rs"));
|
||||
|
||||
#[allow(clippy::from_over_into)]
|
||||
|
3
api/rust/src/integration.rs
vendored
3
api/rust/src/integration.rs
vendored
@ -1,4 +1,5 @@
|
||||
tonic::include_proto!("integration/integration");
|
||||
include!(concat!(env!("OUT_DIR"), "/integration/integration.rs"));
|
||||
#[cfg(feature = "json")]
|
||||
include!(concat!(
|
||||
env!("OUT_DIR"),
|
||||
"/integration/integration.serde.rs"
|
||||
|
3
api/rust/src/internal.rs
vendored
3
api/rust/src/internal.rs
vendored
@ -1,2 +1,3 @@
|
||||
tonic::include_proto!("internal/internal");
|
||||
include!(concat!(env!("OUT_DIR"), "/internal/internal.rs"));
|
||||
#[cfg(feature = "json")]
|
||||
include!(concat!(env!("OUT_DIR"), "/internal/internal.serde.rs"));
|
||||
|
3
api/rust/src/meta.rs
vendored
3
api/rust/src/meta.rs
vendored
@ -1,2 +1,3 @@
|
||||
tonic::include_proto!("meta/meta");
|
||||
include!(concat!(env!("OUT_DIR"), "/meta/meta.rs"));
|
||||
#[cfg(feature = "json")]
|
||||
include!(concat!(env!("OUT_DIR"), "/meta/meta.serde.rs"));
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "backend"
|
||||
version = "4.3.0"
|
||||
version = "4.3.2"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
edition = "2018"
|
||||
publish = false
|
||||
@ -16,7 +16,7 @@ rand = "0.8"
|
||||
aes-kw = "0.2"
|
||||
reqwest = { version = "0.11", features = ["json", "rustls-tls"], default-features = false }
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
tokio = { version = "1.25", features = ["macros" ] }
|
||||
tokio = { version = "1.27", features = ["macros" ] }
|
||||
|
||||
# Development and testing
|
||||
[dev-dependencies]
|
||||
|
@ -2,8 +2,8 @@
|
||||
name = "chirpstack"
|
||||
description = "ChirpStack is an open-source LoRaWAN(TM) Network Server"
|
||||
repository = "https://github.com/chirpstack/chirpstack"
|
||||
homepage="https://www.chirpstack.io/"
|
||||
version = "4.3.0"
|
||||
homepage = "https://www.chirpstack.io/"
|
||||
version = "4.3.2"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
edition = "2021"
|
||||
publish = false
|
||||
@ -11,7 +11,7 @@ license = "MIT"
|
||||
|
||||
[dependencies]
|
||||
# CLI interface
|
||||
clap = { version = "4.1", features = ["derive"] }
|
||||
clap = { version = "4.2", features = ["derive"] }
|
||||
|
||||
# Configuration
|
||||
serde = { version = "1.0", features = ["derive", "rc"] }
|
||||
@ -23,16 +23,26 @@ handlebars = "4.3"
|
||||
|
||||
# Database
|
||||
validator = "0.16"
|
||||
diesel = { version = "2.0", features = [ "chrono", "postgres", "r2d2", "uuid", "serde_json", "numeric" ] }
|
||||
diesel = { version = "2.0", features = [
|
||||
"chrono",
|
||||
"postgres",
|
||||
"r2d2",
|
||||
"uuid",
|
||||
"serde_json",
|
||||
"numeric",
|
||||
] }
|
||||
diesel_migrations = { version = "2.0" }
|
||||
r2d2 = "0.8"
|
||||
bigdecimal = "0.3"
|
||||
redis = { version = "0.22", features = ["r2d2", "cluster"] }
|
||||
pq-sys = { version = "0.4.7", features = ["pkg-config"] }
|
||||
redis = { version = "0.23", features = ["r2d2", "cluster", "tls-rustls"] }
|
||||
pq-sys = { version = "0.4", features = ["pkg-config"] }
|
||||
|
||||
# Logging
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["fmt", "ansi"], default-features = true }
|
||||
tracing-subscriber = { version = "0.3", features = [
|
||||
"fmt",
|
||||
"ansi",
|
||||
], default-features = true }
|
||||
|
||||
# ChirpStack API definitions
|
||||
chirpstack_api = { path = "../api/rust", features = ["default", "internal"] }
|
||||
@ -40,12 +50,16 @@ lrwn = { path = "../lrwn" }
|
||||
backend = { path = "../backend" }
|
||||
|
||||
# HTTP
|
||||
reqwest = { version = "0.11", features = ["json"] }
|
||||
reqwest = { version = "0.11", features = [
|
||||
"json",
|
||||
"rustls-tls",
|
||||
], default-features = false }
|
||||
|
||||
# Integrations
|
||||
aws-types = "0.49"
|
||||
aws-config = "0.49"
|
||||
aws-sdk-sns = "0.19"
|
||||
aws-types = "0.55"
|
||||
aws-credential-types = "0.55"
|
||||
aws-config = { version = "0.55", default-features = false }
|
||||
aws-sdk-sns = "0.25"
|
||||
hmac = "0.12"
|
||||
sha2 = "0.10"
|
||||
urlencoding = "2.1"
|
||||
@ -54,26 +68,26 @@ gcp_auth = "0.7"
|
||||
lapin = "2.1"
|
||||
tokio-executor-trait = "2.1"
|
||||
tokio-reactor-trait = "1.1"
|
||||
rdkafka = { version = "0.29", features = ["cmake-build"]}
|
||||
rdkafka = { version = "0.29", features = ["cmake-build"] }
|
||||
|
||||
# gRPC and Protobuf
|
||||
tonic = "0.8"
|
||||
tonic-web = "0.5"
|
||||
tonic-reflection = "0.6"
|
||||
tokio = { version = "1.25", features = ["macros", "rt-multi-thread"] }
|
||||
tonic = "0.9"
|
||||
tonic-web = "0.9"
|
||||
tonic-reflection = "0.9"
|
||||
tokio = { version = "1.27", features = ["macros", "rt-multi-thread"] }
|
||||
tokio-stream = "0.1"
|
||||
prost-types = "0.11"
|
||||
prost = "0.11"
|
||||
pbjson-types = "0.5"
|
||||
|
||||
# gRPC and HTTP multiplexing
|
||||
warp = { version = "0.3", features = ["tls"] }
|
||||
warp = { version = "0.3", features = ["tls"], default-features = false }
|
||||
hyper = "0.14"
|
||||
tower = "0.4"
|
||||
futures = "0.3"
|
||||
http = "0.2"
|
||||
http-body = "0.4"
|
||||
rust-embed = "6.4"
|
||||
rust-embed = "6.6"
|
||||
mime_guess = "2.0"
|
||||
tower-http = { version = "0.4", features = ["trace", "auth"] }
|
||||
|
||||
@ -82,7 +96,7 @@ thiserror = "1.0"
|
||||
anyhow = "1.0"
|
||||
|
||||
# Authentication
|
||||
pbkdf2 = "0.11"
|
||||
pbkdf2 = { version = "0.12", features = ["simple"] }
|
||||
rand_core = { version = "0.6", features = ["std"] }
|
||||
jsonwebtoken = "8.2"
|
||||
openssl = { version = "0.10", features = ["vendored"] }
|
||||
@ -93,11 +107,16 @@ paho-mqtt = { version = "0.12", features = ["vendored-ssl"] }
|
||||
hex = "0.4"
|
||||
|
||||
# Codecs
|
||||
rquickjs = { version = "0.1", features = ["bindgen", "loader", "array-buffer", "chrono"] }
|
||||
rquickjs = { version = "0.1", features = [
|
||||
"bindgen",
|
||||
"loader",
|
||||
"array-buffer",
|
||||
"chrono",
|
||||
] }
|
||||
|
||||
# Misc
|
||||
lazy_static = "1.4"
|
||||
uuid = { version = "1.3", features = [ "v4", "serde" ] }
|
||||
uuid = { version = "1.3", features = ["v4", "serde"] }
|
||||
chrono = "0.4"
|
||||
async-trait = "0.1"
|
||||
aes = "0.8"
|
||||
@ -106,7 +125,7 @@ base64 = "0.21"
|
||||
async-recursion = "1.0"
|
||||
regex = "1.7"
|
||||
petgraph = "0.6"
|
||||
prometheus-client = "0.19"
|
||||
prometheus-client = "0.20"
|
||||
pin-project = "1.0"
|
||||
|
||||
# Development and testing
|
||||
@ -117,8 +136,16 @@ bytes = "1.4"
|
||||
# Debian packaging.
|
||||
[package.metadata.deb]
|
||||
assets = [
|
||||
["target/release/chirpstack", "usr/bin/", "755"],
|
||||
["configuration/*.toml", "etc/chirpstack/", "640"],
|
||||
[
|
||||
"target/release/chirpstack",
|
||||
"usr/bin/",
|
||||
"755",
|
||||
],
|
||||
[
|
||||
"configuration/*.toml",
|
||||
"etc/chirpstack/",
|
||||
"640",
|
||||
],
|
||||
]
|
||||
conf-files = [
|
||||
"/etc/chirpstack/chirpstack.toml",
|
||||
|
@ -37,11 +37,10 @@ impl Algorithm {
|
||||
}
|
||||
nb_step -= 1;
|
||||
} else {
|
||||
if tx_power_index > 0 {
|
||||
// Increase the tx-power.
|
||||
// (note that a decrease in index increases the tx-power)
|
||||
tx_power_index -= 1;
|
||||
}
|
||||
// Increase the tx-power.
|
||||
// (note that a decrease in index increases the tx-power)
|
||||
// Subtract only if > 0
|
||||
tx_power_index = tx_power_index.saturating_sub(1);
|
||||
nb_step += 1;
|
||||
}
|
||||
|
||||
|
@ -911,9 +911,9 @@ impl ApplicationService for Application {
|
||||
modem_geolocation_services: application::LoraCloudModemGeolocationServices {
|
||||
token: req_mgs.token.clone(),
|
||||
modem_enabled: req_mgs.modem_enabled,
|
||||
modem_port: req_mgs.modem_port,
|
||||
gnss_port: req_mgs.gnss_port,
|
||||
forward_f_ports: req_mgs.forward_f_ports.clone(),
|
||||
gnss_use_rx_time: req_mgs.gnss_use_rx_time,
|
||||
gnss_use_gateway_location: req_mgs.gnss_use_gateway_location,
|
||||
parse_tlv: req_mgs.parse_tlv,
|
||||
geolocation_buffer_ttl: req_mgs.geolocation_buffer_ttl,
|
||||
geolocation_min_buffer_size: req_mgs.geolocation_min_buffer_size,
|
||||
@ -928,6 +928,7 @@ impl ApplicationService for Application {
|
||||
geolocation_wifi_payload_field: req_mgs
|
||||
.geolocation_wifi_payload_field
|
||||
.clone(),
|
||||
..Default::default()
|
||||
},
|
||||
},
|
||||
),
|
||||
@ -972,9 +973,9 @@ impl ApplicationService for Application {
|
||||
modem_geolocation_services: Some(api::LoraCloudModemGeolocationServices {
|
||||
token: mgs.token.clone(),
|
||||
modem_enabled: mgs.modem_enabled,
|
||||
modem_port: mgs.modem_port,
|
||||
gnss_port: mgs.gnss_port,
|
||||
forward_f_ports: mgs.forward_f_ports.clone(),
|
||||
gnss_use_rx_time: mgs.gnss_use_rx_time,
|
||||
gnss_use_gateway_location: mgs.gnss_use_gateway_location,
|
||||
parse_tlv: mgs.parse_tlv,
|
||||
geolocation_buffer_ttl: mgs.geolocation_buffer_ttl,
|
||||
geolocation_min_buffer_size: mgs.geolocation_min_buffer_size,
|
||||
@ -1035,9 +1036,9 @@ impl ApplicationService for Application {
|
||||
modem_geolocation_services: application::LoraCloudModemGeolocationServices {
|
||||
token: req_mgs.token.clone(),
|
||||
modem_enabled: req_mgs.modem_enabled,
|
||||
modem_port: req_mgs.modem_port,
|
||||
gnss_port: req_mgs.gnss_port,
|
||||
forward_f_ports: req_mgs.forward_f_ports.clone(),
|
||||
gnss_use_rx_time: req_mgs.gnss_use_rx_time,
|
||||
gnss_use_gateway_location: req_mgs.gnss_use_gateway_location,
|
||||
parse_tlv: req_mgs.parse_tlv,
|
||||
geolocation_buffer_ttl: req_mgs.geolocation_buffer_ttl,
|
||||
geolocation_min_buffer_size: req_mgs.geolocation_min_buffer_size,
|
||||
@ -1052,6 +1053,7 @@ impl ApplicationService for Application {
|
||||
geolocation_wifi_payload_field: req_mgs
|
||||
.geolocation_wifi_payload_field
|
||||
.clone(),
|
||||
..Default::default()
|
||||
},
|
||||
},
|
||||
),
|
||||
@ -2610,9 +2612,9 @@ pub mod test {
|
||||
modem_geolocation_services: Some(api::LoraCloudModemGeolocationServices {
|
||||
token: "test-token".into(),
|
||||
modem_enabled: true,
|
||||
modem_port: 199,
|
||||
gnss_port: 198,
|
||||
forward_f_ports: vec![199, 198, 197, 192],
|
||||
gnss_use_rx_time: true,
|
||||
gnss_use_gateway_location: true,
|
||||
parse_tlv: true,
|
||||
geolocation_buffer_ttl: 300,
|
||||
geolocation_min_buffer_size: 2,
|
||||
@ -2647,9 +2649,9 @@ pub mod test {
|
||||
modem_geolocation_services: Some(api::LoraCloudModemGeolocationServices {
|
||||
token: "test-token".into(),
|
||||
modem_enabled: true,
|
||||
modem_port: 199,
|
||||
gnss_port: 198,
|
||||
forward_f_ports: vec![199, 198, 197, 192],
|
||||
gnss_use_rx_time: true,
|
||||
gnss_use_gateway_location: true,
|
||||
parse_tlv: true,
|
||||
geolocation_buffer_ttl: 300,
|
||||
geolocation_min_buffer_size: 2,
|
||||
@ -2674,9 +2676,9 @@ pub mod test {
|
||||
modem_geolocation_services: Some(api::LoraCloudModemGeolocationServices {
|
||||
token: "test-token-updated".into(),
|
||||
modem_enabled: true,
|
||||
modem_port: 199,
|
||||
gnss_port: 198,
|
||||
forward_f_ports: vec![199, 198, 197, 192],
|
||||
gnss_use_rx_time: true,
|
||||
gnss_use_gateway_location: true,
|
||||
parse_tlv: true,
|
||||
geolocation_buffer_ttl: 300,
|
||||
geolocation_min_buffer_size: 2,
|
||||
@ -2711,9 +2713,9 @@ pub mod test {
|
||||
modem_geolocation_services: Some(api::LoraCloudModemGeolocationServices {
|
||||
token: "test-token-updated".into(),
|
||||
modem_enabled: true,
|
||||
modem_port: 199,
|
||||
gnss_port: 198,
|
||||
forward_f_ports: vec![199, 198, 197, 192],
|
||||
gnss_use_rx_time: true,
|
||||
gnss_use_gateway_location: true,
|
||||
parse_tlv: true,
|
||||
geolocation_buffer_ttl: 300,
|
||||
geolocation_min_buffer_size: 2,
|
||||
|
@ -844,7 +844,7 @@ impl InternalService for Internal {
|
||||
out.rx1_delay = region_conf.network.rx1_delay as u32;
|
||||
out.rx1_dr_offset = region_conf.network.rx1_dr_offset as u32;
|
||||
out.rx2_dr = region_conf.network.rx2_dr as u32;
|
||||
out.rx2_frequency = region_conf.network.rx2_frequency as u32;
|
||||
out.rx2_frequency = region_conf.network.rx2_frequency;
|
||||
out.class_b_ping_slot_dr = region_conf.network.class_b.ping_slot_dr as u32;
|
||||
out.class_b_ping_slot_frequency = region_conf.network.class_b.ping_slot_frequency;
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ pub fn ul_meta_data_to_rx_info(ul_meta_data: &ULMetaData) -> Result<Vec<gw::Upli
|
||||
gateway_id: hex::encode(&gw_info.id),
|
||||
context: gw_info.ul_token.clone(),
|
||||
rssi: gw_info.rssi.unwrap_or_default() as i32,
|
||||
snr: gw_info.snr.unwrap_or_default() as f32,
|
||||
snr: gw_info.snr.unwrap_or_default(),
|
||||
location: if gw_info.lat.is_some() && gw_info.lon.is_some() {
|
||||
Some(common::Location {
|
||||
latitude: gw_info.lat.unwrap(),
|
||||
|
@ -11,12 +11,12 @@ pub async fn run() -> Result<()> {
|
||||
"Starting ChirpStack LoRaWAN Network Server"
|
||||
);
|
||||
|
||||
storage::setup().await?;
|
||||
region::setup()?;
|
||||
backend::setup()?;
|
||||
adr::setup().await?;
|
||||
integration::setup().await?;
|
||||
gateway::backend::setup().await?;
|
||||
storage::setup().await?;
|
||||
downlink::setup().await;
|
||||
api::setup().await?;
|
||||
|
||||
|
@ -287,7 +287,7 @@ impl CayenneLpp {
|
||||
val.fields.insert(
|
||||
format!("{}", k),
|
||||
pbjson_types::Value {
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v as f64)),
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v)),
|
||||
},
|
||||
);
|
||||
}
|
||||
@ -305,7 +305,7 @@ impl CayenneLpp {
|
||||
val.fields.insert(
|
||||
format!("{}", k),
|
||||
pbjson_types::Value {
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v as f64)),
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v)),
|
||||
},
|
||||
);
|
||||
}
|
||||
@ -359,7 +359,7 @@ impl CayenneLpp {
|
||||
val.fields.insert(
|
||||
format!("{}", k),
|
||||
pbjson_types::Value {
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v as f64)),
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v)),
|
||||
},
|
||||
);
|
||||
}
|
||||
@ -377,7 +377,7 @@ impl CayenneLpp {
|
||||
val.fields.insert(
|
||||
format!("{}", k),
|
||||
pbjson_types::Value {
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v as f64)),
|
||||
kind: Some(pbjson_types::value::Kind::NumberValue(*v)),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ impl serialize::ToSql<Text, Pg> for Codec
|
||||
where
|
||||
str: serialize::ToSql<Text, Pg>,
|
||||
{
|
||||
fn to_sql<'b>(&self, out: &mut serialize::Output<'b, '_, Pg>) -> serialize::Result {
|
||||
fn to_sql(&self, out: &mut serialize::Output<'_, '_, Pg>) -> serialize::Result {
|
||||
<str as serialize::ToSql<Text, Pg>>::to_sql(&self.to_string(), &mut out.reborrow())
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ lazy_static! {
|
||||
static ref CONFIG: Mutex<Arc<Configuration>> = Mutex::new(Arc::new(Default::default()));
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
#[derive(Default, Serialize, Deserialize, Clone)]
|
||||
#[serde(default)]
|
||||
pub struct Configuration {
|
||||
pub logging: Logging,
|
||||
@ -33,28 +33,6 @@ pub struct Configuration {
|
||||
pub regions: Vec<Region>,
|
||||
}
|
||||
|
||||
impl Default for Configuration {
|
||||
fn default() -> Self {
|
||||
Configuration {
|
||||
logging: Default::default(),
|
||||
postgresql: Default::default(),
|
||||
redis: Default::default(),
|
||||
api: Default::default(),
|
||||
gateway: Default::default(),
|
||||
network: Default::default(),
|
||||
monitoring: Default::default(),
|
||||
integration: Default::default(),
|
||||
codec: Default::default(),
|
||||
user_authentication: Default::default(),
|
||||
join_server: Default::default(),
|
||||
backend_interfaces: Default::default(),
|
||||
roaming: Default::default(),
|
||||
keks: Vec::new(),
|
||||
regions: vec![],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
#[serde(default)]
|
||||
pub struct Logging {
|
||||
@ -637,6 +615,7 @@ pub struct GatewayBackendMqtt {
|
||||
pub tls_key: String,
|
||||
#[serde(with = "humantime_serde")]
|
||||
pub keep_alive_interval: Duration,
|
||||
pub v4_migrate: bool,
|
||||
}
|
||||
|
||||
impl Default for GatewayBackendMqtt {
|
||||
@ -655,6 +634,7 @@ impl Default for GatewayBackendMqtt {
|
||||
tls_cert: "".into(),
|
||||
tls_key: "".into(),
|
||||
keep_alive_interval: Duration::from_secs(30),
|
||||
v4_migrate: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,27 +23,22 @@ pub fn select_downlink_gateway(
|
||||
min_snr_margin: f32,
|
||||
rx_info: &mut internal::DeviceGatewayRxInfo,
|
||||
) -> Result<internal::DeviceGatewayRxInfoItem> {
|
||||
rx_info.items = rx_info
|
||||
.items
|
||||
.iter()
|
||||
.filter(|rx_info| {
|
||||
if let Some(tenant_id) = &tenant_id {
|
||||
if tenant_id.as_bytes().to_vec() == rx_info.tenant_id {
|
||||
// The tenant is the same as the gateway tenant.
|
||||
true
|
||||
} else {
|
||||
// If tenant_id is different, filter out rx_info elements that have
|
||||
// is_private_down=true.
|
||||
!rx_info.is_private_down
|
||||
}
|
||||
rx_info.items.retain(|rx_info| {
|
||||
if let Some(tenant_id) = &tenant_id {
|
||||
if tenant_id.as_bytes().to_vec() == rx_info.tenant_id {
|
||||
// The tenant is the same as the gateway tenant.
|
||||
true
|
||||
} else {
|
||||
// If tenant_id is None, filter out rx_info elements that have
|
||||
// If tenant_id is different, filter out rx_info elements that have
|
||||
// is_private_down=true.
|
||||
!rx_info.is_private_down
|
||||
}
|
||||
})
|
||||
.cloned()
|
||||
.collect();
|
||||
} else {
|
||||
// If tenant_id is None, filter out rx_info elements that have
|
||||
// is_private_down=true.
|
||||
!rx_info.is_private_down
|
||||
}
|
||||
});
|
||||
|
||||
if rx_info.items.is_empty() {
|
||||
return Err(anyhow!(
|
||||
|
@ -113,7 +113,7 @@ impl JoinAccept<'_> {
|
||||
.gateway_tenant_id_map
|
||||
.get(&gw_id)
|
||||
.map(|v| v.into_bytes().to_vec())
|
||||
.unwrap_or_else(|| Vec::new()),
|
||||
.unwrap_or_else(Vec::new),
|
||||
}
|
||||
})
|
||||
.collect(),
|
||||
|
@ -92,7 +92,7 @@ impl PassiveRoamingDownlink {
|
||||
.gateway_tenant_id_map
|
||||
.get(&gw_id)
|
||||
.map(|v| v.into_bytes().to_vec())
|
||||
.unwrap_or_else(|| Vec::new()),
|
||||
.unwrap_or_else(Vec::new),
|
||||
}
|
||||
})
|
||||
.collect(),
|
||||
@ -127,7 +127,7 @@ impl PassiveRoamingDownlink {
|
||||
let dl_freq_1 = self.dl_meta_data.dl_freq_1.unwrap();
|
||||
let dl_freq_1 = (dl_freq_1 * 1_000_000.0) as u32;
|
||||
let data_rate_1 = self.dl_meta_data.data_rate_1.unwrap();
|
||||
let data_rate_1 = self.region_conf.get_data_rate(data_rate_1 as u8)?;
|
||||
let data_rate_1 = self.region_conf.get_data_rate(data_rate_1)?;
|
||||
let rx_delay_1 = self.dl_meta_data.rx_delay_1.unwrap();
|
||||
|
||||
let mut tx_info = gw::DownlinkTxInfo {
|
||||
@ -169,7 +169,7 @@ impl PassiveRoamingDownlink {
|
||||
let dl_freq_2 = self.dl_meta_data.dl_freq_2.unwrap();
|
||||
let dl_freq_2 = (dl_freq_2 * 1_000_000.0) as u32;
|
||||
let data_rate_2 = self.dl_meta_data.data_rate_2.unwrap();
|
||||
let data_rate_2 = self.region_conf.get_data_rate(data_rate_2 as u8)?;
|
||||
let data_rate_2 = self.region_conf.get_data_rate(data_rate_2)?;
|
||||
let rx_delay_1 = self.dl_meta_data.rx_delay_1.unwrap();
|
||||
|
||||
let mut tx_info = gw::DownlinkTxInfo {
|
||||
|
@ -69,6 +69,7 @@ pub struct MqttBackend<'a> {
|
||||
client: mqtt::AsyncClient,
|
||||
templates: handlebars::Handlebars<'a>,
|
||||
qos: usize,
|
||||
v4_migrate: bool,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
@ -197,6 +198,7 @@ impl<'a> MqttBackend<'a> {
|
||||
client,
|
||||
templates,
|
||||
qos: conf.qos,
|
||||
v4_migrate: conf.v4_migrate,
|
||||
};
|
||||
|
||||
// connect
|
||||
@ -209,12 +211,14 @@ impl<'a> MqttBackend<'a> {
|
||||
// Consumer loop.
|
||||
tokio::spawn({
|
||||
let region_config_id = region_config_id.to_string();
|
||||
let v4_migrate = conf.v4_migrate;
|
||||
|
||||
async move {
|
||||
info!("Starting MQTT consumer loop");
|
||||
while let Some(msg_opt) = stream.next().await {
|
||||
if let Some(msg) = msg_opt {
|
||||
message_callback(®ion_config_id, region_common_name, msg).await;
|
||||
message_callback(v4_migrate, ®ion_config_id, region_common_name, msg)
|
||||
.await;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -271,7 +275,10 @@ impl GatewayBackend for MqttBackend<'_> {
|
||||
.inc();
|
||||
let topic = self.get_command_topic(&df.gateway_id, "down")?;
|
||||
let mut df = df.clone();
|
||||
df.v4_migrate();
|
||||
|
||||
if self.v4_migrate {
|
||||
df.v4_migrate();
|
||||
}
|
||||
|
||||
let json = gateway_is_json(&df.gateway_id);
|
||||
let b = match json {
|
||||
@ -313,6 +320,7 @@ impl GatewayBackend for MqttBackend<'_> {
|
||||
}
|
||||
|
||||
async fn message_callback(
|
||||
v4_migrate: bool,
|
||||
region_config_id: &str,
|
||||
region_common_name: CommonName,
|
||||
msg: mqtt::Message,
|
||||
@ -357,7 +365,10 @@ async fn message_callback(
|
||||
true => serde_json::from_slice(b)?,
|
||||
false => chirpstack_api::gw::UplinkFrame::decode(&mut Cursor::new(b))?,
|
||||
};
|
||||
event.v4_migrate();
|
||||
|
||||
if v4_migrate {
|
||||
event.v4_migrate();
|
||||
}
|
||||
|
||||
if let Some(rx_info) = &mut event.rx_info {
|
||||
set_gateway_json(&rx_info.gateway_id, json);
|
||||
@ -381,7 +392,11 @@ async fn message_callback(
|
||||
true => serde_json::from_slice(b)?,
|
||||
false => chirpstack_api::gw::GatewayStats::decode(&mut Cursor::new(b))?,
|
||||
};
|
||||
event.v4_migrate();
|
||||
|
||||
if v4_migrate {
|
||||
event.v4_migrate();
|
||||
}
|
||||
|
||||
event
|
||||
.metadata
|
||||
.insert("region_config_id".to_string(), region_config_id.to_string());
|
||||
@ -401,7 +416,11 @@ async fn message_callback(
|
||||
true => serde_json::from_slice(b)?,
|
||||
false => chirpstack_api::gw::DownlinkTxAck::decode(&mut Cursor::new(b))?,
|
||||
};
|
||||
event.v4_migrate();
|
||||
|
||||
if v4_migrate {
|
||||
event.v4_migrate();
|
||||
}
|
||||
|
||||
set_gateway_json(&event.gateway_id, json);
|
||||
tokio::spawn(downlink::tx_ack::TxAck::handle(event));
|
||||
} else {
|
||||
|
@ -2,11 +2,10 @@ use std::collections::HashMap;
|
||||
|
||||
use anyhow::Result;
|
||||
use async_trait::async_trait;
|
||||
use aws_sdk_sns::model::MessageAttributeValue;
|
||||
use aws_types::credentials::future;
|
||||
use aws_types::credentials::ProvideCredentials;
|
||||
use aws_credential_types::provider::{future, ProvideCredentials, Result as CredentialsResult};
|
||||
use aws_credential_types::Credentials;
|
||||
use aws_sdk_sns::types::MessageAttributeValue;
|
||||
use aws_types::region::Region;
|
||||
use aws_types::{credentials, Credentials};
|
||||
use base64::{engine::general_purpose, Engine as _};
|
||||
use prost::Message;
|
||||
use tracing::{info, trace};
|
||||
@ -30,7 +29,7 @@ impl StaticCredentials {
|
||||
}
|
||||
}
|
||||
|
||||
fn credentials(&self) -> credentials::Result {
|
||||
fn credentials(&self) -> CredentialsResult {
|
||||
Ok(Credentials::new(
|
||||
self.aws_access_key_id.clone(),
|
||||
self.aws_secret_access_key.clone(),
|
||||
|
@ -57,10 +57,15 @@ impl Integration {
|
||||
.query(&[("event", event)])
|
||||
.headers(headers.clone())
|
||||
.send()
|
||||
.await?;
|
||||
.await;
|
||||
|
||||
match res.error_for_status() {
|
||||
Ok(_) => {}
|
||||
match res {
|
||||
Ok(res) => match res.error_for_status() {
|
||||
Ok(_) => {}
|
||||
Err(e) => {
|
||||
error!(event = %event, url = %url, error = %e, "Posting event failed");
|
||||
}
|
||||
},
|
||||
Err(e) => {
|
||||
error!(event = %event, url = %url, error = %e, "Posting event failed");
|
||||
}
|
||||
|
@ -489,7 +489,6 @@ pub struct AntennaLocation {
|
||||
#[derive(Clone)]
|
||||
pub enum UplinkMsg {
|
||||
UpDf(UplinkMsgUpDf),
|
||||
Modem(UplinkMsgModem),
|
||||
Gnss(UplinkMsgGnss),
|
||||
Wifi(UplinkMsgWifi),
|
||||
Joining(UplinkMsgJoining),
|
||||
@ -502,7 +501,6 @@ impl Serialize for UplinkMsg {
|
||||
{
|
||||
match self {
|
||||
UplinkMsg::UpDf(v) => v.serialize(serializer),
|
||||
UplinkMsg::Modem(v) => v.serialize(serializer),
|
||||
UplinkMsg::Gnss(v) => v.serialize(serializer),
|
||||
UplinkMsg::Wifi(v) => v.serialize(serializer),
|
||||
UplinkMsg::Joining(v) => v.serialize(serializer),
|
||||
@ -556,15 +554,14 @@ impl<'de> Visitor<'de> for Eui64WrapperVisitor {
|
||||
E: de::Error,
|
||||
{
|
||||
let s = value.to_string().replace('-', "");
|
||||
let b = hex::decode(&s).map_err(|e| E::custom(format!("{}", e)))?;
|
||||
let b = hex::decode(s).map_err(|e| E::custom(format!("{}", e)))?;
|
||||
let eui64 = EUI64::from_slice(&b).map_err(|e| E::custom(format!("{}", e)))?;
|
||||
Ok(Eui64Wrapper(eui64))
|
||||
}
|
||||
}
|
||||
|
||||
// UplinkMsgUpDf implements the LoRa Cloud UplinkMsg object.
|
||||
// The purpose of this message is to create a downlink opportunity for LoRa Cloud.
|
||||
#[derive(Serialize, Clone)]
|
||||
#[derive(Default, Serialize, Clone)]
|
||||
pub struct UplinkMsgUpDf {
|
||||
#[serde(rename = "msgtype")]
|
||||
pub msg_type: String, // must be set to "updf"
|
||||
@ -573,21 +570,16 @@ pub struct UplinkMsgUpDf {
|
||||
pub port: u8,
|
||||
pub dr: u8,
|
||||
pub freq: u32,
|
||||
pub timestamp: f64, // senconds since UTC
|
||||
pub payload: String, // leave this blank
|
||||
}
|
||||
|
||||
// UplinkMsgModem implements the LoRa Cloud UplinkMsg object containing a modem payload.
|
||||
#[derive(Serialize, Clone)]
|
||||
pub struct UplinkMsgModem {
|
||||
#[serde(rename = "msgtype")]
|
||||
pub msg_type: String, // must be set to "modem"
|
||||
pub payload: String, // HEX format
|
||||
#[serde(rename = "fcnt")]
|
||||
pub f_cnt: u32,
|
||||
pub timestamp: f64, // seconds since UTC
|
||||
pub dr: u8,
|
||||
pub freq: u32,
|
||||
pub timestamp: f64, // senconds since UTC
|
||||
pub payload: String,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub gnss_capture_time: Option<f64>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub gnss_capture_time_accuracy: Option<f64>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub gnss_assist_position: Option<Vec<f64>>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub gnss_assist_altitude: Option<f64>,
|
||||
}
|
||||
|
||||
// UplinkMsgGnss implements the LoRa Cloud UplinkMsg object containing a gnss payload.
|
||||
@ -696,6 +688,7 @@ pub mod test {
|
||||
freq: 868100000,
|
||||
timestamp: 12345.0,
|
||||
payload: "".into(),
|
||||
..Default::default()
|
||||
}),
|
||||
};
|
||||
let json_s = serde_json::to_string(&updf).unwrap();
|
||||
|
@ -59,31 +59,72 @@ impl Integration {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn modem_modem(
|
||||
async fn modem_updf(
|
||||
&self,
|
||||
vars: &HashMap<String, String>,
|
||||
pl: &integration::UplinkEvent,
|
||||
) -> Result<()> {
|
||||
let di = pl.device_info.as_ref().unwrap();
|
||||
|
||||
info!(dev_eui = %di.dev_eui, "Forwarding modem message");
|
||||
info!(dev_eui = %di.dev_eui, "Forwarding updf message");
|
||||
let ts: DateTime<Utc> = pl.time.as_ref().unwrap().clone().try_into()?;
|
||||
let dev_eui = EUI64::from_str(&di.dev_eui)?;
|
||||
|
||||
let req = client::UplinkRequest {
|
||||
dev_eui: client::Eui64Wrapper::new(&dev_eui),
|
||||
uplink: client::UplinkMsg::Modem(client::UplinkMsgModem {
|
||||
msg_type: "modem".into(),
|
||||
payload: hex::encode(&pl.data),
|
||||
f_cnt: pl.f_cnt,
|
||||
timestamp: ts.timestamp_millis() as f64 / 1000.0,
|
||||
dr: pl.dr as u8,
|
||||
freq: pl.tx_info.as_ref().unwrap().frequency,
|
||||
uplink: client::UplinkMsg::UpDf({
|
||||
let mut msg_updf = client::UplinkMsgUpDf {
|
||||
msg_type: "updf".into(),
|
||||
f_cnt: pl.f_cnt,
|
||||
port: pl.f_port as u8,
|
||||
dr: pl.dr as u8,
|
||||
freq: pl.tx_info.as_ref().unwrap().frequency,
|
||||
timestamp: ts.timestamp_millis() as f64 / 1000.0,
|
||||
payload: hex::encode(&pl.data),
|
||||
gnss_capture_time: match self.config.modem_geolocation_services.gnss_use_rx_time
|
||||
{
|
||||
false => None,
|
||||
true => {
|
||||
let ts = match get_time_since_gps_epoch_chrono(&pl.rx_info) {
|
||||
Some(v) => v,
|
||||
None => Utc::now().to_gps_time(),
|
||||
};
|
||||
|
||||
// Compensate for gnss scanning time and uplink.
|
||||
let ts = ts - Duration::seconds(6);
|
||||
Some(ts.num_seconds() as f64)
|
||||
}
|
||||
},
|
||||
gnss_capture_time_accuracy: match self
|
||||
.config
|
||||
.modem_geolocation_services
|
||||
.gnss_use_rx_time
|
||||
{
|
||||
false => None,
|
||||
true => Some(15.0),
|
||||
},
|
||||
gnss_assist_position: None,
|
||||
gnss_assist_altitude: None,
|
||||
};
|
||||
|
||||
if self
|
||||
.config
|
||||
.modem_geolocation_services
|
||||
.gnss_use_gateway_location
|
||||
{
|
||||
if let Some(loc) = get_start_location(&pl.rx_info) {
|
||||
msg_updf.gnss_assist_position = Some(vec![loc.latitude, loc.longitude]);
|
||||
msg_updf.gnss_assist_altitude = Some(loc.altitude);
|
||||
}
|
||||
}
|
||||
|
||||
msg_updf
|
||||
}),
|
||||
};
|
||||
|
||||
let resp = self.client.uplink_send(&req).await?;
|
||||
self.handle_modem_response(vars, pl, &resp, common::LocationSource::Unknown)
|
||||
|
||||
self.handle_modem_response(vars, pl, &resp, common::LocationSource::GeoResolverGnss)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
@ -133,9 +174,15 @@ impl Integration {
|
||||
gnss_assist_altitude: None,
|
||||
};
|
||||
|
||||
if let Some(loc) = get_start_location(&pl.rx_info) {
|
||||
msg_gnss.gnss_assist_position = Some(vec![loc.latitude, loc.longitude]);
|
||||
msg_gnss.gnss_assist_altitude = Some(loc.altitude);
|
||||
if self
|
||||
.config
|
||||
.modem_geolocation_services
|
||||
.gnss_use_gateway_location
|
||||
{
|
||||
if let Some(loc) = get_start_location(&pl.rx_info) {
|
||||
msg_gnss.gnss_assist_position = Some(vec![loc.latitude, loc.longitude]);
|
||||
msg_gnss.gnss_assist_altitude = Some(loc.altitude);
|
||||
}
|
||||
}
|
||||
|
||||
msg_gnss
|
||||
@ -169,6 +216,7 @@ impl Integration {
|
||||
freq: pl.tx_info.as_ref().unwrap().frequency,
|
||||
timestamp: ts.timestamp_millis() as f64 / 1000.0,
|
||||
payload: "".into(),
|
||||
..Default::default()
|
||||
}),
|
||||
};
|
||||
|
||||
@ -698,12 +746,13 @@ impl IntegrationTrait for Integration {
|
||||
pl: &integration::UplinkEvent,
|
||||
) -> Result<()> {
|
||||
if self.config.modem_geolocation_services.modem_enabled {
|
||||
if pl.f_port == self.config.modem_geolocation_services.modem_port {
|
||||
// Modem payloads.
|
||||
self.modem_modem(vars, pl).await?;
|
||||
} else if pl.f_port == self.config.modem_geolocation_services.gnss_port {
|
||||
// GNSS payloads.
|
||||
self.modem_gnss(vars, pl).await?;
|
||||
if self
|
||||
.config
|
||||
.modem_geolocation_services
|
||||
.forward_f_ports
|
||||
.contains(&pl.f_port)
|
||||
{
|
||||
self.modem_updf(vars, pl).await?;
|
||||
} else {
|
||||
// Only forward meta-data.
|
||||
self.modem_metadata(vars, pl).await?;
|
||||
|
@ -129,7 +129,7 @@ impl serialize::ToSql<Text, Pg> for IntegrationKind
|
||||
where
|
||||
str: serialize::ToSql<Text, Pg>,
|
||||
{
|
||||
fn to_sql<'b>(&self, out: &mut serialize::Output<'b, '_, Pg>) -> serialize::Result {
|
||||
fn to_sql(&self, out: &mut serialize::Output<'_, '_, Pg>) -> serialize::Result {
|
||||
<str as serialize::ToSql<Text, Pg>>::to_sql(&self.to_string(), &mut out.reborrow())
|
||||
}
|
||||
}
|
||||
@ -158,7 +158,7 @@ impl deserialize::FromSql<Jsonb, Pg> for IntegrationConfiguration {
|
||||
}
|
||||
|
||||
impl serialize::ToSql<Jsonb, Pg> for IntegrationConfiguration {
|
||||
fn to_sql<'b>(&self, out: &mut serialize::Output<'b, '_, Pg>) -> serialize::Result {
|
||||
fn to_sql(&self, out: &mut serialize::Output<'_, '_, Pg>) -> serialize::Result {
|
||||
let value = serde_json::to_value(self)?;
|
||||
<serde_json::Value as serialize::ToSql<Jsonb, Pg>>::to_sql(&value, &mut out.reborrow())
|
||||
}
|
||||
@ -200,13 +200,16 @@ pub struct LoraCloudConfiguration {
|
||||
pub modem_geolocation_services: LoraCloudModemGeolocationServices,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[serde(default)]
|
||||
pub struct LoraCloudModemGeolocationServices {
|
||||
pub token: String,
|
||||
pub modem_enabled: bool,
|
||||
pub modem_port: u32,
|
||||
pub gnss_port: u32,
|
||||
pub forward_f_ports: Vec<u32>,
|
||||
pub gnss_use_rx_time: bool,
|
||||
pub gnss_use_gateway_location: bool,
|
||||
pub parse_tlv: bool,
|
||||
pub geolocation_buffer_ttl: u32,
|
||||
pub geolocation_min_buffer_size: u32,
|
||||
@ -466,7 +469,7 @@ pub async fn get_integration(
|
||||
let application_id = *application_id;
|
||||
move || -> Result<Integration, Error> {
|
||||
let mut c = get_db_conn()?;
|
||||
let i: Integration = application_integration::dsl::application_integration
|
||||
let mut i: Integration = application_integration::dsl::application_integration
|
||||
.filter(
|
||||
application_integration::dsl::application_id
|
||||
.eq(application_id)
|
||||
@ -474,6 +477,19 @@ pub async fn get_integration(
|
||||
)
|
||||
.first(&mut c)
|
||||
.map_err(|e| Error::from_diesel(e, application_id.to_string()))?;
|
||||
|
||||
// For backwards compatibiliy
|
||||
if let IntegrationConfiguration::LoraCloud(conf) = &mut i.configuration {
|
||||
if conf.modem_geolocation_services.forward_f_ports.is_empty() {
|
||||
conf.modem_geolocation_services.forward_f_ports = vec![
|
||||
conf.modem_geolocation_services.modem_port,
|
||||
conf.modem_geolocation_services.gnss_port,
|
||||
197,
|
||||
192,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Ok(i)
|
||||
}
|
||||
})
|
||||
|
@ -91,7 +91,7 @@ impl deserialize::FromSql<Jsonb, Pg> for Measurements {
|
||||
}
|
||||
|
||||
impl serialize::ToSql<Jsonb, Pg> for Measurements {
|
||||
fn to_sql<'b>(&self, out: &mut serialize::Output<'b, '_, Pg>) -> serialize::Result {
|
||||
fn to_sql(&self, out: &mut serialize::Output<'_, '_, Pg>) -> serialize::Result {
|
||||
let value = serde_json::to_value(&self.0)?;
|
||||
<serde_json::Value as serialize::ToSql<Jsonb, Pg>>::to_sql(&value, &mut out.reborrow())
|
||||
}
|
||||
|
@ -219,20 +219,25 @@ pub async fn setup() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get_db_pool() -> PgPool {
|
||||
pub fn get_db_pool() -> Result<PgPool> {
|
||||
let pool_r = PG_POOL.read().unwrap();
|
||||
let pool = pool_r.as_ref().unwrap().clone();
|
||||
pool
|
||||
let pool = pool_r
|
||||
.as_ref()
|
||||
.ok_or_else(|| anyhow!("PostgreSQL connection pool is not initialized (yet)"))?
|
||||
.clone();
|
||||
Ok(pool)
|
||||
}
|
||||
|
||||
pub fn get_db_conn() -> Result<PgPoolConnection> {
|
||||
let pool = get_db_pool();
|
||||
pool.get().context("Get connection from pool error")
|
||||
let pool = get_db_pool()?;
|
||||
Ok(pool.get()?)
|
||||
}
|
||||
|
||||
pub fn get_redis_conn() -> Result<RedisPoolConnection> {
|
||||
let pool_r = REDIS_POOL.read().unwrap();
|
||||
let pool = pool_r.as_ref().unwrap();
|
||||
let pool = pool_r
|
||||
.as_ref()
|
||||
.ok_or_else(|| anyhow!("Redis connection pool is not initialized (yet)"))?;
|
||||
Ok(match pool {
|
||||
RedisPool::Client(v) => RedisPoolConnection::Client(v.get()?),
|
||||
RedisPool::ClusterClient(v) => RedisPoolConnection::ClusterClient(v.get()?),
|
||||
|
@ -50,7 +50,7 @@ pub async fn global_search(
|
||||
let search = search.to_string();
|
||||
let (query, tags) = parse_search_query(&search);
|
||||
let query = format!("%{}%", query);
|
||||
let tags = serde_json::to_value(&tags).context("To serde_json value")?;
|
||||
let tags = serde_json::to_value(tags).context("To serde_json value")?;
|
||||
|
||||
move || -> Result<Vec<SearchResult>, Error> {
|
||||
let mut c = get_db_conn()?;
|
||||
|
@ -288,7 +288,7 @@ impl Data {
|
||||
.gateway_tenant_id_map
|
||||
.get(&gw_id)
|
||||
.map(|v| v.into_bytes().to_vec())
|
||||
.unwrap_or_else(|| Vec::new()),
|
||||
.unwrap_or_else(Vec::new),
|
||||
}
|
||||
})
|
||||
.collect(),
|
||||
|
@ -375,13 +375,13 @@ fn filter_rx_info_by_tenant_id(tenant_id: Uuid, uplink: &mut UplinkFrameSet) ->
|
||||
.gateway_private_up_map
|
||||
.get(&gateway_id)
|
||||
.cloned()
|
||||
.unwrap_or_else(|| true)
|
||||
.unwrap_or(true)
|
||||
|| force_gws_private)
|
||||
|| uplink
|
||||
.gateway_tenant_id_map
|
||||
.get(&gateway_id)
|
||||
.cloned()
|
||||
.unwrap_or_else(|| Uuid::new_v4())
|
||||
.unwrap_or_else(Uuid::new_v4)
|
||||
== tenant_id
|
||||
{
|
||||
rx_info_set.push(rx_info.clone());
|
||||
|
@ -3,7 +3,7 @@ name = "lrwn"
|
||||
description = "Library for encoding / decoding LoRaWAN frames."
|
||||
homepage = "https://www.chirpstack.io"
|
||||
license = "MIT"
|
||||
version = "4.3.0"
|
||||
version = "4.3.2"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
edition = "2018"
|
||||
repository = "https://github.com/chirpstack/chirpstack"
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM alpine:3.17.0
|
||||
FROM alpine:3.17.3
|
||||
|
||||
ENV PROJECT_PATH=/chirpstack/ui
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "chirpstack-ui",
|
||||
"version": "4.3.0",
|
||||
"version": "4.3.2",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^6.0.0",
|
||||
@ -28,6 +28,7 @@
|
||||
"codemirror": "^5.65.3",
|
||||
"google-protobuf": "^3.21.2",
|
||||
"grpc-web": "^1.4.2",
|
||||
"js-file-download": "^0.4.12",
|
||||
"leaflet": "^1.7.1",
|
||||
"leaflet.awesome-markers": "^2.0.5",
|
||||
"react": "^17.0.2",
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 28 KiB |
@ -1,8 +1,9 @@
|
||||
import React, { Component } from "react";
|
||||
import moment from "moment";
|
||||
import JSONTreeOriginal from "react-json-tree";
|
||||
import fileDownload from "js-file-download";
|
||||
|
||||
import { Tag, Drawer, Button, Table, Spin } from "antd";
|
||||
import { Tag, Drawer, Button, Table, Spin, Space } from "antd";
|
||||
import { ZoomInOutlined } from "@ant-design/icons";
|
||||
|
||||
import { LogItem } from "@chirpstack/chirpstack-api-grpc-web/api/internal_pb";
|
||||
@ -14,6 +15,7 @@ interface IProps {
|
||||
interface IState {
|
||||
drawerOpen: boolean;
|
||||
body: any;
|
||||
drawerTitle: any;
|
||||
}
|
||||
|
||||
class LogTable extends Component<IProps, IState> {
|
||||
@ -23,6 +25,7 @@ class LogTable extends Component<IProps, IState> {
|
||||
this.state = {
|
||||
drawerOpen: false,
|
||||
body: null,
|
||||
drawerTitle: null,
|
||||
};
|
||||
}
|
||||
|
||||
@ -32,15 +35,29 @@ class LogTable extends Component<IProps, IState> {
|
||||
});
|
||||
};
|
||||
|
||||
onDrawerOpen = (body: any) => {
|
||||
onDrawerOpen = (time: any, body: any) => {
|
||||
let ts = new Date(0);
|
||||
ts.setUTCSeconds(time.seconds);
|
||||
let drawerTitle = moment(ts).format("YYYY-MM-DD HH:mm:ss");
|
||||
|
||||
return () => {
|
||||
this.setState({
|
||||
body: body,
|
||||
drawerTitle: drawerTitle,
|
||||
drawerOpen: true,
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
downloadSingleFrame = () => {
|
||||
fileDownload(JSON.stringify(JSON.parse(this.state.body), null, 4), "single-log.json", "application/json");
|
||||
};
|
||||
|
||||
downloadFrames = () => {
|
||||
let items = this.props.logs.map((l, i) => JSON.parse(l.getBody()));
|
||||
fileDownload(JSON.stringify(items, null, 4), "log.json");
|
||||
};
|
||||
|
||||
render() {
|
||||
let items = this.props.logs.map((l, i) => l.toObject());
|
||||
let body = JSON.parse(this.state.body);
|
||||
@ -67,13 +84,14 @@ class LogTable extends Component<IProps, IState> {
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Space direction="vertical" size="large" style={{ width: "100%" }}>
|
||||
<Drawer
|
||||
title="Details"
|
||||
title={`Details: ${this.state.drawerTitle}`}
|
||||
placement="right"
|
||||
width={650}
|
||||
onClose={this.onDrawerClose}
|
||||
visible={this.state.drawerOpen}
|
||||
extra={<Button onClick={this.downloadSingleFrame}>Download</Button>}
|
||||
>
|
||||
<JSONTreeOriginal
|
||||
data={body}
|
||||
@ -85,9 +103,10 @@ class LogTable extends Component<IProps, IState> {
|
||||
/>
|
||||
</Drawer>
|
||||
{items.length !== 0 && (
|
||||
<div className="spinner">
|
||||
<Spin />
|
||||
</div>
|
||||
<Space direction="horizontal" style={{ float: "right" }} size="large">
|
||||
<Spin size="small" />
|
||||
<Button onClick={this.downloadFrames}>Download</Button>
|
||||
</Space>
|
||||
)}
|
||||
<Table
|
||||
showHeader={false}
|
||||
@ -117,7 +136,7 @@ class LogTable extends Component<IProps, IState> {
|
||||
type="primary"
|
||||
shape="round"
|
||||
size="small"
|
||||
onClick={this.onDrawerOpen(obj.body)}
|
||||
onClick={this.onDrawerOpen(obj.time, obj.body)}
|
||||
>
|
||||
{text}
|
||||
</Button>
|
||||
@ -144,7 +163,7 @@ class LogTable extends Component<IProps, IState> {
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</Space>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -111,3 +111,11 @@ pre {
|
||||
.CodeMirror {
|
||||
height: 600px;
|
||||
}
|
||||
|
||||
.ant-drawer {
|
||||
padding-top: 64px;
|
||||
}
|
||||
|
||||
.ant-drawer-body {
|
||||
padding-bottom: 88px; /* 64 + 24 */
|
||||
}
|
||||
|
@ -34,9 +34,8 @@ class CreateLoRaCloudIntegration extends Component<IProps> {
|
||||
render() {
|
||||
let i = new LoraCloudIntegration();
|
||||
let mgs = new LoraCloudModemGeolocationServices();
|
||||
mgs.setModemPort(199);
|
||||
mgs.setGnssPort(198);
|
||||
mgs.setModemEnabled(true);
|
||||
mgs.setForwardFPortsList([192, 197, 198, 199]);
|
||||
|
||||
i.setModemGeolocationServices(mgs);
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import React, { Component } from "react";
|
||||
|
||||
import { Form, Input, InputNumber, Switch, Button, Tabs, Collapse } from "antd";
|
||||
import { MinusCircleOutlined, PlusOutlined } from "@ant-design/icons";
|
||||
|
||||
import {
|
||||
LoraCloudIntegration,
|
||||
@ -56,9 +57,9 @@ class LoRaCloudIntegrationForm extends Component<IProps, IState> {
|
||||
if (mgsv !== undefined) {
|
||||
mgs.setToken(mgsv.token);
|
||||
mgs.setModemEnabled(mgsv.modemEnabled);
|
||||
mgs.setModemPort(mgsv.modemPort);
|
||||
mgs.setGnssPort(mgsv.gnssPort);
|
||||
mgs.setForwardFPortsList(mgsv.forwardFPortsList);
|
||||
mgs.setGnssUseRxTime(mgsv.gnssUseRxTime);
|
||||
mgs.setGnssUseGatewayLocation(mgsv.gnssUseGatewayLocation);
|
||||
mgs.setParseTlv(mgsv.parseTlv);
|
||||
mgs.setGeolocationBufferTtl(mgsv.geolocationBufferTtl);
|
||||
mgs.setGeolocationMinBufferSize(mgsv.geolocationMinBufferSize);
|
||||
@ -119,7 +120,7 @@ class LoRaCloudIntegrationForm extends Component<IProps, IState> {
|
||||
tooltip="This token can be obtained from loracloud.com"
|
||||
rules={[{ required: true, message: "Please enter a token!" }]}
|
||||
>
|
||||
<Input />
|
||||
<Input type="password" />
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
name={["modemGeolocationServices", "modemEnabled"]}
|
||||
@ -129,24 +130,26 @@ class LoRaCloudIntegrationForm extends Component<IProps, IState> {
|
||||
<Switch onChange={this.onModemEnabledChange} />
|
||||
</Form.Item>
|
||||
{this.state.modemEnabled && (
|
||||
<Form.Item
|
||||
label="GNSS port (FPort)"
|
||||
name={["modemGeolocationServices", "gnssPort"]}
|
||||
tooltip="ChirpStack will only forward the FRMPayload for GNSS geolocation to LoRa Cloud when the uplink matches the configured port."
|
||||
rules={[{ required: true, message: "Please enter a port number!" }]}
|
||||
>
|
||||
<InputNumber min={0} max={255} />
|
||||
</Form.Item>
|
||||
)}
|
||||
{this.state.modemEnabled && (
|
||||
<Form.Item
|
||||
label="Modem port (FPort)"
|
||||
name={["modemGeolocationServices", "modemPort"]}
|
||||
tooltip="ChirpStack will only forward the FRMPayload to LoRa Cloud when the uplink matches the configured port."
|
||||
rules={[{ required: true, message: "Please enter a port number!" }]}
|
||||
>
|
||||
<InputNumber min={0} max={255} />
|
||||
</Form.Item>
|
||||
<Form.List name={["modemGeolocationServices", "forwardFPortsList"]}>
|
||||
{(fields, { add, remove }) => (
|
||||
<Form.Item label="Forward messages on these FPorts to LoRa Cloud">
|
||||
{fields.map((field, index) => (
|
||||
<Form.Item
|
||||
{...field}
|
||||
rules={[{ required: true, message: "Please a FPort value!" }]}
|
||||
style={{ display: "inline-block", width: "100px", marginRight: "24px" }}
|
||||
>
|
||||
<InputNumber
|
||||
min={1}
|
||||
max={255}
|
||||
addonAfter={<MinusCircleOutlined onClick={() => remove(index)} />}
|
||||
/>
|
||||
</Form.Item>
|
||||
))}
|
||||
<Button type="dashed" onClick={() => add()} icon={<PlusOutlined />} />
|
||||
</Form.Item>
|
||||
)}
|
||||
</Form.List>
|
||||
)}
|
||||
{this.state.modemEnabled && (
|
||||
<Form.Item
|
||||
@ -160,9 +163,19 @@ class LoRaCloudIntegrationForm extends Component<IProps, IState> {
|
||||
)}
|
||||
{this.state.modemEnabled && (
|
||||
<Form.Item
|
||||
label="My device adheres to the LoRa Edge™ Tracker Reference Design protocol"
|
||||
label="Use location of receiving gateways for assistance"
|
||||
name={["modemGeolocationServices", "gnssUseGatewayLocation"]}
|
||||
tooltip="If enabled, the gateway location will be provided to the geolocation resolver to aid the resolving process."
|
||||
valuePropName="checked"
|
||||
>
|
||||
<Switch />
|
||||
</Form.Item>
|
||||
)}
|
||||
{this.state.modemEnabled && (
|
||||
<Form.Item
|
||||
label="My device adheres to the LoRa Edge™ Tracker Modem-E Version Reference Design protocol"
|
||||
name={["modemGeolocationServices", "parseTlv"]}
|
||||
tooltip="If enabled, ChirpStack Application Server will try to resolve the location of the device if a geolocation payload is detected."
|
||||
tooltip="If enabled, ChirpStack will try to resolve the location of the device if a geolocation payload is detected."
|
||||
valuePropName="checked"
|
||||
>
|
||||
<Switch />
|
||||
|
63
ui/yarn.lock
63
ui/yarn.lock
@ -1881,7 +1881,7 @@
|
||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||
|
||||
"@chirpstack/chirpstack-api-grpc-web@file:../api/grpc-web":
|
||||
version "4.1.3"
|
||||
version "4.3.1"
|
||||
dependencies:
|
||||
"@types/google-protobuf" "^3.15.6"
|
||||
google-protobuf "^3.21.2"
|
||||
@ -3315,11 +3315,16 @@ acorn@^7.0.0, acorn@^7.1.1:
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||
|
||||
acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0:
|
||||
acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.0:
|
||||
version "8.8.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
|
||||
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
|
||||
|
||||
acorn@^8.7.1:
|
||||
version "8.8.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
|
||||
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
|
||||
|
||||
address@^1.0.1:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
|
||||
@ -4001,9 +4006,9 @@ caniuse-api@^3.0.0:
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001332:
|
||||
version "1.0.30001338"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz#b5dd7a7941a51a16480bdf6ff82bded1628eec0d"
|
||||
integrity sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==
|
||||
version "1.0.30001477"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001477.tgz"
|
||||
integrity sha512-lZim4iUHhGcy5p+Ri/G7m84hJwncj+Kz7S5aD4hoQfslKZJgt0tHc/hafVbqHC5bbhHb+mrW2JOUHkI5KH7toQ==
|
||||
|
||||
case-sensitive-paths-webpack-plugin@^2.4.0:
|
||||
version "2.4.0"
|
||||
@ -4823,9 +4828,9 @@ dns-equal@^1.0.0:
|
||||
integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
|
||||
|
||||
dns-packet@^5.2.2:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d"
|
||||
integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
|
||||
integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==
|
||||
dependencies:
|
||||
"@leichtgewicht/ip-codec" "^2.0.1"
|
||||
|
||||
@ -4993,10 +4998,10 @@ encodeurl@~1.0.2:
|
||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
|
||||
|
||||
enhanced-resolve@^5.9.2:
|
||||
version "5.9.3"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88"
|
||||
integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==
|
||||
enhanced-resolve@^5.10.0:
|
||||
version "5.12.0"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
|
||||
integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
@ -7020,6 +7025,11 @@ jest@^27.4.3:
|
||||
import-local "^3.0.2"
|
||||
jest-cli "^27.5.1"
|
||||
|
||||
js-file-download@^0.4.12:
|
||||
version "0.4.12"
|
||||
resolved "https://registry.yarnpkg.com/js-file-download/-/js-file-download-0.4.12.tgz#10c70ef362559a5b23cdbdc3bd6f399c3d91d821"
|
||||
integrity sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
@ -7083,12 +7093,7 @@ jsesc@~0.5.0:
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
||||
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
|
||||
|
||||
json-parse-better-errors@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
|
||||
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
|
||||
|
||||
json-parse-even-better-errors@^2.3.0:
|
||||
json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
|
||||
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
|
||||
@ -11143,10 +11148,10 @@ walker@^1.0.7:
|
||||
dependencies:
|
||||
makeerror "1.0.x"
|
||||
|
||||
watchpack@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25"
|
||||
integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==
|
||||
watchpack@^2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
|
||||
integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
|
||||
dependencies:
|
||||
glob-to-regexp "^0.4.1"
|
||||
graceful-fs "^4.1.2"
|
||||
@ -11254,33 +11259,33 @@ webpack-sources@^3.2.3:
|
||||
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
|
||||
|
||||
webpack@^5.64.4:
|
||||
version "5.72.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28"
|
||||
integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==
|
||||
version "5.76.3"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.3.tgz#dffdc72c8950e5b032fddad9c4452e7787d2f489"
|
||||
integrity sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==
|
||||
dependencies:
|
||||
"@types/eslint-scope" "^3.7.3"
|
||||
"@types/estree" "^0.0.51"
|
||||
"@webassemblyjs/ast" "1.11.1"
|
||||
"@webassemblyjs/wasm-edit" "1.11.1"
|
||||
"@webassemblyjs/wasm-parser" "1.11.1"
|
||||
acorn "^8.4.1"
|
||||
acorn "^8.7.1"
|
||||
acorn-import-assertions "^1.7.6"
|
||||
browserslist "^4.14.5"
|
||||
chrome-trace-event "^1.0.2"
|
||||
enhanced-resolve "^5.9.2"
|
||||
enhanced-resolve "^5.10.0"
|
||||
es-module-lexer "^0.9.0"
|
||||
eslint-scope "5.1.1"
|
||||
events "^3.2.0"
|
||||
glob-to-regexp "^0.4.1"
|
||||
graceful-fs "^4.2.9"
|
||||
json-parse-better-errors "^1.0.2"
|
||||
json-parse-even-better-errors "^2.3.1"
|
||||
loader-runner "^4.2.0"
|
||||
mime-types "^2.1.27"
|
||||
neo-async "^2.6.2"
|
||||
schema-utils "^3.1.0"
|
||||
tapable "^2.1.1"
|
||||
terser-webpack-plugin "^5.1.3"
|
||||
watchpack "^2.3.1"
|
||||
watchpack "^2.4.0"
|
||||
webpack-sources "^3.2.3"
|
||||
|
||||
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
|
||||
|
Reference in New Issue
Block a user