From e61346cdf35179dd57da2f291210844836b9d478 Mon Sep 17 00:00:00 2001
From: Vishesh Handa <me@vhanda.in>
Date: Thu, 12 Aug 2021 00:12:02 +0200
Subject: [PATCH] Analytics: Use unsigned ints

Also change type to 64 bit wherever needed.

The cpuFreq value seems to be too high, discarding it for now.
---
 lib/analytics/analytics.proto                 | 24 +++----
 lib/analytics/device_info.dart                |  8 ++-
 lib/analytics/generated/analytics.pb.dart     | 69 +++++++++----------
 lib/analytics/generated/analytics.pbjson.dart | 46 ++++++++-----
 4 files changed, 80 insertions(+), 67 deletions(-)

diff --git a/lib/analytics/analytics.proto b/lib/analytics/analytics.proto
index 6886069f..bd5622d8 100644
--- a/lib/analytics/analytics.proto
+++ b/lib/analytics/analytics.proto
@@ -29,7 +29,7 @@ message AnalyticsMessage {
 
 message Event {
   string name = 1;
-  int64 date = 2; // unix timestamp
+  uint64 date = 2; // unix timestamp
   map<string, string> params = 3;
 
   string userId = 4;
@@ -37,7 +37,7 @@ message Event {
   map<string, string> userProperties = 6;
 
   string sessionID = 7;
-  int64 userFirstTouchTimestamp = 8;
+  uint64 userFirstTouchTimestamp = 8;
 }
 
 message DeviceInfo {
@@ -73,9 +73,9 @@ message AndroidBuildVersion {
   string baseOS = 1;
   string codename = 2;
   string incremental = 3;
-  int32 previewSdkInt = 4;
+  uint32 previewSdkInt = 4;
   string release = 5;
-  int32 sdkInt = 6;
+  uint32 sdkInt = 6;
   string securityPatch = 7;
 }
 
@@ -143,15 +143,15 @@ message MacOSDeviceInfo {
   string model = 4;
   string kernelVersion = 5;
   string osRelease = 6;
-  int32 activeCPUs = 7;
-  int32 memorySize = 8;
-  int32 cpuFrequency = 9;
+  uint32 activeCPUs = 7;
+  uint64 memorySize = 8;
+  uint64 cpuFrequency = 9;
 }
 
 message WindowsDeviceInfo {
   string computerName = 1;
-  int32 numberOfCores = 2;
-  int32 systemMemoryInMegabytes = 3;
+  uint32 numberOfCores = 2;
+  uint32 systemMemoryInMegabytes = 3;
 }
 
 enum BrowserName {
@@ -170,7 +170,7 @@ message WebBrowserInfo {
   string appCodeName = 2;
   string appName = 3;
   string appVersion = 4;
-  int32 deviceMemory = 5;
+  uint64 deviceMemory = 5;
   string language = 6;
   repeated string languages = 7;
   string platform = 8;
@@ -179,6 +179,6 @@ message WebBrowserInfo {
   string userAgent = 11;
   string vendor = 12;
   string vendorSub = 13;
-  int32 hardwareConcurrency = 14;
-  int32 maxTouchPoints = 15;
+  uint32 hardwareConcurrency = 14;
+  uint32 maxTouchPoints = 15;
 }
diff --git a/lib/analytics/device_info.dart b/lib/analytics/device_info.dart
index 303e5d7a..a3b52ce0 100644
--- a/lib/analytics/device_info.dart
+++ b/lib/analytics/device_info.dart
@@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart' show kIsWeb;
 
 import 'package:device_info_plus/device_info_plus.dart';
 import 'package:device_info_plus_platform_interface/model/web_browser_info.dart';
+import 'package:fixnum/fixnum.dart';
 import 'package:universal_io/io.dart' show Platform;
 
 import 'generated/analytics.pb.dart' as pb;
@@ -98,8 +99,8 @@ Future<pb.DeviceInfo> buildDeviceInfo() async {
       kernelVersion: macOsInfo.kernelVersion,
       osRelease: macOsInfo.osRelease,
       activeCPUs: macOsInfo.activeCPUs,
-      memorySize: macOsInfo.memorySize,
-      cpuFrequency: macOsInfo.cpuFrequency,
+      memorySize: Int64(macOsInfo.memorySize),
+      // cpuFrequency: Int64(macOsInfo.cpuFrequency),
     );
 
     return pb.DeviceInfo(platform: _currentPlatform(), macOSDeviceInfo: info);
@@ -152,7 +153,8 @@ Future<pb.DeviceInfo> buildDeviceInfo() async {
       appCodeName: webInfo.appCodeName,
       appName: webInfo.appName,
       appVersion: webInfo.appVersion,
-      deviceMemory: webInfo.deviceMemory,
+      deviceMemory:
+          webInfo.deviceMemory != null ? Int64(webInfo.deviceMemory!) : null,
       language: webInfo.language,
       languages: webInfo.languages?.map((e) => e.toString()),
       platform: webInfo.platform,
diff --git a/lib/analytics/generated/analytics.pb.dart b/lib/analytics/generated/analytics.pb.dart
index 8004a270..e6fa8a2a 100644
--- a/lib/analytics/generated/analytics.pb.dart
+++ b/lib/analytics/generated/analytics.pb.dart
@@ -133,13 +133,13 @@ class AnalyticsMessage extends $pb.GeneratedMessage {
 class Event extends $pb.GeneratedMessage {
   static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Event', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'gitjournal'), createEmptyInstance: create)
     ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name')
-    ..aInt64(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'date')
+    ..a<$fixnum.Int64>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'date', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
     ..m<$core.String, $core.String>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'params', entryClassName: 'Event.ParamsEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('gitjournal'))
     ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'userId', protoName: 'userId')
     ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'pseudoId', protoName: 'pseudoId')
     ..m<$core.String, $core.String>(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'userProperties', protoName: 'userProperties', entryClassName: 'Event.UserPropertiesEntry', keyFieldType: $pb.PbFieldType.OS, valueFieldType: $pb.PbFieldType.OS, packageName: const $pb.PackageName('gitjournal'))
     ..aOS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sessionID', protoName: 'sessionID')
-    ..aInt64(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'userFirstTouchTimestamp', protoName: 'userFirstTouchTimestamp')
+    ..a<$fixnum.Int64>(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'userFirstTouchTimestamp', $pb.PbFieldType.OU6, protoName: 'userFirstTouchTimestamp', defaultOrMaker: $fixnum.Int64.ZERO)
     ..hasRequiredFields = false
   ;
 
@@ -264,12 +264,12 @@ class Event extends $pb.GeneratedMessage {
 }
 
 enum DeviceInfo_DeviceInfo {
-  androidDeviceInfo, 
-  iosDeviceInfo, 
-  linuxDeviceInfo, 
-  macOSDeviceInfo, 
-  windowsDeviceInfo, 
-  webBrowserInfo, 
+  androidDeviceInfo,
+  iosDeviceInfo,
+  linuxDeviceInfo,
+  macOSDeviceInfo,
+  windowsDeviceInfo,
+  webBrowserInfo,
   notSet
 }
 
@@ -537,9 +537,9 @@ class AndroidBuildVersion extends $pb.GeneratedMessage {
     ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'baseOS', protoName: 'baseOS')
     ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'codename')
     ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'incremental')
-    ..a<$core.int>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'previewSdkInt', $pb.PbFieldType.O3, protoName: 'previewSdkInt')
+    ..a<$core.int>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'previewSdkInt', $pb.PbFieldType.OU3, protoName: 'previewSdkInt')
     ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'release')
-    ..a<$core.int>(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sdkInt', $pb.PbFieldType.O3, protoName: 'sdkInt')
+    ..a<$core.int>(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sdkInt', $pb.PbFieldType.OU3, protoName: 'sdkInt')
     ..aOS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'securityPatch', protoName: 'securityPatch')
     ..hasRequiredFields = false
   ;
@@ -629,7 +629,7 @@ class AndroidBuildVersion extends $pb.GeneratedMessage {
   @$pb.TagNumber(4)
   $core.int get previewSdkInt => $_getIZ(3);
   @$pb.TagNumber(4)
-  set previewSdkInt($core.int v) { $_setSignedInt32(3, v); }
+  set previewSdkInt($core.int v) { $_setUnsignedInt32(3, v); }
   @$pb.TagNumber(4)
   $core.bool hasPreviewSdkInt() => $_has(3);
   @$pb.TagNumber(4)
@@ -647,7 +647,7 @@ class AndroidBuildVersion extends $pb.GeneratedMessage {
   @$pb.TagNumber(6)
   $core.int get sdkInt => $_getIZ(5);
   @$pb.TagNumber(6)
-  set sdkInt($core.int v) { $_setSignedInt32(5, v); }
+  set sdkInt($core.int v) { $_setUnsignedInt32(5, v); }
   @$pb.TagNumber(6)
   $core.bool hasSdkInt() => $_has(5);
   @$pb.TagNumber(6)
@@ -1407,9 +1407,9 @@ class MacOSDeviceInfo extends $pb.GeneratedMessage {
     ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'model')
     ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'kernelVersion', protoName: 'kernelVersion')
     ..aOS(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'osRelease', protoName: 'osRelease')
-    ..a<$core.int>(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'activeCPUs', $pb.PbFieldType.O3, protoName: 'activeCPUs')
-    ..a<$core.int>(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'memorySize', $pb.PbFieldType.O3, protoName: 'memorySize')
-    ..a<$core.int>(9, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'cpuFrequency', $pb.PbFieldType.O3, protoName: 'cpuFrequency')
+    ..a<$core.int>(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'activeCPUs', $pb.PbFieldType.OU3, protoName: 'activeCPUs')
+    ..a<$fixnum.Int64>(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'memorySize', $pb.PbFieldType.OU6, protoName: 'memorySize', defaultOrMaker: $fixnum.Int64.ZERO)
+    ..a<$fixnum.Int64>(9, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'cpuFrequency', $pb.PbFieldType.OU6, protoName: 'cpuFrequency', defaultOrMaker: $fixnum.Int64.ZERO)
     ..hasRequiredFields = false
   ;
 
@@ -1422,8 +1422,8 @@ class MacOSDeviceInfo extends $pb.GeneratedMessage {
     $core.String? kernelVersion,
     $core.String? osRelease,
     $core.int? activeCPUs,
-    $core.int? memorySize,
-    $core.int? cpuFrequency,
+    $fixnum.Int64? memorySize,
+    $fixnum.Int64? cpuFrequency,
   }) {
     final _result = create();
     if (computerName != null) {
@@ -1533,25 +1533,25 @@ class MacOSDeviceInfo extends $pb.GeneratedMessage {
   @$pb.TagNumber(7)
   $core.int get activeCPUs => $_getIZ(6);
   @$pb.TagNumber(7)
-  set activeCPUs($core.int v) { $_setSignedInt32(6, v); }
+  set activeCPUs($core.int v) { $_setUnsignedInt32(6, v); }
   @$pb.TagNumber(7)
   $core.bool hasActiveCPUs() => $_has(6);
   @$pb.TagNumber(7)
   void clearActiveCPUs() => clearField(7);
 
   @$pb.TagNumber(8)
-  $core.int get memorySize => $_getIZ(7);
+  $fixnum.Int64 get memorySize => $_getI64(7);
   @$pb.TagNumber(8)
-  set memorySize($core.int v) { $_setSignedInt32(7, v); }
+  set memorySize($fixnum.Int64 v) { $_setInt64(7, v); }
   @$pb.TagNumber(8)
   $core.bool hasMemorySize() => $_has(7);
   @$pb.TagNumber(8)
   void clearMemorySize() => clearField(8);
 
   @$pb.TagNumber(9)
-  $core.int get cpuFrequency => $_getIZ(8);
+  $fixnum.Int64 get cpuFrequency => $_getI64(8);
   @$pb.TagNumber(9)
-  set cpuFrequency($core.int v) { $_setSignedInt32(8, v); }
+  set cpuFrequency($fixnum.Int64 v) { $_setInt64(8, v); }
   @$pb.TagNumber(9)
   $core.bool hasCpuFrequency() => $_has(8);
   @$pb.TagNumber(9)
@@ -1561,8 +1561,8 @@ class MacOSDeviceInfo extends $pb.GeneratedMessage {
 class WindowsDeviceInfo extends $pb.GeneratedMessage {
   static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'WindowsDeviceInfo', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'gitjournal'), createEmptyInstance: create)
     ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'computerName', protoName: 'computerName')
-    ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'numberOfCores', $pb.PbFieldType.O3, protoName: 'numberOfCores')
-    ..a<$core.int>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'systemMemoryInMegabytes', $pb.PbFieldType.O3, protoName: 'systemMemoryInMegabytes')
+    ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'numberOfCores', $pb.PbFieldType.OU3, protoName: 'numberOfCores')
+    ..a<$core.int>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'systemMemoryInMegabytes', $pb.PbFieldType.OU3, protoName: 'systemMemoryInMegabytes')
     ..hasRequiredFields = false
   ;
 
@@ -1617,7 +1617,7 @@ class WindowsDeviceInfo extends $pb.GeneratedMessage {
   @$pb.TagNumber(2)
   $core.int get numberOfCores => $_getIZ(1);
   @$pb.TagNumber(2)
-  set numberOfCores($core.int v) { $_setSignedInt32(1, v); }
+  set numberOfCores($core.int v) { $_setUnsignedInt32(1, v); }
   @$pb.TagNumber(2)
   $core.bool hasNumberOfCores() => $_has(1);
   @$pb.TagNumber(2)
@@ -1626,7 +1626,7 @@ class WindowsDeviceInfo extends $pb.GeneratedMessage {
   @$pb.TagNumber(3)
   $core.int get systemMemoryInMegabytes => $_getIZ(2);
   @$pb.TagNumber(3)
-  set systemMemoryInMegabytes($core.int v) { $_setSignedInt32(2, v); }
+  set systemMemoryInMegabytes($core.int v) { $_setUnsignedInt32(2, v); }
   @$pb.TagNumber(3)
   $core.bool hasSystemMemoryInMegabytes() => $_has(2);
   @$pb.TagNumber(3)
@@ -1639,7 +1639,7 @@ class WebBrowserInfo extends $pb.GeneratedMessage {
     ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'appCodeName', protoName: 'appCodeName')
     ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'appName', protoName: 'appName')
     ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'appVersion', protoName: 'appVersion')
-    ..a<$core.int>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceMemory', $pb.PbFieldType.O3, protoName: 'deviceMemory')
+    ..a<$fixnum.Int64>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceMemory', $pb.PbFieldType.OU6, protoName: 'deviceMemory', defaultOrMaker: $fixnum.Int64.ZERO)
     ..aOS(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'language')
     ..pPS(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'languages')
     ..aOS(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'platform')
@@ -1648,8 +1648,8 @@ class WebBrowserInfo extends $pb.GeneratedMessage {
     ..aOS(11, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'userAgent', protoName: 'userAgent')
     ..aOS(12, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'vendor')
     ..aOS(13, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'vendorSub', protoName: 'vendorSub')
-    ..a<$core.int>(14, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'hardwareConcurrency', $pb.PbFieldType.O3, protoName: 'hardwareConcurrency')
-    ..a<$core.int>(15, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'maxTouchPoints', $pb.PbFieldType.O3, protoName: 'maxTouchPoints')
+    ..a<$core.int>(14, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'hardwareConcurrency', $pb.PbFieldType.OU3, protoName: 'hardwareConcurrency')
+    ..a<$core.int>(15, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'maxTouchPoints', $pb.PbFieldType.OU3, protoName: 'maxTouchPoints')
     ..hasRequiredFields = false
   ;
 
@@ -1659,7 +1659,7 @@ class WebBrowserInfo extends $pb.GeneratedMessage {
     $core.String? appCodeName,
     $core.String? appName,
     $core.String? appVersion,
-    $core.int? deviceMemory,
+    $fixnum.Int64? deviceMemory,
     $core.String? language,
     $core.Iterable<$core.String>? languages,
     $core.String? platform,
@@ -1777,9 +1777,9 @@ class WebBrowserInfo extends $pb.GeneratedMessage {
   void clearAppVersion() => clearField(4);
 
   @$pb.TagNumber(5)
-  $core.int get deviceMemory => $_getIZ(4);
+  $fixnum.Int64 get deviceMemory => $_getI64(4);
   @$pb.TagNumber(5)
-  set deviceMemory($core.int v) { $_setSignedInt32(4, v); }
+  set deviceMemory($fixnum.Int64 v) { $_setInt64(4, v); }
   @$pb.TagNumber(5)
   $core.bool hasDeviceMemory() => $_has(4);
   @$pb.TagNumber(5)
@@ -1854,7 +1854,7 @@ class WebBrowserInfo extends $pb.GeneratedMessage {
   @$pb.TagNumber(14)
   $core.int get hardwareConcurrency => $_getIZ(13);
   @$pb.TagNumber(14)
-  set hardwareConcurrency($core.int v) { $_setSignedInt32(13, v); }
+  set hardwareConcurrency($core.int v) { $_setUnsignedInt32(13, v); }
   @$pb.TagNumber(14)
   $core.bool hasHardwareConcurrency() => $_has(13);
   @$pb.TagNumber(14)
@@ -1863,10 +1863,9 @@ class WebBrowserInfo extends $pb.GeneratedMessage {
   @$pb.TagNumber(15)
   $core.int get maxTouchPoints => $_getIZ(14);
   @$pb.TagNumber(15)
-  set maxTouchPoints($core.int v) { $_setSignedInt32(14, v); }
+  set maxTouchPoints($core.int v) { $_setUnsignedInt32(14, v); }
   @$pb.TagNumber(15)
   $core.bool hasMaxTouchPoints() => $_has(14);
   @$pb.TagNumber(15)
   void clearMaxTouchPoints() => clearField(15);
 }
-
diff --git a/lib/analytics/generated/analytics.pbjson.dart b/lib/analytics/generated/analytics.pbjson.dart
index 5cb7d1a5..531172ed 100644
--- a/lib/analytics/generated/analytics.pbjson.dart
+++ b/lib/analytics/generated/analytics.pbjson.dart
@@ -91,7 +91,7 @@ const Event$json = const {
   '1': 'Event',
   '2': const [
     const {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
-    const {'1': 'date', '3': 2, '4': 1, '5': 3, '10': 'date'},
+    const {'1': 'date', '3': 2, '4': 1, '5': 4, '10': 'date'},
     const {
       '1': 'params',
       '3': 3,
@@ -115,7 +115,7 @@ const Event$json = const {
       '1': 'userFirstTouchTimestamp',
       '3': 8,
       '4': 1,
-      '5': 3,
+      '5': 4,
       '10': 'userFirstTouchTimestamp'
     },
   ],
@@ -144,7 +144,7 @@ const Event_UserPropertiesEntry$json = const {
 
 /// Descriptor for `Event`. Decode as a `google.protobuf.DescriptorProto`.
 final $typed_data.Uint8List eventDescriptor = $convert.base64Decode(
-    'CgVFdmVudBISCgRuYW1lGAEgASgJUgRuYW1lEhIKBGRhdGUYAiABKANSBGRhdGUSNQoGcGFyYW1zGAMgAygLMh0uZ2l0am91cm5hbC5FdmVudC5QYXJhbXNFbnRyeVIGcGFyYW1zEhYKBnVzZXJJZBgEIAEoCVIGdXNlcklkEhoKCHBzZXVkb0lkGAUgASgJUghwc2V1ZG9JZBJNCg51c2VyUHJvcGVydGllcxgGIAMoCzIlLmdpdGpvdXJuYWwuRXZlbnQuVXNlclByb3BlcnRpZXNFbnRyeVIOdXNlclByb3BlcnRpZXMSHAoJc2Vzc2lvbklEGAcgASgJUglzZXNzaW9uSUQSOAoXdXNlckZpcnN0VG91Y2hUaW1lc3RhbXAYCCABKANSF3VzZXJGaXJzdFRvdWNoVGltZXN0YW1wGjkKC1BhcmFtc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaQQoTVXNlclByb3BlcnRpZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgB');
+    'CgVFdmVudBISCgRuYW1lGAEgASgJUgRuYW1lEhIKBGRhdGUYAiABKARSBGRhdGUSNQoGcGFyYW1zGAMgAygLMh0uZ2l0am91cm5hbC5FdmVudC5QYXJhbXNFbnRyeVIGcGFyYW1zEhYKBnVzZXJJZBgEIAEoCVIGdXNlcklkEhoKCHBzZXVkb0lkGAUgASgJUghwc2V1ZG9JZBJNCg51c2VyUHJvcGVydGllcxgGIAMoCzIlLmdpdGpvdXJuYWwuRXZlbnQuVXNlclByb3BlcnRpZXNFbnRyeVIOdXNlclByb3BlcnRpZXMSHAoJc2Vzc2lvbklEGAcgASgJUglzZXNzaW9uSUQSOAoXdXNlckZpcnN0VG91Y2hUaW1lc3RhbXAYCCABKARSF3VzZXJGaXJzdFRvdWNoVGltZXN0YW1wGjkKC1BhcmFtc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEaQQoTVXNlclByb3BlcnRpZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgB');
 @$core.Deprecated('Use deviceInfoDescriptor instead')
 const DeviceInfo$json = const {
   '1': 'DeviceInfo',
@@ -248,16 +248,22 @@ const AndroidBuildVersion$json = const {
     const {'1': 'baseOS', '3': 1, '4': 1, '5': 9, '10': 'baseOS'},
     const {'1': 'codename', '3': 2, '4': 1, '5': 9, '10': 'codename'},
     const {'1': 'incremental', '3': 3, '4': 1, '5': 9, '10': 'incremental'},
-    const {'1': 'previewSdkInt', '3': 4, '4': 1, '5': 5, '10': 'previewSdkInt'},
+    const {
+      '1': 'previewSdkInt',
+      '3': 4,
+      '4': 1,
+      '5': 13,
+      '10': 'previewSdkInt'
+    },
     const {'1': 'release', '3': 5, '4': 1, '5': 9, '10': 'release'},
-    const {'1': 'sdkInt', '3': 6, '4': 1, '5': 5, '10': 'sdkInt'},
+    const {'1': 'sdkInt', '3': 6, '4': 1, '5': 13, '10': 'sdkInt'},
     const {'1': 'securityPatch', '3': 7, '4': 1, '5': 9, '10': 'securityPatch'},
   ],
 };
 
 /// Descriptor for `AndroidBuildVersion`. Decode as a `google.protobuf.DescriptorProto`.
 final $typed_data.Uint8List androidBuildVersionDescriptor = $convert.base64Decode(
-    'ChNBbmRyb2lkQnVpbGRWZXJzaW9uEhYKBmJhc2VPUxgBIAEoCVIGYmFzZU9TEhoKCGNvZGVuYW1lGAIgASgJUghjb2RlbmFtZRIgCgtpbmNyZW1lbnRhbBgDIAEoCVILaW5jcmVtZW50YWwSJAoNcHJldmlld1Nka0ludBgEIAEoBVINcHJldmlld1Nka0ludBIYCgdyZWxlYXNlGAUgASgJUgdyZWxlYXNlEhYKBnNka0ludBgGIAEoBVIGc2RrSW50EiQKDXNlY3VyaXR5UGF0Y2gYByABKAlSDXNlY3VyaXR5UGF0Y2g=');
+    'ChNBbmRyb2lkQnVpbGRWZXJzaW9uEhYKBmJhc2VPUxgBIAEoCVIGYmFzZU9TEhoKCGNvZGVuYW1lGAIgASgJUghjb2RlbmFtZRIgCgtpbmNyZW1lbnRhbBgDIAEoCVILaW5jcmVtZW50YWwSJAoNcHJldmlld1Nka0ludBgEIAEoDVINcHJldmlld1Nka0ludBIYCgdyZWxlYXNlGAUgASgJUgdyZWxlYXNlEhYKBnNka0ludBgGIAEoDVIGc2RrSW50EiQKDXNlY3VyaXR5UGF0Y2gYByABKAlSDXNlY3VyaXR5UGF0Y2g=');
 @$core.Deprecated('Use androidDeviceInfoDescriptor instead')
 const AndroidDeviceInfo$json = const {
   '1': 'AndroidDeviceInfo',
@@ -421,26 +427,32 @@ const MacOSDeviceInfo$json = const {
     const {'1': 'model', '3': 4, '4': 1, '5': 9, '10': 'model'},
     const {'1': 'kernelVersion', '3': 5, '4': 1, '5': 9, '10': 'kernelVersion'},
     const {'1': 'osRelease', '3': 6, '4': 1, '5': 9, '10': 'osRelease'},
-    const {'1': 'activeCPUs', '3': 7, '4': 1, '5': 5, '10': 'activeCPUs'},
-    const {'1': 'memorySize', '3': 8, '4': 1, '5': 5, '10': 'memorySize'},
-    const {'1': 'cpuFrequency', '3': 9, '4': 1, '5': 5, '10': 'cpuFrequency'},
+    const {'1': 'activeCPUs', '3': 7, '4': 1, '5': 13, '10': 'activeCPUs'},
+    const {'1': 'memorySize', '3': 8, '4': 1, '5': 4, '10': 'memorySize'},
+    const {'1': 'cpuFrequency', '3': 9, '4': 1, '5': 4, '10': 'cpuFrequency'},
   ],
 };
 
 /// Descriptor for `MacOSDeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
 final $typed_data.Uint8List macOSDeviceInfoDescriptor = $convert.base64Decode(
-    'Cg9NYWNPU0RldmljZUluZm8SIgoMY29tcHV0ZXJOYW1lGAEgASgJUgxjb21wdXRlck5hbWUSGgoIaG9zdE5hbWUYAiABKAlSCGhvc3ROYW1lEhIKBGFyY2gYAyABKAlSBGFyY2gSFAoFbW9kZWwYBCABKAlSBW1vZGVsEiQKDWtlcm5lbFZlcnNpb24YBSABKAlSDWtlcm5lbFZlcnNpb24SHAoJb3NSZWxlYXNlGAYgASgJUglvc1JlbGVhc2USHgoKYWN0aXZlQ1BVcxgHIAEoBVIKYWN0aXZlQ1BVcxIeCgptZW1vcnlTaXplGAggASgFUgptZW1vcnlTaXplEiIKDGNwdUZyZXF1ZW5jeRgJIAEoBVIMY3B1RnJlcXVlbmN5');
+    'Cg9NYWNPU0RldmljZUluZm8SIgoMY29tcHV0ZXJOYW1lGAEgASgJUgxjb21wdXRlck5hbWUSGgoIaG9zdE5hbWUYAiABKAlSCGhvc3ROYW1lEhIKBGFyY2gYAyABKAlSBGFyY2gSFAoFbW9kZWwYBCABKAlSBW1vZGVsEiQKDWtlcm5lbFZlcnNpb24YBSABKAlSDWtlcm5lbFZlcnNpb24SHAoJb3NSZWxlYXNlGAYgASgJUglvc1JlbGVhc2USHgoKYWN0aXZlQ1BVcxgHIAEoDVIKYWN0aXZlQ1BVcxIeCgptZW1vcnlTaXplGAggASgEUgptZW1vcnlTaXplEiIKDGNwdUZyZXF1ZW5jeRgJIAEoBFIMY3B1RnJlcXVlbmN5');
 @$core.Deprecated('Use windowsDeviceInfoDescriptor instead')
 const WindowsDeviceInfo$json = const {
   '1': 'WindowsDeviceInfo',
   '2': const [
     const {'1': 'computerName', '3': 1, '4': 1, '5': 9, '10': 'computerName'},
-    const {'1': 'numberOfCores', '3': 2, '4': 1, '5': 5, '10': 'numberOfCores'},
+    const {
+      '1': 'numberOfCores',
+      '3': 2,
+      '4': 1,
+      '5': 13,
+      '10': 'numberOfCores'
+    },
     const {
       '1': 'systemMemoryInMegabytes',
       '3': 3,
       '4': 1,
-      '5': 5,
+      '5': 13,
       '10': 'systemMemoryInMegabytes'
     },
   ],
@@ -448,7 +460,7 @@ const WindowsDeviceInfo$json = const {
 
 /// Descriptor for `WindowsDeviceInfo`. Decode as a `google.protobuf.DescriptorProto`.
 final $typed_data.Uint8List windowsDeviceInfoDescriptor = $convert.base64Decode(
-    'ChFXaW5kb3dzRGV2aWNlSW5mbxIiCgxjb21wdXRlck5hbWUYASABKAlSDGNvbXB1dGVyTmFtZRIkCg1udW1iZXJPZkNvcmVzGAIgASgFUg1udW1iZXJPZkNvcmVzEjgKF3N5c3RlbU1lbW9yeUluTWVnYWJ5dGVzGAMgASgFUhdzeXN0ZW1NZW1vcnlJbk1lZ2FieXRlcw==');
+    'ChFXaW5kb3dzRGV2aWNlSW5mbxIiCgxjb21wdXRlck5hbWUYASABKAlSDGNvbXB1dGVyTmFtZRIkCg1udW1iZXJPZkNvcmVzGAIgASgNUg1udW1iZXJPZkNvcmVzEjgKF3N5c3RlbU1lbW9yeUluTWVnYWJ5dGVzGAMgASgNUhdzeXN0ZW1NZW1vcnlJbk1lZ2FieXRlcw==');
 @$core.Deprecated('Use webBrowserInfoDescriptor instead')
 const WebBrowserInfo$json = const {
   '1': 'WebBrowserInfo',
@@ -464,7 +476,7 @@ const WebBrowserInfo$json = const {
     const {'1': 'appCodeName', '3': 2, '4': 1, '5': 9, '10': 'appCodeName'},
     const {'1': 'appName', '3': 3, '4': 1, '5': 9, '10': 'appName'},
     const {'1': 'appVersion', '3': 4, '4': 1, '5': 9, '10': 'appVersion'},
-    const {'1': 'deviceMemory', '3': 5, '4': 1, '5': 5, '10': 'deviceMemory'},
+    const {'1': 'deviceMemory', '3': 5, '4': 1, '5': 4, '10': 'deviceMemory'},
     const {'1': 'language', '3': 6, '4': 1, '5': 9, '10': 'language'},
     const {'1': 'languages', '3': 7, '4': 3, '5': 9, '10': 'languages'},
     const {'1': 'platform', '3': 8, '4': 1, '5': 9, '10': 'platform'},
@@ -477,14 +489,14 @@ const WebBrowserInfo$json = const {
       '1': 'hardwareConcurrency',
       '3': 14,
       '4': 1,
-      '5': 5,
+      '5': 13,
       '10': 'hardwareConcurrency'
     },
     const {
       '1': 'maxTouchPoints',
       '3': 15,
       '4': 1,
-      '5': 5,
+      '5': 13,
       '10': 'maxTouchPoints'
     },
   ],
@@ -492,4 +504,4 @@ const WebBrowserInfo$json = const {
 
 /// Descriptor for `WebBrowserInfo`. Decode as a `google.protobuf.DescriptorProto`.
 final $typed_data.Uint8List webBrowserInfoDescriptor = $convert.base64Decode(
-    'Cg5XZWJCcm93c2VySW5mbxI5Cgticm93c2VyTmFtZRgBIAEoDjIXLmdpdGpvdXJuYWwuQnJvd3Nlck5hbWVSC2Jyb3dzZXJOYW1lEiAKC2FwcENvZGVOYW1lGAIgASgJUgthcHBDb2RlTmFtZRIYCgdhcHBOYW1lGAMgASgJUgdhcHBOYW1lEh4KCmFwcFZlcnNpb24YBCABKAlSCmFwcFZlcnNpb24SIgoMZGV2aWNlTWVtb3J5GAUgASgFUgxkZXZpY2VNZW1vcnkSGgoIbGFuZ3VhZ2UYBiABKAlSCGxhbmd1YWdlEhwKCWxhbmd1YWdlcxgHIAMoCVIJbGFuZ3VhZ2VzEhoKCHBsYXRmb3JtGAggASgJUghwbGF0Zm9ybRIYCgdwcm9kdWN0GAkgASgJUgdwcm9kdWN0Eh4KCnByb2R1Y3RTdWIYCiABKAlSCnByb2R1Y3RTdWISHAoJdXNlckFnZW50GAsgASgJUgl1c2VyQWdlbnQSFgoGdmVuZG9yGAwgASgJUgZ2ZW5kb3ISHAoJdmVuZG9yU3ViGA0gASgJUgl2ZW5kb3JTdWISMAoTaGFyZHdhcmVDb25jdXJyZW5jeRgOIAEoBVITaGFyZHdhcmVDb25jdXJyZW5jeRImCg5tYXhUb3VjaFBvaW50cxgPIAEoBVIObWF4VG91Y2hQb2ludHM=');
+    'Cg5XZWJCcm93c2VySW5mbxI5Cgticm93c2VyTmFtZRgBIAEoDjIXLmdpdGpvdXJuYWwuQnJvd3Nlck5hbWVSC2Jyb3dzZXJOYW1lEiAKC2FwcENvZGVOYW1lGAIgASgJUgthcHBDb2RlTmFtZRIYCgdhcHBOYW1lGAMgASgJUgdhcHBOYW1lEh4KCmFwcFZlcnNpb24YBCABKAlSCmFwcFZlcnNpb24SIgoMZGV2aWNlTWVtb3J5GAUgASgEUgxkZXZpY2VNZW1vcnkSGgoIbGFuZ3VhZ2UYBiABKAlSCGxhbmd1YWdlEhwKCWxhbmd1YWdlcxgHIAMoCVIJbGFuZ3VhZ2VzEhoKCHBsYXRmb3JtGAggASgJUghwbGF0Zm9ybRIYCgdwcm9kdWN0GAkgASgJUgdwcm9kdWN0Eh4KCnByb2R1Y3RTdWIYCiABKAlSCnByb2R1Y3RTdWISHAoJdXNlckFnZW50GAsgASgJUgl1c2VyQWdlbnQSFgoGdmVuZG9yGAwgASgJUgZ2ZW5kb3ISHAoJdmVuZG9yU3ViGA0gASgJUgl2ZW5kb3JTdWISMAoTaGFyZHdhcmVDb25jdXJyZW5jeRgOIAEoDVITaGFyZHdhcmVDb25jdXJyZW5jeRImCg5tYXhUb3VjaFBvaW50cxgPIAEoDVIObWF4VG91Y2hQb2ludHM=');