@kusinta/iot-schema 0.2.0-beta.54 → 0.2.0-beta.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kusinta/iot-schema",
3
- "version": "0.2.0-beta.54",
3
+ "version": "0.2.0-beta.56",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -490,6 +490,14 @@ export enum ServiceSignal {
490
490
  * @generated from enum value: SERVICE_SIGNAL_FLOOR_ZONE_UNCONTROLLED = 10;
491
491
  */
492
492
  FLOOR_ZONE_UNCONTROLLED = 10,
493
+
494
+ /**
495
+ * The home's street address, where one is set on it (webrtc.v1 SPACE ADDRESS), so that a
496
+ * technician can find the house. Never sent upstream.
497
+ *
498
+ * @generated from enum value: SERVICE_SIGNAL_ADDRESS = 11;
499
+ */
500
+ ADDRESS = 11,
493
501
  }
494
502
 
495
503
  /**
@@ -11,7 +11,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
11
11
  * Describes the file kusinta/iot/access/v1/acl.proto.
12
12
  */
13
13
  export const file_kusinta_iot_access_v1_acl = /*@__PURE__*/
14
- fileDesc("Ch9rdXNpbnRhL2lvdC9hY2Nlc3MvdjEvYWNsLnByb3RvEhVrdXNpbnRhLmlvdC5hY2Nlc3MudjEirgEKDEF0dHJpYnV0ZVJlZhIWCg5hdHRyaWJ1dGVfbmFtZRgBIAEoCRISCgpjbHVzdGVyX2lkGAIgASgNEhQKDGF0dHJpYnV0ZV9pZBgEIAEoDRIYCgtlbmRwb2ludF9pZBgDIAEoDUgAiAEBEh0KEHZlbmRvcl9leHRlbnNpb24YBSABKAlIAYgBAUIOCgxfZW5kcG9pbnRfaWRCEwoRX3ZlbmRvcl9leHRlbnNpb24iZQoKQ29tbWFuZFJlZhISCgpjbHVzdGVyX2lkGAEgASgNEhkKEW1hdHRlcl9jb21tYW5kX2lkGAIgASgNEhgKC2VuZHBvaW50X2lkGAMgASgNSACIAQFCDgoMX2VuZHBvaW50X2lkIloKCEV2ZW50UmVmEhIKCmNsdXN0ZXJfaWQYASABKA0SEAoIZXZlbnRfaWQYAiABKA0SGAoLZW5kcG9pbnRfaWQYAyABKA1IAIgBAUIOCgxfZW5kcG9pbnRfaWQi5wEKElByb3BlcnR5Q29uc3RyYWludBI2CglhdHRyaWJ1dGUYCCABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmEhEKB2ludF9tYXgYAiABKBFIABIRCgdpbnRfbWluGAMgASgRSAASEgoIdWludF9tYXgYBCABKA1IABISCgh1aW50X21pbhgFIAEoDUgAQgwKCmNvbnN0cmFpbnRKBAgBEAJKBAgGEAdKBAgHEAhSDmF0dHJpYnV0ZV9uYW1lUg5jbHVzdGVyX2lkX2hleFILZW5kcG9pbnRfaWQiwwQKCURldmljZUFjbBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEikKBHJvbGUYAyABKA4yGy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUm9sZRJACg9hbGxvd2VkX2FjdGlvbnMYBCADKA4yJy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUGVybWlzc2lvbkFjdGlvbhJDChZhbGxvd2VkX2F0dHJpYnV0ZV9yZWZzGAcgAygLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhJHChRwcm9wZXJ0eV9jb25zdHJhaW50cxgGIAMoCzIpLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Qcm9wZXJ0eUNvbnN0cmFpbnQSPwoUYWxsb3dlZF9jb21tYW5kX3JlZnMYCSADKAsyIS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQ29tbWFuZFJlZhI7ChJhbGxvd2VkX2V2ZW50X3JlZnMYCiADKAsyHy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuRXZlbnRSZWYSOwoIcmVsYXRpb24YCyABKA4yKS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuTWVtYmVyc2hpcFJlbGF0aW9uSgQIBRAGUhJhbGxvd2VkX2F0dHJpYnV0ZXMi5QEKFEVmZmVjdGl2ZVBlcm1pc3Npb25zEjAKB3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNgoKZ2F0ZXdheV9pZBgCIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZBI1CgtkZXZpY2VfYWNscxgDIAMoCzIgLmt1c2ludGEuaW90LmFjY2Vzcy52MS5EZXZpY2VBY2wSLAoIdmFsaWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKuACCg1TZXJ2aWNlU2lnbmFsEh4KGlNFUlZJQ0VfU0lHTkFMX1VOU1BFQ0lGSUVEEAASHwobU0VSVklDRV9TSUdOQUxfUkVBQ0hBQklMSVRZEAESGgoWU0VSVklDRV9TSUdOQUxfQkFUVEVSWRACEh0KGVNFUlZJQ0VfU0lHTkFMX1JBRElPX0xJTksQAxIbChdTRVJWSUNFX1NJR05BTF9GSVJNV0FSRRAEEhgKFFNFUlZJQ0VfU0lHTkFMX0ZBVUxUEAUSGQoVU0VSVklDRV9TSUdOQUxfRklMSU5HEAYSHQoZU0VSVklDRV9TSUdOQUxfUk9PTV9TRVRVUBAHEhgKFFNFUlZJQ0VfU0lHTkFMX0xJTktTEAgSHAoYU0VSVklDRV9TSUdOQUxfUkVTSURFTlRTEAkSKgomU0VSVklDRV9TSUdOQUxfRkxPT1JfWk9ORV9VTkNPTlRST0xMRUQQCkICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_roles, file_kusinta_iot_identity_v1_identity]);
14
+ fileDesc("Ch9rdXNpbnRhL2lvdC9hY2Nlc3MvdjEvYWNsLnByb3RvEhVrdXNpbnRhLmlvdC5hY2Nlc3MudjEirgEKDEF0dHJpYnV0ZVJlZhIWCg5hdHRyaWJ1dGVfbmFtZRgBIAEoCRISCgpjbHVzdGVyX2lkGAIgASgNEhQKDGF0dHJpYnV0ZV9pZBgEIAEoDRIYCgtlbmRwb2ludF9pZBgDIAEoDUgAiAEBEh0KEHZlbmRvcl9leHRlbnNpb24YBSABKAlIAYgBAUIOCgxfZW5kcG9pbnRfaWRCEwoRX3ZlbmRvcl9leHRlbnNpb24iZQoKQ29tbWFuZFJlZhISCgpjbHVzdGVyX2lkGAEgASgNEhkKEW1hdHRlcl9jb21tYW5kX2lkGAIgASgNEhgKC2VuZHBvaW50X2lkGAMgASgNSACIAQFCDgoMX2VuZHBvaW50X2lkIloKCEV2ZW50UmVmEhIKCmNsdXN0ZXJfaWQYASABKA0SEAoIZXZlbnRfaWQYAiABKA0SGAoLZW5kcG9pbnRfaWQYAyABKA1IAIgBAUIOCgxfZW5kcG9pbnRfaWQi5wEKElByb3BlcnR5Q29uc3RyYWludBI2CglhdHRyaWJ1dGUYCCABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmEhEKB2ludF9tYXgYAiABKBFIABIRCgdpbnRfbWluGAMgASgRSAASEgoIdWludF9tYXgYBCABKA1IABISCgh1aW50X21pbhgFIAEoDUgAQgwKCmNvbnN0cmFpbnRKBAgBEAJKBAgGEAdKBAgHEAhSDmF0dHJpYnV0ZV9uYW1lUg5jbHVzdGVyX2lkX2hleFILZW5kcG9pbnRfaWQiwwQKCURldmljZUFjbBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEikKBHJvbGUYAyABKA4yGy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUm9sZRJACg9hbGxvd2VkX2FjdGlvbnMYBCADKA4yJy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUGVybWlzc2lvbkFjdGlvbhJDChZhbGxvd2VkX2F0dHJpYnV0ZV9yZWZzGAcgAygLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhJHChRwcm9wZXJ0eV9jb25zdHJhaW50cxgGIAMoCzIpLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Qcm9wZXJ0eUNvbnN0cmFpbnQSPwoUYWxsb3dlZF9jb21tYW5kX3JlZnMYCSADKAsyIS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQ29tbWFuZFJlZhI7ChJhbGxvd2VkX2V2ZW50X3JlZnMYCiADKAsyHy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuRXZlbnRSZWYSOwoIcmVsYXRpb24YCyABKA4yKS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuTWVtYmVyc2hpcFJlbGF0aW9uSgQIBRAGUhJhbGxvd2VkX2F0dHJpYnV0ZXMi5QEKFEVmZmVjdGl2ZVBlcm1pc3Npb25zEjAKB3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNgoKZ2F0ZXdheV9pZBgCIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZBI1CgtkZXZpY2VfYWNscxgDIAMoCzIgLmt1c2ludGEuaW90LmFjY2Vzcy52MS5EZXZpY2VBY2wSLAoIdmFsaWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKvwCCg1TZXJ2aWNlU2lnbmFsEh4KGlNFUlZJQ0VfU0lHTkFMX1VOU1BFQ0lGSUVEEAASHwobU0VSVklDRV9TSUdOQUxfUkVBQ0hBQklMSVRZEAESGgoWU0VSVklDRV9TSUdOQUxfQkFUVEVSWRACEh0KGVNFUlZJQ0VfU0lHTkFMX1JBRElPX0xJTksQAxIbChdTRVJWSUNFX1NJR05BTF9GSVJNV0FSRRAEEhgKFFNFUlZJQ0VfU0lHTkFMX0ZBVUxUEAUSGQoVU0VSVklDRV9TSUdOQUxfRklMSU5HEAYSHQoZU0VSVklDRV9TSUdOQUxfUk9PTV9TRVRVUBAHEhgKFFNFUlZJQ0VfU0lHTkFMX0xJTktTEAgSHAoYU0VSVklDRV9TSUdOQUxfUkVTSURFTlRTEAkSKgomU0VSVklDRV9TSUdOQUxfRkxPT1JfWk9ORV9VTkNPTlRST0xMRUQQChIaChZTRVJWSUNFX1NJR05BTF9BRERSRVNTEAtCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_roles, file_kusinta_iot_identity_v1_identity]);
15
15
 
16
16
  /**
17
17
  * Describes the message kusinta.iot.access.v1.AttributeRef.
@@ -150,3 +150,50 @@ export declare type ForecastIssue = Message<"kusinta.iot.planning.v1.ForecastIss
150
150
  */
151
151
  export declare const ForecastIssueSchema: GenMessage<ForecastIssue>;
152
152
 
153
+ /**
154
+ * An official reference rate from euros to another currency, published once a working day.
155
+ * Day-ahead prices are always in euros; a client that shows them in the currency a household
156
+ * pays in converts each price at the latest rate published on or before the price's day, in
157
+ * the bidding zone's own time. For display only: a planner compares prices with each other
158
+ * and never needs a rate.
159
+ *
160
+ * @generated from message kusinta.iot.planning.v1.ExchangeRate
161
+ */
162
+ export declare type ExchangeRate = Message<"kusinta.iot.planning.v1.ExchangeRate"> & {
163
+ /**
164
+ * The currency converted to, as ISO 4217 names it: "SEK".
165
+ *
166
+ * @generated from field: string currency = 1;
167
+ */
168
+ currency: string;
169
+
170
+ /**
171
+ * The day the rate was published for, in the publisher's own calendar, as an ISO 8601
172
+ * calendar date (YYYY-MM-DD): "2026-11-10". No rate is published on a weekend or a holiday;
173
+ * the last one published before it applies.
174
+ *
175
+ * @generated from field: string published_on = 2;
176
+ */
177
+ publishedOn: string;
178
+
179
+ /**
180
+ * Units of the currency per euro, times 10 000: 113725 for 11.3725 SEK per EUR.
181
+ *
182
+ * @generated from field: uint32 per_eur_e4 = 3;
183
+ */
184
+ perEurE4: number;
185
+
186
+ /**
187
+ * Who published it, to name wherever a converted price is shown: "Sveriges Riksbank".
188
+ *
189
+ * @generated from field: string source = 4;
190
+ */
191
+ source: string;
192
+ };
193
+
194
+ /**
195
+ * Describes the message kusinta.iot.planning.v1.ExchangeRate.
196
+ * Use `create(ExchangeRateSchema)` to create a new message.
197
+ */
198
+ export declare const ExchangeRateSchema: GenMessage<ExchangeRate>;
199
+
@@ -9,7 +9,7 @@ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
9
9
  * Describes the file kusinta/iot/planning/v1/planning.proto.
10
10
  */
11
11
  export const file_kusinta_iot_planning_v1_planning = /*@__PURE__*/
12
- fileDesc("CiZrdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZy5wcm90bxIXa3VzaW50YS5pb3QucGxhbm5pbmcudjEiTQoMRm9yZWNhc3RDZWxsEh0KFWxhdGl0dWRlX2NlbnRpZGVncmVlcxgBIAEoERIeChZsb25naXR1ZGVfY2VudGlkZWdyZWVzGAIgASgRIn4KDVByaWNlSW50ZXJ2YWwSKQoFc3RhcnQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEicKA2VuZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRZXVyX2NlbnRzX3Blcl9td2gYAyABKBEitwIKDUZvcmVjYXN0UG9pbnQSLAoIdmFsaWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKGHRlbXBlcmF0dXJlX2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBEiAKE3dpbmRfc3BlZWRfY21fcGVyX3MYAyABKA1IAYgBARIeChF3aW5kX2Zyb21fZGVncmVlcxgEIAEoDUgCiAEBEiYKGWdsb2JhbF9yYWRpYXRpb25fd19wZXJfbTIYBSABKA1IA4gBAUIbChlfdGVtcGVyYXR1cmVfY2VudGlkZWdyZWVzQhYKFF93aW5kX3NwZWVkX2NtX3Blcl9zQhQKEl93aW5kX2Zyb21fZGVncmVlc0IcChpfZ2xvYmFsX3JhZGlhdGlvbl93X3Blcl9tMiKLAQoNRm9yZWNhc3RJc3N1ZRItCglpc3N1ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2F0dHJpYnV0aW9uGAIgASgJEjYKBnBvaW50cxgDIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0UG9pbnRCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp]);
12
+ fileDesc("CiZrdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZy5wcm90bxIXa3VzaW50YS5pb3QucGxhbm5pbmcudjEiTQoMRm9yZWNhc3RDZWxsEh0KFWxhdGl0dWRlX2NlbnRpZGVncmVlcxgBIAEoERIeChZsb25naXR1ZGVfY2VudGlkZWdyZWVzGAIgASgRIn4KDVByaWNlSW50ZXJ2YWwSKQoFc3RhcnQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEicKA2VuZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRZXVyX2NlbnRzX3Blcl9td2gYAyABKBEitwIKDUZvcmVjYXN0UG9pbnQSLAoIdmFsaWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKGHRlbXBlcmF0dXJlX2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBEiAKE3dpbmRfc3BlZWRfY21fcGVyX3MYAyABKA1IAYgBARIeChF3aW5kX2Zyb21fZGVncmVlcxgEIAEoDUgCiAEBEiYKGWdsb2JhbF9yYWRpYXRpb25fd19wZXJfbTIYBSABKA1IA4gBAUIbChlfdGVtcGVyYXR1cmVfY2VudGlkZWdyZWVzQhYKFF93aW5kX3NwZWVkX2NtX3Blcl9zQhQKEl93aW5kX2Zyb21fZGVncmVlc0IcChpfZ2xvYmFsX3JhZGlhdGlvbl93X3Blcl9tMiKLAQoNRm9yZWNhc3RJc3N1ZRItCglpc3N1ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2F0dHJpYnV0aW9uGAIgASgJEjYKBnBvaW50cxgDIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0UG9pbnQiWgoMRXhjaGFuZ2VSYXRlEhAKCGN1cnJlbmN5GAEgASgJEhQKDHB1Ymxpc2hlZF9vbhgCIAEoCRISCgpwZXJfZXVyX2U0GAMgASgNEg4KBnNvdXJjZRgEIAEoCUICSAFiBnByb3RvMw", [file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message kusinta.iot.planning.v1.ForecastCell.
@@ -39,3 +39,10 @@ export const ForecastPointSchema = /*@__PURE__*/
39
39
  export const ForecastIssueSchema = /*@__PURE__*/
40
40
  messageDesc(file_kusinta_iot_planning_v1_planning, 3);
41
41
 
42
+ /**
43
+ * Describes the message kusinta.iot.planning.v1.ExchangeRate.
44
+ * Use `create(ExchangeRateSchema)` to create a new message.
45
+ */
46
+ export const ExchangeRateSchema = /*@__PURE__*/
47
+ messageDesc(file_kusinta_iot_planning_v1_planning, 4);
48
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
- import type { ForecastCell, ForecastIssue, PriceInterval } from "./planning_pb.js";
7
+ import type { ExchangeRate, ForecastCell, ForecastIssue, PriceInterval } from "./planning_pb.js";
8
8
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
9
 
10
10
  /**
@@ -81,6 +81,18 @@ export declare type GetPlanningInputsResponse = Message<"kusinta.iot.planning.v1
81
81
  * @generated from field: google.protobuf.Timestamp latest_forecast_issued_at = 3;
82
82
  */
83
83
  latestForecastIssuedAt?: Timestamp | undefined;
84
+
85
+ /**
86
+ * The reference rates to the currency households in the zone pay in (SEK for SE1–SE4):
87
+ * every rate published from the day of prices_from on (its default where unset, in the
88
+ * zone's own time), and the last one published before that day, oldest first — whether or
89
+ * not any price is answered. A gateway that asks from the prices it already holds so learns
90
+ * each new rate as it is published, after the prices it converts have arrived. Empty where
91
+ * no rate is known for the zone's currency.
92
+ *
93
+ * @generated from field: repeated kusinta.iot.planning.v1.ExchangeRate exchange_rates = 4;
94
+ */
95
+ exchangeRates: ExchangeRate[];
84
96
  };
85
97
 
86
98
  /**
@@ -10,7 +10,7 @@ import { file_kusinta_iot_planning_v1_planning } from "./planning_pb.js";
10
10
  * Describes the file kusinta/iot/planning/v1/planning_service.proto.
11
11
  */
12
12
  export const file_kusinta_iot_planning_v1_planning_service = /*@__PURE__*/
13
- fileDesc("Ci5rdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZ19zZXJ2aWNlLnByb3RvEhdrdXNpbnRhLmlvdC5wbGFubmluZy52MSLaAQoYR2V0UGxhbm5pbmdJbnB1dHNSZXF1ZXN0EhQKDGJpZGRpbmdfem9uZRgBIAEoCRI8Cg1mb3JlY2FzdF9jZWxsGAIgASgLMiUua3VzaW50YS5pb3QucGxhbm5pbmcudjEuRm9yZWNhc3RDZWxsEi8KC3ByaWNlc19mcm9tGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVmb3JlY2FzdF9pc3N1ZWRfYWZ0ZXIYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIswBChlHZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlEjYKBnByaWNlcxgBIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLlByaWNlSW50ZXJ2YWwSOAoIZm9yZWNhc3QYAiABKAsyJi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5Gb3JlY2FzdElzc3VlEj0KGWxhdGVzdF9mb3JlY2FzdF9pc3N1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wMpMBChVQbGFubmluZ0lucHV0c1NlcnZpY2USegoRR2V0UGxhbm5pbmdJbnB1dHMSMS5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1JlcXVlc3QaMi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_planning_v1_planning]);
13
+ fileDesc("Ci5rdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZ19zZXJ2aWNlLnByb3RvEhdrdXNpbnRhLmlvdC5wbGFubmluZy52MSLaAQoYR2V0UGxhbm5pbmdJbnB1dHNSZXF1ZXN0EhQKDGJpZGRpbmdfem9uZRgBIAEoCRI8Cg1mb3JlY2FzdF9jZWxsGAIgASgLMiUua3VzaW50YS5pb3QucGxhbm5pbmcudjEuRm9yZWNhc3RDZWxsEi8KC3ByaWNlc19mcm9tGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVmb3JlY2FzdF9pc3N1ZWRfYWZ0ZXIYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIosCChlHZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlEjYKBnByaWNlcxgBIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLlByaWNlSW50ZXJ2YWwSOAoIZm9yZWNhc3QYAiABKAsyJi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5Gb3JlY2FzdElzc3VlEj0KGWxhdGVzdF9mb3JlY2FzdF9pc3N1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj0KDmV4Y2hhbmdlX3JhdGVzGAQgAygLMiUua3VzaW50YS5pb3QucGxhbm5pbmcudjEuRXhjaGFuZ2VSYXRlMpMBChVQbGFubmluZ0lucHV0c1NlcnZpY2USegoRR2V0UGxhbm5pbmdJbnB1dHMSMS5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1JlcXVlc3QaMi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_planning_v1_planning]);
14
14
 
15
15
  /**
16
16
  * Describes the message kusinta.iot.planning.v1.GetPlanningInputsRequest.
@@ -101,7 +101,7 @@ export declare type ProblemSubject = Message<"kusinta.iot.reporting.v1.ProblemSu
101
101
  case: "roomId";
102
102
  } | {
103
103
  /**
104
- * UNFILED_DEVICES: the gateway itself.
104
+ * UNFILED_DEVICES, PLANNING_INPUTS_STALE: the gateway itself.
105
105
  *
106
106
  * @generated from field: bool gateway = 4;
107
107
  */
@@ -1077,11 +1077,12 @@ export enum ProblemKind {
1077
1077
  FLOOR_ZONE_UNCONTROLLED = 10,
1078
1078
 
1079
1079
  /**
1080
- * The gateway's planning inputs (planning.v1) are stale: its forecast is more than six hours
1081
- * old, or the next day's prices are still missing at 16:00 in the bidding zone's own time,
1082
- * well after the day-ahead market has cleared. Building-level: it names the gateway, never
1083
- * a home. Its planner meanwhile shifts no load past what it holds, so nothing goes cold or
1084
- * unsafe while it is open.
1080
+ * The gateway's planning inputs (planning.v1) are stale, for a building whose inputs are on
1081
+ * (webrtc.v1 BUILDING PLANNING): its forecast is more than six hours old, or the next day's
1082
+ * prices are still missing at 16:00 in the bidding zone's own time, well after the
1083
+ * day-ahead market has cleared. Open while any such building's are. Building-level: it
1084
+ * names the gateway, never a home. Its planner meanwhile shifts no load past what it
1085
+ * holds, so nothing goes cold or unsafe while it is open.
1085
1086
  *
1086
1087
  * @generated from enum value: PROBLEM_KIND_PLANNING_INPUTS_STALE = 11;
1087
1088
  */
@@ -7,7 +7,7 @@ import type { Message } from "@bufbuild/protobuf";
7
7
  import type { ConnectorId, DeviceId, SpaceId } from "../../identity/v1/identity_pb.js";
8
8
  import type { AttributeRef } from "../../access/v1/acl_pb.js";
9
9
  import type { Space } from "../../space/v1/space_pb.js";
10
- import type { ManagementAck, ManagementRequest, PrivacyDisclosure, SpaceTree } from "./management_pb.js";
10
+ import type { BuildingPlanning, DayAheadPrices, ManagementAck, ManagementRequest, PrivacyDisclosure, SpaceAddress, SpaceTree } from "./management_pb.js";
11
11
  import type { DeviceLink, DeviceLinkList } from "../../link/v1/link_pb.js";
12
12
  import type { ApartmentClimateSummary, ClimateMode, PlantHistory, RoomClimate, RoomClimateList, RoomHistory } from "../../climate/v1/climate_pb.js";
13
13
  import type { IssuedInvite, SpaceInvites } from "./invite_pb.js";
@@ -517,6 +517,30 @@ export declare type ManagementResult = Message<"kusinta.iot.webrtc.v1.Management
517
517
  */
518
518
  value: PlantHistory;
519
519
  case: "plantHistory";
520
+ } | {
521
+ /**
522
+ * get_building_planning, put_building_planning
523
+ *
524
+ * @generated from field: kusinta.iot.webrtc.v1.BuildingPlanning building_planning = 28;
525
+ */
526
+ value: BuildingPlanning;
527
+ case: "buildingPlanning";
528
+ } | {
529
+ /**
530
+ * get_day_ahead_prices
531
+ *
532
+ * @generated from field: kusinta.iot.webrtc.v1.DayAheadPrices day_ahead_prices = 29;
533
+ */
534
+ value: DayAheadPrices;
535
+ case: "dayAheadPrices";
536
+ } | {
537
+ /**
538
+ * get_space_address, put_space_address
539
+ *
540
+ * @generated from field: kusinta.iot.webrtc.v1.SpaceAddress space_address = 30;
541
+ */
542
+ value: SpaceAddress;
543
+ case: "spaceAddress";
520
544
  } | { case: undefined; value?: undefined };
521
545
  };
522
546
 
@@ -27,7 +27,7 @@ import { file_kusinta_iot_webrtc_v1_permission_push } from "./permission_push_pb
27
27
  * Describes the file kusinta/iot/webrtc/v1/envelope.proto.
28
28
  */
29
29
  export const file_kusinta_iot_webrtc_v1_envelope = /*@__PURE__*/
30
- fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciXwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJEjoKBGNvZGUYAiABKA4yLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSGFuZHNoYWtlUmVqZWN0UmVhc29uIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIo4OChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEj8KDmhlYXRpbmdfbGF5b3V0GA8gASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASPwoOaGVhdGluZ19yZWNvcmQYECABKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdSZWNvcmRIABJKChJhY2NvdW50X2xpbmtfbm9uY2UYESABKAsyLC5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5BY2NvdW50TGlua05vbmNlSAASQQoNYWNjb3VudF9saW5rcxgSIAEoCzIoLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rc0gAElMKFWNvbW1pc3Npb25pbmdfcHJvZmlsZRgTIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABJRChRjb21taXNzaW9uaW5nX3JlY29yZBgUIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1JlY29yZEgAEj8KC2hvbWVfc2V0dXBzGBUgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXBzSAASTwoTY29tbWlzc2lvbmluZ19ncmFudBgWIAEoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYFyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYGCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJIChNob3VzZWhvbGRfaGFuZG92ZXJzGBkgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyc0gAEkIKEGhvdXNlaG9sZF9leHBvcnQYGiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkRXhwb3J0SAASPQoNcGxhbnRfaGlzdG9yeRgbIAEoCzIkLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUGxhbnRIaXN0b3J5SABCCAoGcmVzdWx0IvsBCgxTdGFydFBhaXJpbmcSOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSNAoGd2luZG93GAIgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdXaW5kb3cSOgoQaW5pdGlhbF9zcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPQoJb3duZXJzaGlwGAQgASgOMioua3VzaW50YS5pb3QuY29tbW9uLnYxLkRldmljZU93bmVyc2hpcFR5cGUijwEKDlBhaXJpbmdTdGFydGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCKXAQoPUGFpcmluZ0ZpbmlzaGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEjUKCmRldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwiTQoLTGlua0NoYW5nZWQSLQoEbGluaxgBIAEoCzIfLmt1c2ludGEuaW90LmxpbmsudjEuRGV2aWNlTGluaxIPCgdyZW1vdmVkGAIgASgIIogDChNDb25uZWN0b3JEZXNjcmlwdG9yEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAMgAygNEhgKEHN1cHBvcnRzX3BhaXJpbmcYBCABKAgSHQoVc3VwcG9ydHNfcHJvdmlzaW9uaW5nGAUgASgIEhUKDWJyb2tlcnNfbGlua3MYBiABKAgSMgoEa2luZBgHIAEoDjIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5Db25uZWN0b3JLaW5kEhMKC2Rlc2NyaXB0aW9uGAggASgJEjwKDmJhY2tlbmRfaGVhbHRoGAkgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLkJhY2tlbmRIZWFsdGgSJQodc3VwcG9ydHNfYmFja2VuZF9yZWluaXRpYWxpemUYCiABKAgiVQoTQ29ubmVjdG9yc0Fubm91bmNlZBI+Cgpjb25uZWN0b3JzGAEgAygLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbm5lY3RvckRlc2NyaXB0b3IiRwoSUm9vbUNsaW1hdGVDaGFuZ2VkEjEKBHJvb20YASABKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21DbGltYXRlIlYKEkNsaW1hdGVNb2RlQ2hhbmdlZBIxCgRtb2RlGAEgASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZRINCgVlbmRlZBgCIAEoCCLJDgoOR2F0ZXdheU1lc3NhZ2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJECg5zdGF0ZV9zbmFwc2hvdBgDIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VTdGF0ZVNuYXBzaG90SAASQAoPcHJvcGVydHlfcmVwb3J0GAQgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3BlcnR5UmVwb3J0SAASSAoRcGVybWlzc2lvbl91cGRhdGUYBSABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGl2ZVBlcm1pc3Npb25VcGRhdGVIABI+Cg5jb21tYW5kX3Jlc3VsdBgGIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db21tYW5kUmVzdWx0SAASKwoEcG9uZxgIIAEoCzIbLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qb25nSAASRgoSaGFuZHNoYWtlX3JlamVjdGVkGAkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhhbmRzaGFrZVJlamVjdGVkSAASNAoFZXJyb3IYCiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9ySAASQgoQc3Vic2NyaXB0aW9uX2FjaxgLIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdWJzY3JpcHRpb25BY2tIABI6CgxkZXZpY2VfYWRkZWQYDCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQWRkZWRIABI+Cg5kZXZpY2VfcmVtb3ZlZBgNIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VSZW1vdmVkSAASRAoRbWFuYWdlbWVudF9yZXN1bHQYDiABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFuYWdlbWVudFJlc3VsdEgAEkAKDWRldmljZV9ldmVudHMYECABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRXZlbnRCYXRjaEgAEkAKD3BhaXJpbmdfc3RhcnRlZBgRIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QYWlyaW5nU3RhcnRlZEgAEkIKEHBhaXJpbmdfZmluaXNoZWQYEiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ0ZpbmlzaGVkSAASOgoMbGlua19jaGFuZ2VkGBMgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpbmtDaGFuZ2VkSAASSgoUY29ubmVjdG9yc19hbm5vdW5jZWQYFCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29ubmVjdG9yc0Fubm91bmNlZEgAEkkKFHJvb21fY2xpbWF0ZV9jaGFuZ2VkGBUgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21DbGltYXRlQ2hhbmdlZEgAEkkKFGNsaW1hdGVfbW9kZV9jaGFuZ2VkGBYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsaW1hdGVNb2RlQ2hhbmdlZEgAEk0KFnNlcnZpY2Vfc3RhdHVzX2NoYW5nZWQYFyABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2VydmljZVN0YXR1c0NoYW5nZWRIABI8Cg1zcGFjZV9pbnZpdGVzGBggASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgZIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEk0KEmNvbW1pc3Npb25pbmdfdGVzdBgaIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Rlc3RIABJRChRjb21taXNzaW9uaW5nX2dyYW50cxgbIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50c0gAEkYKEmhvdXNlaG9sZF9oYW5kb3ZlchgcIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Ib3VzZWhvbGRIYW5kb3ZlckgAEk8KF2NsaW1hdGVfaGlzdG9yeV9jbGVhcmVkGB0gASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsaW1hdGVIaXN0b3J5Q2xlYXJlZEgAQgkKB3BheWxvYWRKBAgPEBBKBAgHEAhSFmF0dHJpYnV0ZV93cml0ZV9yZXN1bHRSDnByb3BlcnR5X2V2ZW50IoMFCgpBcHBNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoJaGFuZHNoYWtlGAMgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkFwcEhhbmRzaGFrZUgAEjcKB2NvbW1hbmQYBCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQ29tbWFuZEgAEkIKDHJlYWRfcmVxdWVzdBgFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlYWRSZXF1ZXN0SAASKwoEcGluZxgGIAEoCzIbLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QaW5nSAASPAoJc3Vic2NyaWJlGAcgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlN1YnNjcmliZURldmljZXNIABJACgt1bnN1YnNjcmliZRgIIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VbnN1YnNjcmliZURldmljZXNIABI+CgptYW5hZ2VtZW50GAkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXF1ZXN0SAASRwoPYXR0cmlidXRlX3dyaXRlGAogASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkF0dHJpYnV0ZVdyaXRlUmVxdWVzdEgAEjwKDXN0YXJ0X3BhaXJpbmcYCyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhcnRQYWlyaW5nSABCCQoHcGF5bG9hZCrRAQoVSGFuZHNoYWtlUmVqZWN0UmVhc29uEicKI0hBTkRTSEFLRV9SRUpFQ1RfUkVBU09OX1VOU1BFQ0lGSUVEEAASLAooSEFORFNIQUtFX1JFSkVDVF9SRUFTT05fSU5WQUxJRF9FTkNPRElORxABEi4KKkhBTkRTSEFLRV9SRUpFQ1RfUkVBU09OX0hBTkRTSEFLRV9SRVFVSVJFRBACEjEKLUhBTkRTSEFLRV9SRUpFQ1RfUkVBU09OX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRBADKqICChBHYXRld2F5RXJyb3JDb2RlEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEiMKH0dBVEVXQVlfRVJST1JfQ09ERV9OT1RfRU5USVRMRUQQARImCiJHQVRFV0FZX0VSUk9SX0NPREVfSU5WQUxJRF9SRVFVRVNUEAISIgoeR0FURVdBWV9FUlJPUl9DT0RFX1VOQVZBSUxBQkxFEAMSHwobR0FURVdBWV9FUlJPUl9DT0RFX0lOVEVSTkFMEAQSLAooR0FURVdBWV9FUlJPUl9DT0RFX1NFU1NJT05fTElNSVRfUkVBQ0hFRBAFEioKJkdBVEVXQVlfRVJST1JfQ09ERV9GQUlMRURfUFJFQ09ORElUSU9OEAZCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_webrtc_v1_command, file_kusinta_iot_webrtc_v1_device_state, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_management, file_kusinta_iot_webrtc_v1_members, file_kusinta_iot_webrtc_v1_permission_push]);
30
+ fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciXwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJEjoKBGNvZGUYAiABKA4yLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSGFuZHNoYWtlUmVqZWN0UmVhc29uIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBItUPChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEj8KDmhlYXRpbmdfbGF5b3V0GA8gASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASPwoOaGVhdGluZ19yZWNvcmQYECABKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdSZWNvcmRIABJKChJhY2NvdW50X2xpbmtfbm9uY2UYESABKAsyLC5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5BY2NvdW50TGlua05vbmNlSAASQQoNYWNjb3VudF9saW5rcxgSIAEoCzIoLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rc0gAElMKFWNvbW1pc3Npb25pbmdfcHJvZmlsZRgTIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABJRChRjb21taXNzaW9uaW5nX3JlY29yZBgUIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1JlY29yZEgAEj8KC2hvbWVfc2V0dXBzGBUgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXBzSAASTwoTY29tbWlzc2lvbmluZ19ncmFudBgWIAEoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYFyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYGCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJIChNob3VzZWhvbGRfaGFuZG92ZXJzGBkgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyc0gAEkIKEGhvdXNlaG9sZF9leHBvcnQYGiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkRXhwb3J0SAASPQoNcGxhbnRfaGlzdG9yeRgbIAEoCzIkLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUGxhbnRIaXN0b3J5SAASRAoRYnVpbGRpbmdfcGxhbm5pbmcYHCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQnVpbGRpbmdQbGFubmluZ0gAEkEKEGRheV9haGVhZF9wcmljZXMYHSABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGF5QWhlYWRQcmljZXNIABI8Cg1zcGFjZV9hZGRyZXNzGB4gASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlQWRkcmVzc0gAQggKBnJlc3VsdCL7AQoMU3RhcnRQYWlyaW5nEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEjQKBndpbmRvdxgCIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nV2luZG93EjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj0KCW93bmVyc2hpcBgEIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlIo8BCg5QYWlyaW5nU3RhcnRlZBITCgtpbl9yZXBseV90bxgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwilwEKD1BhaXJpbmdGaW5pc2hlZBITCgtpbl9yZXBseV90bxgBIAEoCRI1CgpkZXZpY2VfaWRzGAIgAygLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSOAoFZXJyb3IYAyABKAsyKS5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ0Vycm9yRGV0YWlsIk0KC0xpbmtDaGFuZ2VkEi0KBGxpbmsYASABKAsyHy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmsSDwoHcmVtb3ZlZBgCIAEoCCKIAwoTQ29ubmVjdG9yRGVzY3JpcHRvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZBIUCgxkaXNwbGF5X25hbWUYAiABKAkSIQoZc3VwcG9ydGVkX2RldmljZV90eXBlX2lkcxgDIAMoDRIYChBzdXBwb3J0c19wYWlyaW5nGAQgASgIEh0KFXN1cHBvcnRzX3Byb3Zpc2lvbmluZxgFIAEoCBIVCg1icm9rZXJzX2xpbmtzGAYgASgIEjIKBGtpbmQYByABKA4yJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQ29ubmVjdG9yS2luZBITCgtkZXNjcmlwdGlvbhgIIAEoCRI8Cg5iYWNrZW5kX2hlYWx0aBgJIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5CYWNrZW5kSGVhbHRoEiUKHXN1cHBvcnRzX2JhY2tlbmRfcmVpbml0aWFsaXplGAogASgIIlUKE0Nvbm5lY3RvcnNBbm5vdW5jZWQSPgoKY29ubmVjdG9ycxgBIAMoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25uZWN0b3JEZXNjcmlwdG9yIkcKElJvb21DbGltYXRlQ2hhbmdlZBIxCgRyb29tGAEgASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tQ2xpbWF0ZSJWChJDbGltYXRlTW9kZUNoYW5nZWQSMQoEbW9kZRgBIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZU1vZGUSDQoFZW5kZWQYAiABKAgiyQ4KDkdhdGV3YXlNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRAoOc3RhdGVfc25hcHNob3QYAyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlU3RhdGVTbmFwc2hvdEgAEkAKD3Byb3BlcnR5X3JlcG9ydBgEIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlcG9ydEgAEkgKEXBlcm1pc3Npb25fdXBkYXRlGAUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpdmVQZXJtaXNzaW9uVXBkYXRlSAASPgoOY29tbWFuZF9yZXN1bHQYBiABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZFJlc3VsdEgAEisKBHBvbmcYCCABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUG9uZ0gAEkYKEmhhbmRzaGFrZV9yZWplY3RlZBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5IYW5kc2hha2VSZWplY3RlZEgAEjQKBWVycm9yGAogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEkIKEHN1YnNjcmlwdGlvbl9hY2sYCyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaXB0aW9uQWNrSAASOgoMZGV2aWNlX2FkZGVkGAwgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUFkZGVkSAASPgoOZGV2aWNlX3JlbW92ZWQYDSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlUmVtb3ZlZEgAEkQKEW1hbmFnZW1lbnRfcmVzdWx0GA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXN1bHRIABJACg1kZXZpY2VfZXZlbnRzGBAgASgLMicua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUV2ZW50QmF0Y2hIABJACg9wYWlyaW5nX3N0YXJ0ZWQYESABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ1N0YXJ0ZWRIABJCChBwYWlyaW5nX2ZpbmlzaGVkGBIgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlBhaXJpbmdGaW5pc2hlZEgAEjoKDGxpbmtfY2hhbmdlZBgTIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaW5rQ2hhbmdlZEgAEkoKFGNvbm5lY3RvcnNfYW5ub3VuY2VkGBQgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbm5lY3RvcnNBbm5vdW5jZWRIABJJChRyb29tX2NsaW1hdGVfY2hhbmdlZBgVIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tQ2xpbWF0ZUNoYW5nZWRIABJJChRjbGltYXRlX21vZGVfY2hhbmdlZBgWIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGltYXRlTW9kZUNoYW5nZWRIABJNChZzZXJ2aWNlX3N0YXR1c19jaGFuZ2VkGBcgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VTdGF0dXNDaGFuZ2VkSAASPAoNc3BhY2VfaW52aXRlcxgYIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TcGFjZUludml0ZXNIABJGChJwcm9tb3Rpb25fcmVxdWVzdHMYGSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvbW90aW9uUmVxdWVzdHNIABJNChJjb21taXNzaW9uaW5nX3Rlc3QYGiABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdUZXN0SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYGyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYHCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJPChdjbGltYXRlX2hpc3RvcnlfY2xlYXJlZBgdIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGltYXRlSGlzdG9yeUNsZWFyZWRIAEIJCgdwYXlsb2FkSgQIDxAQSgQIBxAIUhZhdHRyaWJ1dGVfd3JpdGVfcmVzdWx0Ug5wcm9wZXJ0eV9ldmVudCKDBQoKQXBwTWVzc2FnZRISCgptZXNzYWdlX2lkGAEgASgJEisKB3NlbnRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKCWhhbmRzaGFrZRgDIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BcHBIYW5kc2hha2VIABI3Cgdjb21tYW5kGAQgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUNvbW1hbmRIABJCCgxyZWFkX3JlcXVlc3QYBSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvcGVydHlSZWFkUmVxdWVzdEgAEisKBHBpbmcYBiABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGluZ0gAEjwKCXN1YnNjcmliZRgHIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdWJzY3JpYmVEZXZpY2VzSAASQAoLdW5zdWJzY3JpYmUYCCABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuVW5zdWJzY3JpYmVEZXZpY2VzSAASPgoKbWFuYWdlbWVudBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50UmVxdWVzdEgAEkcKD2F0dHJpYnV0ZV93cml0ZRgKIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BdHRyaWJ1dGVXcml0ZVJlcXVlc3RIABI8Cg1zdGFydF9wYWlyaW5nGAsgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YXJ0UGFpcmluZ0gAQgkKB3BheWxvYWQq0QEKFUhhbmRzaGFrZVJlamVjdFJlYXNvbhInCiNIQU5EU0hBS0VfUkVKRUNUX1JFQVNPTl9VTlNQRUNJRklFRBAAEiwKKEhBTkRTSEFLRV9SRUpFQ1RfUkVBU09OX0lOVkFMSURfRU5DT0RJTkcQARIuCipIQU5EU0hBS0VfUkVKRUNUX1JFQVNPTl9IQU5EU0hBS0VfUkVRVUlSRUQQAhIxCi1IQU5EU0hBS0VfUkVKRUNUX1JFQVNPTl9BVVRIRU5USUNBVElPTl9GQUlMRUQQAyqiAgoQR2F0ZXdheUVycm9yQ29kZRIiCh5HQVRFV0FZX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIjCh9HQVRFV0FZX0VSUk9SX0NPREVfTk9UX0VOVElUTEVEEAESJgoiR0FURVdBWV9FUlJPUl9DT0RFX0lOVkFMSURfUkVRVUVTVBACEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTkFWQUlMQUJMRRADEh8KG0dBVEVXQVlfRVJST1JfQ09ERV9JTlRFUk5BTBAEEiwKKEdBVEVXQVlfRVJST1JfQ09ERV9TRVNTSU9OX0xJTUlUX1JFQUNIRUQQBRIqCiZHQVRFV0FZX0VSUk9SX0NPREVfRkFJTEVEX1BSRUNPTkRJVElPThAGQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_webrtc_v1_command, file_kusinta_iot_webrtc_v1_device_state, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_management, file_kusinta_iot_webrtc_v1_members, file_kusinta_iot_webrtc_v1_permission_push]);
31
31
 
32
32
  /**
33
33
  * Describes the message kusinta.iot.webrtc.v1.Ping.
@@ -12,6 +12,7 @@ import type { Space } from "../../space/v1/space_pb.js";
12
12
  import type { LinkFunction, LinkMode, LinkSettings } from "../../link/v1/link_pb.js";
13
13
  import type { ClimateModeKind, ClimateSummaryPeriod, InnerRoomLimits, RoomHistoryResolution } from "../../climate/v1/climate_pb.js";
14
14
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
15
+ import type { ExchangeRate, ForecastCell, PriceInterval } from "../../planning/v1/planning_pb.js";
15
16
  import type { CancelHouseholdHandover, ClearClimateHistory, ConfirmHouseholdHandover, DemoteHouseholdAdmin, ExportHouseholdData, ListHouseholdHandovers, SetHomeName, StaffAppointment, StartHouseholdHandover } from "./household_pb.js";
16
17
  import type { BindingRef, CommissioningFact, CommissioningGrantRecord, HouseTemplate, TestKind, TestState } from "../../commissioning/v1/commissioning_pb.js";
17
18
  import type { ServiceSignal } from "../../access/v1/acl_pb.js";
@@ -1163,6 +1164,329 @@ export declare type GetPlantHistory = Message<"kusinta.iot.webrtc.v1.GetPlantHis
1163
1164
  */
1164
1165
  export declare const GetPlantHistorySchema: GenMessage<GetPlantHistory>;
1165
1166
 
1167
+ /**
1168
+ * Reads a building's planning record. Answered as BuildingPlanning.
1169
+ *
1170
+ * @generated from message kusinta.iot.webrtc.v1.GetBuildingPlanning
1171
+ */
1172
+ export declare type GetBuildingPlanning = Message<"kusinta.iot.webrtc.v1.GetBuildingPlanning"> & {
1173
+ /**
1174
+ * The building: a top-level space. Any other space is refused as INVALID_REQUEST.
1175
+ *
1176
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1177
+ */
1178
+ spaceId?: SpaceId | undefined;
1179
+ };
1180
+
1181
+ /**
1182
+ * Describes the message kusinta.iot.webrtc.v1.GetBuildingPlanning.
1183
+ * Use `create(GetBuildingPlanningSchema)` to create a new message.
1184
+ */
1185
+ export declare const GetBuildingPlanningSchema: GenMessage<GetBuildingPlanning>;
1186
+
1187
+ /**
1188
+ * Replaces a building's planning record whole. Answered as BuildingPlanning, as it now stands.
1189
+ *
1190
+ * A zone and a cell together turn the building's planning inputs on: the gateway asks for
1191
+ * prices and the forecast from then on. Without either, it asks for nothing for the building,
1192
+ * and no PLANNING_INPUTS_STALE is opened for it (reporting.v1). A put without a zone and a cell
1193
+ * removes them: nothing of them is kept.
1194
+ *
1195
+ * @generated from message kusinta.iot.webrtc.v1.PutBuildingPlanning
1196
+ */
1197
+ export declare type PutBuildingPlanning = Message<"kusinta.iot.webrtc.v1.PutBuildingPlanning"> & {
1198
+ /**
1199
+ * The building: a top-level space. Any other space is refused as INVALID_REQUEST.
1200
+ *
1201
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1202
+ */
1203
+ spaceId?: SpaceId | undefined;
1204
+
1205
+ /**
1206
+ * The bidding zone's short code, as planning.v1.GetPlanningInputsRequest.bidding_zone names
1207
+ * it: "SE1" to "SE4". A client offers the zone the building's grid connection is in. Its
1208
+ * location may suggest one, but the connection decides, and the zone is printed on the
1209
+ * grid operator's invoice. A code the gateway does not know is refused as INVALID_REQUEST
1210
+ * with metadata {"reason": "bidding_zone"}. Empty: none.
1211
+ *
1212
+ * @generated from field: string bidding_zone = 2;
1213
+ */
1214
+ biddingZone: string;
1215
+
1216
+ /**
1217
+ * The forecast cell's corner. A cell planning.v1.ForecastCell refuses is refused here as
1218
+ * INVALID_REQUEST with metadata {"reason": "forecast_cell"}. Unset: none.
1219
+ *
1220
+ * @generated from field: kusinta.iot.planning.v1.ForecastCell forecast_cell = 3;
1221
+ */
1222
+ forecastCell?: ForecastCell | undefined;
1223
+
1224
+ /**
1225
+ * The owner's choice to keep the building's planning inputs off while both values are
1226
+ * set: the gateway asks for nothing for the building. False, the default, leaves them on.
1227
+ *
1228
+ * @generated from field: bool inputs_off = 4;
1229
+ */
1230
+ inputsOff: boolean;
1231
+ };
1232
+
1233
+ /**
1234
+ * Describes the message kusinta.iot.webrtc.v1.PutBuildingPlanning.
1235
+ * Use `create(PutBuildingPlanningSchema)` to create a new message.
1236
+ */
1237
+ export declare const PutBuildingPlanningSchema: GenMessage<PutBuildingPlanning>;
1238
+
1239
+ /**
1240
+ * A building's planning record, and how its inputs stand.
1241
+ *
1242
+ * @generated from message kusinta.iot.webrtc.v1.BuildingPlanning
1243
+ */
1244
+ export declare type BuildingPlanning = Message<"kusinta.iot.webrtc.v1.BuildingPlanning"> & {
1245
+ /**
1246
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1247
+ */
1248
+ spaceId?: SpaceId | undefined;
1249
+
1250
+ /**
1251
+ * As put. Empty, unset: none.
1252
+ *
1253
+ * @generated from field: string bidding_zone = 2;
1254
+ */
1255
+ biddingZone: string;
1256
+
1257
+ /**
1258
+ * @generated from field: kusinta.iot.planning.v1.ForecastCell forecast_cell = 3;
1259
+ */
1260
+ forecastCell?: ForecastCell | undefined;
1261
+
1262
+ /**
1263
+ * @generated from field: bool inputs_off = 4;
1264
+ */
1265
+ inputsOff: boolean;
1266
+
1267
+ /**
1268
+ * The end of the last price interval the gateway holds for the zone without a gap from the
1269
+ * current interval on, as the stale rule reads them. Unset where it holds no current one.
1270
+ *
1271
+ * @generated from field: google.protobuf.Timestamp prices_through = 5;
1272
+ */
1273
+ pricesThrough?: Timestamp | undefined;
1274
+
1275
+ /**
1276
+ * When the forecast the gateway holds for the cell was issued. Unset where it holds none.
1277
+ *
1278
+ * @generated from field: google.protobuf.Timestamp forecast_issued_at = 6;
1279
+ */
1280
+ forecastIssuedAt?: Timestamp | undefined;
1281
+
1282
+ /**
1283
+ * Whether the building's inputs are stale, by the rule of reporting.v1
1284
+ * PROBLEM_KIND_PLANNING_INPUTS_STALE. False while the inputs are off, or while the gateway
1285
+ * has not yet asked for them since they were put.
1286
+ *
1287
+ * @generated from field: bool stale = 7;
1288
+ */
1289
+ stale: boolean;
1290
+ };
1291
+
1292
+ /**
1293
+ * Describes the message kusinta.iot.webrtc.v1.BuildingPlanning.
1294
+ * Use `create(BuildingPlanningSchema)` to create a new message.
1295
+ */
1296
+ export declare const BuildingPlanningSchema: GenMessage<BuildingPlanning>;
1297
+
1298
+ /**
1299
+ * Reads the day-ahead prices for the bidding zone of the building a space is in, so that a
1300
+ * client can draw them. Answered as DayAheadPrices.
1301
+ *
1302
+ * Given to anyone who reaches the space, residents and service included: a price is for a
1303
+ * zone, never for a home, and says nothing of anyone. Only the raw market price is answered.
1304
+ * What a household pays on top of it — the grid fee, taxes, the supplier's margin — is not
1305
+ * part of this record.
1306
+ *
1307
+ * @generated from message kusinta.iot.webrtc.v1.GetDayAheadPrices
1308
+ */
1309
+ export declare type GetDayAheadPrices = Message<"kusinta.iot.webrtc.v1.GetDayAheadPrices"> & {
1310
+ /**
1311
+ * Any space the caller reaches. Answered for the building it is in.
1312
+ *
1313
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1314
+ */
1315
+ spaceId?: SpaceId | undefined;
1316
+
1317
+ /**
1318
+ * [from_time, to_time). Intervals overlapping it are answered. Unset from_time: the start of
1319
+ * the current day in the bidding zone's own time. Unset to_time: from_time plus 31 days,
1320
+ * and no further than the last interval held; where none is held after from_time, the
1321
+ * answer is empty. A to_time the caller sets more than 31 days after from_time, or not
1322
+ * after it, is refused as INVALID_REQUEST with metadata {"reason": "span"}.
1323
+ *
1324
+ * @generated from field: google.protobuf.Timestamp from_time = 2;
1325
+ */
1326
+ fromTime?: Timestamp | undefined;
1327
+
1328
+ /**
1329
+ * @generated from field: google.protobuf.Timestamp to_time = 3;
1330
+ */
1331
+ toTime?: Timestamp | undefined;
1332
+ };
1333
+
1334
+ /**
1335
+ * Describes the message kusinta.iot.webrtc.v1.GetDayAheadPrices.
1336
+ * Use `create(GetDayAheadPricesSchema)` to create a new message.
1337
+ */
1338
+ export declare const GetDayAheadPricesSchema: GenMessage<GetDayAheadPrices>;
1339
+
1340
+ /**
1341
+ * The prices GetDayAheadPrices asked for.
1342
+ *
1343
+ * @generated from message kusinta.iot.webrtc.v1.DayAheadPrices
1344
+ */
1345
+ export declare type DayAheadPrices = Message<"kusinta.iot.webrtc.v1.DayAheadPrices"> & {
1346
+ /**
1347
+ * The zone they are for. Empty where the building has none, and then no prices are given.
1348
+ *
1349
+ * @generated from field: string bidding_zone = 1;
1350
+ */
1351
+ biddingZone: string;
1352
+
1353
+ /**
1354
+ * Oldest first and never overlapping, as the gateway holds them. A time no interval covers
1355
+ * is a gap, never a price of zero, and a client draws it as one. Empty where the gateway
1356
+ * holds none in the span.
1357
+ *
1358
+ * @generated from field: repeated kusinta.iot.planning.v1.PriceInterval prices = 2;
1359
+ */
1360
+ prices: PriceInterval[];
1361
+
1362
+ /**
1363
+ * The reference rates a client converts the prices at, as planning.v1.ExchangeRate says:
1364
+ * every rate the gateway holds from the day of the first price on, and the last one before
1365
+ * it, oldest first. Empty where it holds none; a client then shows the prices in euros.
1366
+ *
1367
+ * @generated from field: repeated kusinta.iot.planning.v1.ExchangeRate exchange_rates = 3;
1368
+ */
1369
+ exchangeRates: ExchangeRate[];
1370
+ };
1371
+
1372
+ /**
1373
+ * Describes the message kusinta.iot.webrtc.v1.DayAheadPrices.
1374
+ * Use `create(DayAheadPricesSchema)` to create a new message.
1375
+ */
1376
+ export declare const DayAheadPricesSchema: GenMessage<DayAheadPrices>;
1377
+
1378
+ /**
1379
+ * Reads a space's address. Answered as SpaceAddress.
1380
+ *
1381
+ * @generated from message kusinta.iot.webrtc.v1.GetSpaceAddress
1382
+ */
1383
+ export declare type GetSpaceAddress = Message<"kusinta.iot.webrtc.v1.GetSpaceAddress"> & {
1384
+ /**
1385
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1386
+ */
1387
+ spaceId?: SpaceId | undefined;
1388
+ };
1389
+
1390
+ /**
1391
+ * Describes the message kusinta.iot.webrtc.v1.GetSpaceAddress.
1392
+ * Use `create(GetSpaceAddressSchema)` to create a new message.
1393
+ */
1394
+ export declare const GetSpaceAddressSchema: GenMessage<GetSpaceAddress>;
1395
+
1396
+ /**
1397
+ * Replaces a space's address whole. Answered as SpaceAddress, as it now stands.
1398
+ *
1399
+ * @generated from message kusinta.iot.webrtc.v1.PutSpaceAddress
1400
+ */
1401
+ export declare type PutSpaceAddress = Message<"kusinta.iot.webrtc.v1.PutSpaceAddress"> & {
1402
+ /**
1403
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1404
+ */
1405
+ spaceId?: SpaceId | undefined;
1406
+
1407
+ /**
1408
+ * Unset: the address is removed, and nothing of it is kept.
1409
+ *
1410
+ * @generated from field: kusinta.iot.webrtc.v1.PostalAddress address = 2;
1411
+ */
1412
+ address?: PostalAddress | undefined;
1413
+ };
1414
+
1415
+ /**
1416
+ * Describes the message kusinta.iot.webrtc.v1.PutSpaceAddress.
1417
+ * Use `create(PutSpaceAddressSchema)` to create a new message.
1418
+ */
1419
+ export declare const PutSpaceAddressSchema: GenMessage<PutSpaceAddress>;
1420
+
1421
+ /**
1422
+ * A postal address, as a person writes it. Free text in each field; a field's bound counts
1423
+ * Unicode code points, not bytes or UTF-16 code units. A set address without a street, a
1424
+ * field longer than its bound, or a country that is not two capital letters is refused as
1425
+ * INVALID_REQUEST with metadata {"reason": "address"}.
1426
+ *
1427
+ * @generated from message kusinta.iot.webrtc.v1.PostalAddress
1428
+ */
1429
+ export declare type PostalAddress = Message<"kusinta.iot.webrtc.v1.PostalAddress"> & {
1430
+ /**
1431
+ * The street and number, with any entrance or flat: "Exempelgatan 1". Up to 200 characters.
1432
+ *
1433
+ * @generated from field: string street = 1;
1434
+ */
1435
+ street: string;
1436
+
1437
+ /**
1438
+ * As written locally: "123 45". Up to 16 characters. Empty: none.
1439
+ *
1440
+ * @generated from field: string postal_code = 2;
1441
+ */
1442
+ postalCode: string;
1443
+
1444
+ /**
1445
+ * Up to 100 characters. Empty: none.
1446
+ *
1447
+ * @generated from field: string town = 3;
1448
+ */
1449
+ town: string;
1450
+
1451
+ /**
1452
+ * ISO 3166-1 alpha-2: "SE". Empty: none.
1453
+ *
1454
+ * @generated from field: string country = 4;
1455
+ */
1456
+ country: string;
1457
+ };
1458
+
1459
+ /**
1460
+ * Describes the message kusinta.iot.webrtc.v1.PostalAddress.
1461
+ * Use `create(PostalAddressSchema)` to create a new message.
1462
+ */
1463
+ export declare const PostalAddressSchema: GenMessage<PostalAddress>;
1464
+
1465
+ /**
1466
+ * A space's address.
1467
+ *
1468
+ * @generated from message kusinta.iot.webrtc.v1.SpaceAddress
1469
+ */
1470
+ export declare type SpaceAddress = Message<"kusinta.iot.webrtc.v1.SpaceAddress"> & {
1471
+ /**
1472
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1473
+ */
1474
+ spaceId?: SpaceId | undefined;
1475
+
1476
+ /**
1477
+ * Unset: the space has none.
1478
+ *
1479
+ * @generated from field: kusinta.iot.webrtc.v1.PostalAddress address = 2;
1480
+ */
1481
+ address?: PostalAddress | undefined;
1482
+ };
1483
+
1484
+ /**
1485
+ * Describes the message kusinta.iot.webrtc.v1.SpaceAddress.
1486
+ * Use `create(SpaceAddressSchema)` to create a new message.
1487
+ */
1488
+ export declare const SpaceAddressSchema: GenMessage<SpaceAddress>;
1489
+
1166
1490
  /**
1167
1491
  * What the parties who do not live in a private space learn of it — the answer to a
1168
1492
  * resident asking who can see what in their home, in reply to GetPrivacyDisclosure.
@@ -2598,6 +2922,40 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
2598
2922
  */
2599
2923
  value: GetPlantHistory;
2600
2924
  case: "getPlantHistory";
2925
+ } | {
2926
+ /**
2927
+ * Building planning; see BUILDING PLANNING.
2928
+ *
2929
+ * @generated from field: kusinta.iot.webrtc.v1.GetBuildingPlanning get_building_planning = 72;
2930
+ */
2931
+ value: GetBuildingPlanning;
2932
+ case: "getBuildingPlanning";
2933
+ } | {
2934
+ /**
2935
+ * @generated from field: kusinta.iot.webrtc.v1.PutBuildingPlanning put_building_planning = 73;
2936
+ */
2937
+ value: PutBuildingPlanning;
2938
+ case: "putBuildingPlanning";
2939
+ } | {
2940
+ /**
2941
+ * @generated from field: kusinta.iot.webrtc.v1.GetDayAheadPrices get_day_ahead_prices = 74;
2942
+ */
2943
+ value: GetDayAheadPrices;
2944
+ case: "getDayAheadPrices";
2945
+ } | {
2946
+ /**
2947
+ * A building's or a home's street address; see SPACE ADDRESS.
2948
+ *
2949
+ * @generated from field: kusinta.iot.webrtc.v1.GetSpaceAddress get_space_address = 75;
2950
+ */
2951
+ value: GetSpaceAddress;
2952
+ case: "getSpaceAddress";
2953
+ } | {
2954
+ /**
2955
+ * @generated from field: kusinta.iot.webrtc.v1.PutSpaceAddress put_space_address = 76;
2956
+ */
2957
+ value: PutSpaceAddress;
2958
+ case: "putSpaceAddress";
2601
2959
  } | { case: undefined; value?: undefined };
2602
2960
  };
2603
2961
 
@@ -13,6 +13,7 @@ import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
13
13
  import { file_kusinta_iot_heating_v1_heating } from "../../heating/v1/heating_pb.js";
14
14
  import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
15
15
  import { file_kusinta_iot_link_v1_link } from "../../link/v1/link_pb.js";
16
+ import { file_kusinta_iot_planning_v1_planning } from "../../planning/v1/planning_pb.js";
16
17
  import { file_kusinta_iot_space_v1_space } from "../../space/v1/space_pb.js";
17
18
  import { file_kusinta_iot_vendor_lorawan_v1_lorawan } from "../../vendor/lorawan/v1/lorawan_pb.js";
18
19
  import { file_kusinta_iot_webrtc_v1_household } from "./household_pb.js";
@@ -23,7 +24,7 @@ import { file_kusinta_iot_webrtc_v1_members } from "./members_pb.js";
23
24
  * Describes the file kusinta/iot/webrtc/v1/management.proto.
24
25
  */
25
26
  export const file_kusinta_iot_webrtc_v1_management = /*@__PURE__*/
26
- fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMiPAoOUm9vbUxpbWl0VmFsdWUSGQoMY2VudGlkZWdyZWVzGAEgASgRSACIAQFCDwoNX2NlbnRpZGVncmVlcyKFAwoUQ29uZmlndXJlUm9vbUNsaW1hdGUSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMQoGbGltaXRzGAIgASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdHMSMwoHc2Vuc29ycxgDIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tU2Vuc29ycxIhChRsb2NrX2RldmljZV9jb250cm9scxgEIAEoCEgAiAEBEjcKCGF3YXlfbWluGAUgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEj0KDm1vdmVfaW5fdGFyZ2V0GAYgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEh4KFmFjY2VwdF9iZWxvd190aHJlc2hvbGQYByABKAhCFwoVX2xvY2tfZGV2aWNlX2NvbnRyb2xzIoABChJTZXRJbm5lclJvb21MaW1pdHMSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNwoGbGltaXRzGAIgASgLMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Jbm5lclJvb21MaW1pdHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIuIBCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKCnJlc29sdXRpb24YBCABKA4yLS5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21IaXN0b3J5UmVzb2x1dGlvbiLCAQoPR2V0UGxhbnRIaXN0b3J5EhAKCHBsYW50X2lkGAEgASgJEi0KCWZyb21fdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHdG9fdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoKcmVzb2x1dGlvbhgEIAEoDjItLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlSZXNvbHV0aW9uIq0DChFQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoPc2VydmljZV9wYXJ0aWVzGAUgAygLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VQYXJ0eRJMChZjbGltYXRlX3N1bW1hcnlfcGVyaW9kGAQgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBIfChdvd25lcl9vcmdhbmlzYXRpb25fbmFtZRgGIAEoCRIWCg5uYW1lc193aXRoaGVsZBgHIAEoCBJDChJzdGFmZl9hcHBvaW50bWVudHMYCCADKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhZmZBcHBvaW50bWVudBJUChRjb21taXNzaW9uaW5nX2dyYW50cxgJIAMoCzI2Lmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50UmVjb3JkSgQIAhAEIn8KDFNlcnZpY2VQYXJ0eRIpCgRyb2xlGAEgASgOMhsua3VzaW50YS5pb3QuYWNjZXNzLnYxLlJvbGUSNQoHc2lnbmFscxgCIAMoDjIkLmt1c2ludGEuaW90LmFjY2Vzcy52MS5TZXJ2aWNlU2lnbmFsEg0KBW5hbWVzGAMgAygJIkoKFEdldFByaXZhY3lEaXNjbG9zdXJlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCLuAQoaR2V0QXBhcnRtZW50Q2xpbWF0ZVN1bW1hcnkSNgoMYXBhcnRtZW50X2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI8CgZwZXJpb2QYAiABKA4yLC5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVTdW1tYXJ5UGVyaW9kEi0KCWZyb21fdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHdG9fdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiUAoSUmVjb25uZWN0Q29ubmVjdG9yEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkIkYKC0xpc3RIZWF0aW5nEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIkYKD1B1dEhlYXRpbmdQbGFudBIzCgVwbGFudBgBIAEoCzIkLmt1c2ludGEuaW90LmhlYXRpbmcudjEuSGVhdGluZ1BsYW50IkwKEVB1dEhlYXRpbmdDaXJjdWl0EjcKB2NpcmN1aXQYASABKAsyJi5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdDaXJjdWl0Ij8KDFB1dEZsb29yWm9uZRIvCgR6b25lGAEgASgLMiEua3VzaW50YS5pb3QuaGVhdGluZy52MS5GbG9vclpvbmUiSwoOUHV0Q29tZm9ydExvYWQSOQoMY29tZm9ydF9sb2FkGAEgASgLMiMua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db21mb3J0TG9hZCIzChNSZW1vdmVIZWF0aW5nUmVjb3JkEgoKAmlkGAEgASgJEhAKCHJldmlzaW9uGAIgASgEIpgBChFTZXRDb21mb3J0V2luZG93cxIXCg9jb21mb3J0X2xvYWRfaWQYASABKAkSNgoHd2luZG93cxgCIAMoCzIlLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydFdpbmRvdxIdChB3aW5kb3dzX3JldmlzaW9uGAMgASgESACIAQFCEwoRX3dpbmRvd3NfcmV2aXNpb24iiAEKF1JlcXVlc3RBY2NvdW50TGlua05vbmNlEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjoKB3NlcnZpY2UYAiABKA4yKS5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5MaW5rZWRTZXJ2aWNlIkUKEExpc3RBY2NvdW50TGlua3MSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQifgoNVW5saW5rQWNjb3VudBIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI6CgdzZXJ2aWNlGAIgASgOMikua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuTGlua2VkU2VydmljZSJHChFMaXN0Q29tbWlzc2lvbmluZxIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiVQoUUHV0Q29tbWlzc2lvbmluZ0ZhY3QSPQoEZmFjdBgBIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0ZhY3QiPAoXUmVtb3ZlQ29tbWlzc2lvbmluZ0ZhY3QSDwoHZmFjdF9pZBgBIAEoCRIQCghyZXZpc2lvbhgCIAEoBCJRChBQdXRIb3VzZVRlbXBsYXRlEj0KCHRlbXBsYXRlGAEgASgLMisua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib3VzZVRlbXBsYXRlIlkKD1NldEhvbWVUZW1wbGF0ZRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBITCgt0ZW1wbGF0ZV9pZBgCIAEoCSKfAQoUUnVuQ29tbWlzc2lvbmluZ1Rlc3QSNAoEa2luZBgBIAEoDjImLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdEtpbmQSOQoHYmluZGluZxgEIAEoCzIoLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQmluZGluZ1JlZkoECAIQBFIJcmVjb3JkX2lkUgVmaWVsZCJmChlDb25jbHVkZUNvbW1pc3Npb25pbmdUZXN0Eg8KB3Rlc3RfaWQYASABKAkSOAoHdmVyZGljdBgCIAEoDjInLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdFN0YXRlIkkKDkxpc3RIb21lU2V0dXBzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIk8KGVJlcXVlc3RDb21taXNzaW9uaW5nR3JhbnQSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIpgBChhBbnN3ZXJDb21taXNzaW9uaW5nR3JhbnQSEAoIZ3JhbnRfaWQYASABKAkSDgoGYWNjZXB0GAIgASgIEi0KCXN0YXJ0c19hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHZW5kc19hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiKQoVRW5kQ29tbWlzc2lvbmluZ0dyYW50EhAKCGdyYW50X2lkGAEgASgJIlIKF0xpc3RDb21taXNzaW9uaW5nR3JhbnRzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIn0KDVNldEFzc2V0T3duZXISNAoJZGV2aWNlX2lkGAEgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSNgoLYXNzZXRfb3duZXIYAiABKAsyIS5rdXNpbnRhLmlvdC5jb21tb24udjEuQXNzZXRPd25lciLVKAoRTWFuYWdlbWVudFJlcXVlc3QSOgoMY3JlYXRlX3NwYWNlGAEgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkNyZWF0ZVNwYWNlSAASOgoMdXBkYXRlX3NwYWNlGAIgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLlVwZGF0ZVNwYWNlSAASOgoMZGVsZXRlX3NwYWNlGAMgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkRlbGV0ZVNwYWNlSAASSAoUYXNzaWduX3VzZXJfdG9fc3BhY2UYBCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXNzaWduVXNlclRvU3BhY2VIABJMChZyZW1vdmVfdXNlcl9mcm9tX3NwYWNlGAUgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZVVzZXJGcm9tU3BhY2VIABJKChVwbGFjZV9kZXZpY2VfaW5fc3BhY2UYBiABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGxhY2VEZXZpY2VJblNwYWNlSAASUAoYcmVtb3ZlX2RldmljZV9mcm9tX3NwYWNlGAcgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZURldmljZUZyb21TcGFjZUgAEjoKDGNsYWltX2RldmljZRgIIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGFpbURldmljZUgAEj4KDnJlbGVhc2VfZGV2aWNlGAkgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbGVhc2VEZXZpY2VIABI4CgtsaXN0X3NwYWNlcxgKIAEoCzIhLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0U3BhY2VzSAASRQoSY3JlYXRlX2RldmljZV9saW5rGAsgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkNyZWF0ZURldmljZUxpbmtIABJFChJyZW1vdmVfZGV2aWNlX2xpbmsYDCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRGV2aWNlTGlua0gAEkMKEWxpc3RfZGV2aWNlX2xpbmtzGA0gASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3REZXZpY2VMaW5rc0gAEkUKEnVwZGF0ZV9kZXZpY2VfbGluaxgOIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VcGRhdGVEZXZpY2VMaW5rSAASQgoQcHJvdmlzaW9uX2RldmljZRgPIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm92aXNpb25EZXZpY2VIABI/Cg9zZXRfcm9vbV90YXJnZXQYECABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Um9vbVRhcmdldEgAEk0KFmNvbmZpZ3VyZV9yb29tX2NsaW1hdGUYESABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29uZmlndXJlUm9vbUNsaW1hdGVIABJBChBzZXRfY2xpbWF0ZV9tb2RlGBIgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldENsaW1hdGVNb2RlSAASRQoSbGlzdF9yb29tX2NsaW1hdGVzGBMgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RSb29tQ2xpbWF0ZXNIABJBChBnZXRfcm9vbV9oaXN0b3J5GBQgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldFJvb21IaXN0b3J5SAASTQoWZ2V0X3ByaXZhY3lfZGlzY2xvc3VyZRgVIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRQcml2YWN5RGlzY2xvc3VyZUgAEloKHWdldF9hcGFydG1lbnRfY2xpbWF0ZV9zdW1tYXJ5GBYgASgLMjEua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldEFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASSAoTcmVjb25uZWN0X2Nvbm5lY3RvchgXIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZWNvbm5lY3RDb25uZWN0b3JIABI8Cg1jcmVhdGVfaW52aXRlGBggASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkNyZWF0ZUludml0ZUgAEjwKDXJlc2VuZF9pbnZpdGUYGSABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVzZW5kSW52aXRlSAASPAoNcmV2b2tlX2ludml0ZRgaIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXZva2VJbnZpdGVIABJMChZtYXJrX2ludml0ZV9lbWFpbF9zZW50GBsgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hcmtJbnZpdGVFbWFpbFNlbnRIABJFChJsaXN0X3NwYWNlX2ludml0ZXMYHCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFNwYWNlSW52aXRlc0gAEkkKFGFwcHJvdmVfam9pbl9yZXF1ZXN0GB0gASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkFwcHJvdmVKb2luUmVxdWVzdEgAEkMKEWRlbnlfam9pbl9yZXF1ZXN0GB4gASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLkRlbnlKb2luUmVxdWVzdEgAEkkKFGxpc3RfZ2F0ZXdheV9tZW1iZXJzGB8gASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RHYXRld2F5TWVtYmVyc0gAEj8KD3NldF9tZW1iZXJfcm9sZRggIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRNZW1iZXJSb2xlSAASRwoTcmVtb3ZlX2Zyb21fZ2F0ZXdheRghIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVGcm9tR2F0ZXdheUgAEkEKEHNldF9hY2Nlc3NfdW50aWwYIiABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0QWNjZXNzVW50aWxIABJRChZzZXRfb3duZXJfb3JnYW5pc2F0aW9uGCMgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldE93bmVyT3JnYW5pc2F0aW9uQgIYAUgAEkQKEXJlcXVlc3RfcHJvbW90aW9uGCQgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlcXVlc3RQcm9tb3Rpb25IABJCChBhbnN3ZXJfcHJvbW90aW9uGCUgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLkFuc3dlclByb21vdGlvbkgAEk8KF2xpc3RfcHJvbW90aW9uX3JlcXVlc3RzGCYgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RQcm9tb3Rpb25SZXF1ZXN0c0gAEjoKDGxpc3RfaGVhdGluZxgnIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0SGVhdGluZ0gAEkMKEXB1dF9oZWF0aW5nX3BsYW50GCggASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEhlYXRpbmdQbGFudEgAEkcKE3B1dF9oZWF0aW5nX2NpcmN1aXQYKSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SGVhdGluZ0NpcmN1aXRIABI9Cg5wdXRfZmxvb3Jfem9uZRgqIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRGbG9vclpvbmVIABJBChBwdXRfY29tZm9ydF9sb2FkGCsgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dENvbWZvcnRMb2FkSAASSwoVcmVtb3ZlX2hlYXRpbmdfcmVjb3JkGCwgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZUhlYXRpbmdSZWNvcmRIABJHChNzZXRfY29tZm9ydF93aW5kb3dzGC0gASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldENvbWZvcnRXaW5kb3dzSAASVAoacmVxdWVzdF9hY2NvdW50X2xpbmtfbm9uY2UYLiABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdEFjY291bnRMaW5rTm9uY2VIABJFChJsaXN0X2FjY291bnRfbGlua3MYLyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEFjY291bnRMaW5rc0gAEj4KDnVubGlua19hY2NvdW50GDAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlVubGlua0FjY291bnRIABJGChJsaXN0X2NvbW1pc3Npb25pbmcYMSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdENvbW1pc3Npb25pbmdIABJNChZwdXRfY29tbWlzc2lvbmluZ19mYWN0GDIgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dENvbW1pc3Npb25pbmdGYWN0SAASUwoZcmVtb3ZlX2NvbW1pc3Npb25pbmdfZmFjdBgzIAEoCzIuLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVDb21taXNzaW9uaW5nRmFjdEgAEkUKEnB1dF9ob3VzZV90ZW1wbGF0ZRg0IAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIb3VzZVRlbXBsYXRlSAASQwoRc2V0X2hvbWVfdGVtcGxhdGUYNSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0SG9tZVRlbXBsYXRlSAASTQoWcnVuX2NvbW1pc3Npb25pbmdfdGVzdBg2IAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SdW5Db21taXNzaW9uaW5nVGVzdEgAElcKG2NvbmNsdWRlX2NvbW1pc3Npb25pbmdfdGVzdBg3IAEoCzIwLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25jbHVkZUNvbW1pc3Npb25pbmdUZXN0SAASQQoQbGlzdF9ob21lX3NldHVwcxg4IAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0SG9tZVNldHVwc0gAElcKG3JlcXVlc3RfY29tbWlzc2lvbmluZ19ncmFudBg5IAEoCzIwLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXF1ZXN0Q29tbWlzc2lvbmluZ0dyYW50SAASVQoaYW5zd2VyX2NvbW1pc3Npb25pbmdfZ3JhbnQYOiABKAsyLy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQW5zd2VyQ29tbWlzc2lvbmluZ0dyYW50SAASTwoXZW5kX2NvbW1pc3Npb25pbmdfZ3JhbnQYOyABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRW5kQ29tbWlzc2lvbmluZ0dyYW50SAASUwoZbGlzdF9jb21taXNzaW9uaW5nX2dyYW50cxg8IAEoCzIuLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0Q29tbWlzc2lvbmluZ0dyYW50c0gAEj8KD3NldF9hc3NldF9vd25lchg9IAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRBc3NldE93bmVySAASTQoWZGVtb3RlX2hvdXNlaG9sZF9hZG1pbhg+IAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZW1vdGVIb3VzZWhvbGRBZG1pbkgAElEKGHN0YXJ0X2hvdXNlaG9sZF9oYW5kb3Zlchg/IAEoCzItLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdGFydEhvdXNlaG9sZEhhbmRvdmVySAASVQoaY29uZmlybV9ob3VzZWhvbGRfaGFuZG92ZXIYQCABKAsyLy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29uZmlybUhvdXNlaG9sZEhhbmRvdmVySAASUwoZY2FuY2VsX2hvdXNlaG9sZF9oYW5kb3ZlchhBIAEoCzIuLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DYW5jZWxIb3VzZWhvbGRIYW5kb3ZlckgAElEKGGxpc3RfaG91c2Vob2xkX2hhbmRvdmVycxhCIAEoCzItLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0SG91c2Vob2xkSGFuZG92ZXJzSAASSwoVZXhwb3J0X2hvdXNlaG9sZF9kYXRhGEMgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkV4cG9ydEhvdXNlaG9sZERhdGFIABI7Cg1zZXRfaG9tZV9uYW1lGEQgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEhvbWVOYW1lSAASSwoVY2xlYXJfY2xpbWF0ZV9oaXN0b3J5GEUgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsZWFyQ2xpbWF0ZUhpc3RvcnlIABJKChVzZXRfaW5uZXJfcm9vbV9saW1pdHMYRiABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0SW5uZXJSb29tTGltaXRzSAASQwoRZ2V0X3BsYW50X2hpc3RvcnkYRyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0UGxhbnRIaXN0b3J5SABCCQoHcmVxdWVzdEICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_access_v1_roles, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_types, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_vendor_lorawan_v1_lorawan, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_members]);
27
+ fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMiPAoOUm9vbUxpbWl0VmFsdWUSGQoMY2VudGlkZWdyZWVzGAEgASgRSACIAQFCDwoNX2NlbnRpZGVncmVlcyKFAwoUQ29uZmlndXJlUm9vbUNsaW1hdGUSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMQoGbGltaXRzGAIgASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdHMSMwoHc2Vuc29ycxgDIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tU2Vuc29ycxIhChRsb2NrX2RldmljZV9jb250cm9scxgEIAEoCEgAiAEBEjcKCGF3YXlfbWluGAUgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEj0KDm1vdmVfaW5fdGFyZ2V0GAYgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEh4KFmFjY2VwdF9iZWxvd190aHJlc2hvbGQYByABKAhCFwoVX2xvY2tfZGV2aWNlX2NvbnRyb2xzIoABChJTZXRJbm5lclJvb21MaW1pdHMSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNwoGbGltaXRzGAIgASgLMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Jbm5lclJvb21MaW1pdHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIuIBCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKCnJlc29sdXRpb24YBCABKA4yLS5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21IaXN0b3J5UmVzb2x1dGlvbiLCAQoPR2V0UGxhbnRIaXN0b3J5EhAKCHBsYW50X2lkGAEgASgJEi0KCWZyb21fdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHdG9fdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoKcmVzb2x1dGlvbhgEIAEoDjItLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlSZXNvbHV0aW9uIkkKE0dldEJ1aWxkaW5nUGxhbm5pbmcSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIrEBChNQdXRCdWlsZGluZ1BsYW5uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIUCgxiaWRkaW5nX3pvbmUYAiABKAkSPAoNZm9yZWNhc3RfY2VsbBgDIAEoCzIlLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0Q2VsbBISCgppbnB1dHNfb2ZmGAQgASgIIqkCChBCdWlsZGluZ1BsYW5uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIUCgxiaWRkaW5nX3pvbmUYAiABKAkSPAoNZm9yZWNhc3RfY2VsbBgDIAEoCzIlLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0Q2VsbBISCgppbnB1dHNfb2ZmGAQgASgIEjIKDnByaWNlc190aHJvdWdoGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJmb3JlY2FzdF9pc3N1ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXN0YWxlGAcgASgIIqMBChFHZXREYXlBaGVhZFByaWNlcxIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLQoJZnJvbV90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgd0b190aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKdAQoORGF5QWhlYWRQcmljZXMSFAoMYmlkZGluZ196b25lGAEgASgJEjYKBnByaWNlcxgCIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLlByaWNlSW50ZXJ2YWwSPQoOZXhjaGFuZ2VfcmF0ZXMYAyADKAsyJS5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5FeGNoYW5nZVJhdGUiRQoPR2V0U3BhY2VBZGRyZXNzEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ8Cg9QdXRTcGFjZUFkZHJlc3MSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjUKB2FkZHJlc3MYAiABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUG9zdGFsQWRkcmVzcyJTCg1Qb3N0YWxBZGRyZXNzEg4KBnN0cmVldBgBIAEoCRITCgtwb3N0YWxfY29kZRgCIAEoCRIMCgR0b3duGAMgASgJEg8KB2NvdW50cnkYBCABKAkieQoMU3BhY2VBZGRyZXNzEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgdhZGRyZXNzGAIgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlBvc3RhbEFkZHJlc3MirQMKEVByaXZhY3lEaXNjbG9zdXJlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI8Cg9zZXJ2aWNlX3BhcnRpZXMYBSADKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2VydmljZVBhcnR5EkwKFmNsaW1hdGVfc3VtbWFyeV9wZXJpb2QYBCABKA4yLC5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVTdW1tYXJ5UGVyaW9kEh8KF293bmVyX29yZ2FuaXNhdGlvbl9uYW1lGAYgASgJEhYKDm5hbWVzX3dpdGhoZWxkGAcgASgIEkMKEnN0YWZmX2FwcG9pbnRtZW50cxgIIAMoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdGFmZkFwcG9pbnRtZW50ElQKFGNvbW1pc3Npb25pbmdfZ3JhbnRzGAkgAygLMjYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nR3JhbnRSZWNvcmRKBAgCEAQifwoMU2VydmljZVBhcnR5EikKBHJvbGUYASABKA4yGy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUm9sZRI1CgdzaWduYWxzGAIgAygOMiQua3VzaW50YS5pb3QuYWNjZXNzLnYxLlNlcnZpY2VTaWduYWwSDQoFbmFtZXMYAyADKAkiSgoUR2V0UHJpdmFjeURpc2Nsb3N1cmUSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIu4BChpHZXRBcGFydG1lbnRDbGltYXRlU3VtbWFyeRI2CgxhcGFydG1lbnRfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKBnBlcmlvZBgCIAEoDjIsLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZVN1bW1hcnlQZXJpb2QSLQoJZnJvbV90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgd0b190aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJQChJSZWNvbm5lY3RDb25uZWN0b3ISOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQiRgoLTGlzdEhlYXRpbmcSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiRgoPUHV0SGVhdGluZ1BsYW50EjMKBXBsYW50GAEgASgLMiQua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nUGxhbnQiTAoRUHV0SGVhdGluZ0NpcmN1aXQSNwoHY2lyY3VpdBgBIAEoCzImLmt1c2ludGEuaW90LmhlYXRpbmcudjEuSGVhdGluZ0NpcmN1aXQiPwoMUHV0Rmxvb3Jab25lEi8KBHpvbmUYASABKAsyIS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkZsb29yWm9uZSJLCg5QdXRDb21mb3J0TG9hZBI5Cgxjb21mb3J0X2xvYWQYASABKAsyIy5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRMb2FkIjMKE1JlbW92ZUhlYXRpbmdSZWNvcmQSCgoCaWQYASABKAkSEAoIcmV2aXNpb24YAiABKAQimAEKEVNldENvbWZvcnRXaW5kb3dzEhcKD2NvbWZvcnRfbG9hZF9pZBgBIAEoCRI2Cgd3aW5kb3dzGAIgAygLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db21mb3J0V2luZG93Eh0KEHdpbmRvd3NfcmV2aXNpb24YAyABKARIAIgBAUITChFfd2luZG93c19yZXZpc2lvbiKIAQoXUmVxdWVzdEFjY291bnRMaW5rTm9uY2USMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOgoHc2VydmljZRgCIAEoDjIpLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkxpbmtlZFNlcnZpY2UiRQoQTGlzdEFjY291bnRMaW5rcxIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ+Cg1VbmxpbmtBY2NvdW50EjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjoKB3NlcnZpY2UYAiABKA4yKS5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5MaW5rZWRTZXJ2aWNlIkcKEUxpc3RDb21taXNzaW9uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJVChRQdXRDb21taXNzaW9uaW5nRmFjdBI9CgRmYWN0GAEgASgLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nRmFjdCI8ChdSZW1vdmVDb21taXNzaW9uaW5nRmFjdBIPCgdmYWN0X2lkGAEgASgJEhAKCHJldmlzaW9uGAIgASgEIlEKEFB1dEhvdXNlVGVtcGxhdGUSPQoIdGVtcGxhdGUYASABKAsyKy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkhvdXNlVGVtcGxhdGUiWQoPU2V0SG9tZVRlbXBsYXRlEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhMKC3RlbXBsYXRlX2lkGAIgASgJIp8BChRSdW5Db21taXNzaW9uaW5nVGVzdBI0CgRraW5kGAEgASgOMiYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0S2luZBI5CgdiaW5kaW5nGAQgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5CaW5kaW5nUmVmSgQIAhAEUglyZWNvcmRfaWRSBWZpZWxkImYKGUNvbmNsdWRlQ29tbWlzc2lvbmluZ1Rlc3QSDwoHdGVzdF9pZBgBIAEoCRI4Cgd2ZXJkaWN0GAIgASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0U3RhdGUiSQoOTGlzdEhvbWVTZXR1cHMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiTwoZUmVxdWVzdENvbW1pc3Npb25pbmdHcmFudBIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQimAEKGEFuc3dlckNvbW1pc3Npb25pbmdHcmFudBIQCghncmFudF9pZBgBIAEoCRIOCgZhY2NlcHQYAiABKAgSLQoJc3RhcnRzX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIpChVFbmRDb21taXNzaW9uaW5nR3JhbnQSEAoIZ3JhbnRfaWQYASABKAkiUgoXTGlzdENvbW1pc3Npb25pbmdHcmFudHMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQifQoNU2V0QXNzZXRPd25lchI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBI2Cgthc3NldF9vd25lchgCIAEoCzIhLmt1c2ludGEuaW90LmNvbW1vbi52MS5Bc3NldE93bmVyIsMrChFNYW5hZ2VtZW50UmVxdWVzdBI6CgxjcmVhdGVfc3BhY2UYASABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlU3BhY2VIABI6Cgx1cGRhdGVfc3BhY2UYAiABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuVXBkYXRlU3BhY2VIABI6CgxkZWxldGVfc3BhY2UYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVsZXRlU3BhY2VIABJIChRhc3NpZ25fdXNlcl90b19zcGFjZRgEIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Bc3NpZ25Vc2VyVG9TcGFjZUgAEkwKFnJlbW92ZV91c2VyX2Zyb21fc3BhY2UYBSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlVXNlckZyb21TcGFjZUgAEkoKFXBsYWNlX2RldmljZV9pbl9zcGFjZRgGIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QbGFjZURldmljZUluU3BhY2VIABJQChhyZW1vdmVfZGV2aWNlX2Zyb21fc3BhY2UYByABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRGV2aWNlRnJvbVNwYWNlSAASOgoMY2xhaW1fZGV2aWNlGAggASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsYWltRGV2aWNlSAASPgoOcmVsZWFzZV9kZXZpY2UYCSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVsZWFzZURldmljZUgAEjgKC2xpc3Rfc3BhY2VzGAogASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RTcGFjZXNIABJFChJjcmVhdGVfZGV2aWNlX2xpbmsYCyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlRGV2aWNlTGlua0gAEkUKEnJlbW92ZV9kZXZpY2VfbGluaxgMIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVEZXZpY2VMaW5rSAASQwoRbGlzdF9kZXZpY2VfbGlua3MYDSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdERldmljZUxpbmtzSAASRQoSdXBkYXRlX2RldmljZV9saW5rGA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlVwZGF0ZURldmljZUxpbmtIABJCChBwcm92aXNpb25fZGV2aWNlGA8gASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3Zpc2lvbkRldmljZUgAEj8KD3NldF9yb29tX3RhcmdldBgQIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRSb29tVGFyZ2V0SAASTQoWY29uZmlndXJlX3Jvb21fY2xpbWF0ZRgRIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25maWd1cmVSb29tQ2xpbWF0ZUgAEkEKEHNldF9jbGltYXRlX21vZGUYEiABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Q2xpbWF0ZU1vZGVIABJFChJsaXN0X3Jvb21fY2xpbWF0ZXMYEyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFJvb21DbGltYXRlc0gAEkEKEGdldF9yb29tX2hpc3RvcnkYFCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0Um9vbUhpc3RvcnlIABJNChZnZXRfcHJpdmFjeV9kaXNjbG9zdXJlGBUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldFByaXZhY3lEaXNjbG9zdXJlSAASWgodZ2V0X2FwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYFiABKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0QXBhcnRtZW50Q2xpbWF0ZVN1bW1hcnlIABJIChNyZWNvbm5lY3RfY29ubmVjdG9yGBcgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlY29ubmVjdENvbm5lY3RvckgAEjwKDWNyZWF0ZV9pbnZpdGUYGCABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlSW52aXRlSAASPAoNcmVzZW5kX2ludml0ZRgZIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXNlbmRJbnZpdGVIABI8Cg1yZXZva2VfaW52aXRlGBogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlJldm9rZUludml0ZUgAEkwKFm1hcmtfaW52aXRlX2VtYWlsX3NlbnQYGyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFya0ludml0ZUVtYWlsU2VudEgAEkUKEmxpc3Rfc3BhY2VfaW52aXRlcxgcIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0U3BhY2VJbnZpdGVzSAASSQoUYXBwcm92ZV9qb2luX3JlcXVlc3QYHSABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXBwcm92ZUpvaW5SZXF1ZXN0SAASQwoRZGVueV9qb2luX3JlcXVlc3QYHiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVueUpvaW5SZXF1ZXN0SAASSQoUbGlzdF9nYXRld2F5X21lbWJlcnMYHyABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEdhdGV3YXlNZW1iZXJzSAASPwoPc2V0X21lbWJlcl9yb2xlGCAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldE1lbWJlclJvbGVIABJHChNyZW1vdmVfZnJvbV9nYXRld2F5GCEgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZUZyb21HYXRld2F5SAASQQoQc2V0X2FjY2Vzc191bnRpbBgiIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRBY2Nlc3NVbnRpbEgAElEKFnNldF9vd25lcl9vcmdhbmlzYXRpb24YIyABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0T3duZXJPcmdhbmlzYXRpb25CAhgBSAASRAoRcmVxdWVzdF9wcm9tb3Rpb24YJCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdFByb21vdGlvbkgAEkIKEGFuc3dlcl9wcm9tb3Rpb24YJSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQW5zd2VyUHJvbW90aW9uSAASTwoXbGlzdF9wcm9tb3Rpb25fcmVxdWVzdHMYJiABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFByb21vdGlvblJlcXVlc3RzSAASOgoMbGlzdF9oZWF0aW5nGCcgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RIZWF0aW5nSAASQwoRcHV0X2hlYXRpbmdfcGxhbnQYKCABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SGVhdGluZ1BsYW50SAASRwoTcHV0X2hlYXRpbmdfY2lyY3VpdBgpIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIZWF0aW5nQ2lyY3VpdEgAEj0KDnB1dF9mbG9vcl96b25lGCogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEZsb29yWm9uZUgAEkEKEHB1dF9jb21mb3J0X2xvYWQYKyABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Q29tZm9ydExvYWRIABJLChVyZW1vdmVfaGVhdGluZ19yZWNvcmQYLCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlSGVhdGluZ1JlY29yZEgAEkcKE3NldF9jb21mb3J0X3dpbmRvd3MYLSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Q29tZm9ydFdpbmRvd3NIABJUChpyZXF1ZXN0X2FjY291bnRfbGlua19ub25jZRguIAEoCzIuLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXF1ZXN0QWNjb3VudExpbmtOb25jZUgAEkUKEmxpc3RfYWNjb3VudF9saW5rcxgvIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0QWNjb3VudExpbmtzSAASPgoOdW5saW5rX2FjY291bnQYMCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuVW5saW5rQWNjb3VudEgAEkYKEmxpc3RfY29tbWlzc2lvbmluZxgxIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0Q29tbWlzc2lvbmluZ0gAEk0KFnB1dF9jb21taXNzaW9uaW5nX2ZhY3QYMiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Q29tbWlzc2lvbmluZ0ZhY3RIABJTChlyZW1vdmVfY29tbWlzc2lvbmluZ19mYWN0GDMgASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZUNvbW1pc3Npb25pbmdGYWN0SAASRQoScHV0X2hvdXNlX3RlbXBsYXRlGDQgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEhvdXNlVGVtcGxhdGVIABJDChFzZXRfaG9tZV90ZW1wbGF0ZRg1IAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRIb21lVGVtcGxhdGVIABJNChZydW5fY29tbWlzc2lvbmluZ190ZXN0GDYgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlJ1bkNvbW1pc3Npb25pbmdUZXN0SAASVwobY29uY2x1ZGVfY29tbWlzc2lvbmluZ190ZXN0GDcgASgLMjAua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmNsdWRlQ29tbWlzc2lvbmluZ1Rlc3RIABJBChBsaXN0X2hvbWVfc2V0dXBzGDggASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RIb21lU2V0dXBzSAASVwobcmVxdWVzdF9jb21taXNzaW9uaW5nX2dyYW50GDkgASgLMjAua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlcXVlc3RDb21taXNzaW9uaW5nR3JhbnRIABJVChphbnN3ZXJfY29tbWlzc2lvbmluZ19ncmFudBg6IAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BbnN3ZXJDb21taXNzaW9uaW5nR3JhbnRIABJPChdlbmRfY29tbWlzc2lvbmluZ19ncmFudBg7IAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5FbmRDb21taXNzaW9uaW5nR3JhbnRIABJTChlsaXN0X2NvbW1pc3Npb25pbmdfZ3JhbnRzGDwgASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RDb21taXNzaW9uaW5nR3JhbnRzSAASPwoPc2V0X2Fzc2V0X293bmVyGD0gASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEFzc2V0T3duZXJIABJNChZkZW1vdGVfaG91c2Vob2xkX2FkbWluGD4gASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkRlbW90ZUhvdXNlaG9sZEFkbWluSAASUQoYc3RhcnRfaG91c2Vob2xkX2hhbmRvdmVyGD8gASgLMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YXJ0SG91c2Vob2xkSGFuZG92ZXJIABJVChpjb25maXJtX2hvdXNlaG9sZF9oYW5kb3ZlchhAIAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25maXJtSG91c2Vob2xkSGFuZG92ZXJIABJTChljYW5jZWxfaG91c2Vob2xkX2hhbmRvdmVyGEEgASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLkNhbmNlbEhvdXNlaG9sZEhhbmRvdmVySAASUQoYbGlzdF9ob3VzZWhvbGRfaGFuZG92ZXJzGEIgASgLMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RIb3VzZWhvbGRIYW5kb3ZlcnNIABJLChVleHBvcnRfaG91c2Vob2xkX2RhdGEYQyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRXhwb3J0SG91c2Vob2xkRGF0YUgAEjsKDXNldF9ob21lX25hbWUYRCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0SG9tZU5hbWVIABJLChVjbGVhcl9jbGltYXRlX2hpc3RvcnkYRSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xlYXJDbGltYXRlSGlzdG9yeUgAEkoKFXNldF9pbm5lcl9yb29tX2xpbWl0cxhGIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRJbm5lclJvb21MaW1pdHNIABJDChFnZXRfcGxhbnRfaGlzdG9yeRhHIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRQbGFudEhpc3RvcnlIABJLChVnZXRfYnVpbGRpbmdfcGxhbm5pbmcYSCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0QnVpbGRpbmdQbGFubmluZ0gAEksKFXB1dF9idWlsZGluZ19wbGFubmluZxhJIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRCdWlsZGluZ1BsYW5uaW5nSAASSAoUZ2V0X2RheV9haGVhZF9wcmljZXMYSiABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0RGF5QWhlYWRQcmljZXNIABJDChFnZXRfc3BhY2VfYWRkcmVzcxhLIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRTcGFjZUFkZHJlc3NIABJDChFwdXRfc3BhY2VfYWRkcmVzcxhMIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRTcGFjZUFkZHJlc3NIAEIJCgdyZXF1ZXN0QgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_access_v1_roles, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_types, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_planning_v1_planning, file_kusinta_iot_space_v1_space, file_kusinta_iot_vendor_lorawan_v1_lorawan, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_members]);
27
28
 
28
29
  /**
29
30
  * Describes the message kusinta.iot.webrtc.v1.CreateSpace.
@@ -214,206 +215,269 @@ export const GetRoomHistorySchema = /*@__PURE__*/
214
215
  export const GetPlantHistorySchema = /*@__PURE__*/
215
216
  messageDesc(file_kusinta_iot_webrtc_v1_management, 26);
216
217
 
218
+ /**
219
+ * Describes the message kusinta.iot.webrtc.v1.GetBuildingPlanning.
220
+ * Use `create(GetBuildingPlanningSchema)` to create a new message.
221
+ */
222
+ export const GetBuildingPlanningSchema = /*@__PURE__*/
223
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 27);
224
+
225
+ /**
226
+ * Describes the message kusinta.iot.webrtc.v1.PutBuildingPlanning.
227
+ * Use `create(PutBuildingPlanningSchema)` to create a new message.
228
+ */
229
+ export const PutBuildingPlanningSchema = /*@__PURE__*/
230
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 28);
231
+
232
+ /**
233
+ * Describes the message kusinta.iot.webrtc.v1.BuildingPlanning.
234
+ * Use `create(BuildingPlanningSchema)` to create a new message.
235
+ */
236
+ export const BuildingPlanningSchema = /*@__PURE__*/
237
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 29);
238
+
239
+ /**
240
+ * Describes the message kusinta.iot.webrtc.v1.GetDayAheadPrices.
241
+ * Use `create(GetDayAheadPricesSchema)` to create a new message.
242
+ */
243
+ export const GetDayAheadPricesSchema = /*@__PURE__*/
244
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 30);
245
+
246
+ /**
247
+ * Describes the message kusinta.iot.webrtc.v1.DayAheadPrices.
248
+ * Use `create(DayAheadPricesSchema)` to create a new message.
249
+ */
250
+ export const DayAheadPricesSchema = /*@__PURE__*/
251
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 31);
252
+
253
+ /**
254
+ * Describes the message kusinta.iot.webrtc.v1.GetSpaceAddress.
255
+ * Use `create(GetSpaceAddressSchema)` to create a new message.
256
+ */
257
+ export const GetSpaceAddressSchema = /*@__PURE__*/
258
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 32);
259
+
260
+ /**
261
+ * Describes the message kusinta.iot.webrtc.v1.PutSpaceAddress.
262
+ * Use `create(PutSpaceAddressSchema)` to create a new message.
263
+ */
264
+ export const PutSpaceAddressSchema = /*@__PURE__*/
265
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 33);
266
+
267
+ /**
268
+ * Describes the message kusinta.iot.webrtc.v1.PostalAddress.
269
+ * Use `create(PostalAddressSchema)` to create a new message.
270
+ */
271
+ export const PostalAddressSchema = /*@__PURE__*/
272
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 34);
273
+
274
+ /**
275
+ * Describes the message kusinta.iot.webrtc.v1.SpaceAddress.
276
+ * Use `create(SpaceAddressSchema)` to create a new message.
277
+ */
278
+ export const SpaceAddressSchema = /*@__PURE__*/
279
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 35);
280
+
217
281
  /**
218
282
  * Describes the message kusinta.iot.webrtc.v1.PrivacyDisclosure.
219
283
  * Use `create(PrivacyDisclosureSchema)` to create a new message.
220
284
  */
221
285
  export const PrivacyDisclosureSchema = /*@__PURE__*/
222
- messageDesc(file_kusinta_iot_webrtc_v1_management, 27);
286
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 36);
223
287
 
224
288
  /**
225
289
  * Describes the message kusinta.iot.webrtc.v1.ServiceParty.
226
290
  * Use `create(ServicePartySchema)` to create a new message.
227
291
  */
228
292
  export const ServicePartySchema = /*@__PURE__*/
229
- messageDesc(file_kusinta_iot_webrtc_v1_management, 28);
293
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 37);
230
294
 
231
295
  /**
232
296
  * Describes the message kusinta.iot.webrtc.v1.GetPrivacyDisclosure.
233
297
  * Use `create(GetPrivacyDisclosureSchema)` to create a new message.
234
298
  */
235
299
  export const GetPrivacyDisclosureSchema = /*@__PURE__*/
236
- messageDesc(file_kusinta_iot_webrtc_v1_management, 29);
300
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 38);
237
301
 
238
302
  /**
239
303
  * Describes the message kusinta.iot.webrtc.v1.GetApartmentClimateSummary.
240
304
  * Use `create(GetApartmentClimateSummarySchema)` to create a new message.
241
305
  */
242
306
  export const GetApartmentClimateSummarySchema = /*@__PURE__*/
243
- messageDesc(file_kusinta_iot_webrtc_v1_management, 30);
307
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 39);
244
308
 
245
309
  /**
246
310
  * Describes the message kusinta.iot.webrtc.v1.ReconnectConnector.
247
311
  * Use `create(ReconnectConnectorSchema)` to create a new message.
248
312
  */
249
313
  export const ReconnectConnectorSchema = /*@__PURE__*/
250
- messageDesc(file_kusinta_iot_webrtc_v1_management, 31);
314
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 40);
251
315
 
252
316
  /**
253
317
  * Describes the message kusinta.iot.webrtc.v1.ListHeating.
254
318
  * Use `create(ListHeatingSchema)` to create a new message.
255
319
  */
256
320
  export const ListHeatingSchema = /*@__PURE__*/
257
- messageDesc(file_kusinta_iot_webrtc_v1_management, 32);
321
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 41);
258
322
 
259
323
  /**
260
324
  * Describes the message kusinta.iot.webrtc.v1.PutHeatingPlant.
261
325
  * Use `create(PutHeatingPlantSchema)` to create a new message.
262
326
  */
263
327
  export const PutHeatingPlantSchema = /*@__PURE__*/
264
- messageDesc(file_kusinta_iot_webrtc_v1_management, 33);
328
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 42);
265
329
 
266
330
  /**
267
331
  * Describes the message kusinta.iot.webrtc.v1.PutHeatingCircuit.
268
332
  * Use `create(PutHeatingCircuitSchema)` to create a new message.
269
333
  */
270
334
  export const PutHeatingCircuitSchema = /*@__PURE__*/
271
- messageDesc(file_kusinta_iot_webrtc_v1_management, 34);
335
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 43);
272
336
 
273
337
  /**
274
338
  * Describes the message kusinta.iot.webrtc.v1.PutFloorZone.
275
339
  * Use `create(PutFloorZoneSchema)` to create a new message.
276
340
  */
277
341
  export const PutFloorZoneSchema = /*@__PURE__*/
278
- messageDesc(file_kusinta_iot_webrtc_v1_management, 35);
342
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 44);
279
343
 
280
344
  /**
281
345
  * Describes the message kusinta.iot.webrtc.v1.PutComfortLoad.
282
346
  * Use `create(PutComfortLoadSchema)` to create a new message.
283
347
  */
284
348
  export const PutComfortLoadSchema = /*@__PURE__*/
285
- messageDesc(file_kusinta_iot_webrtc_v1_management, 36);
349
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 45);
286
350
 
287
351
  /**
288
352
  * Describes the message kusinta.iot.webrtc.v1.RemoveHeatingRecord.
289
353
  * Use `create(RemoveHeatingRecordSchema)` to create a new message.
290
354
  */
291
355
  export const RemoveHeatingRecordSchema = /*@__PURE__*/
292
- messageDesc(file_kusinta_iot_webrtc_v1_management, 37);
356
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 46);
293
357
 
294
358
  /**
295
359
  * Describes the message kusinta.iot.webrtc.v1.SetComfortWindows.
296
360
  * Use `create(SetComfortWindowsSchema)` to create a new message.
297
361
  */
298
362
  export const SetComfortWindowsSchema = /*@__PURE__*/
299
- messageDesc(file_kusinta_iot_webrtc_v1_management, 38);
363
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 47);
300
364
 
301
365
  /**
302
366
  * Describes the message kusinta.iot.webrtc.v1.RequestAccountLinkNonce.
303
367
  * Use `create(RequestAccountLinkNonceSchema)` to create a new message.
304
368
  */
305
369
  export const RequestAccountLinkNonceSchema = /*@__PURE__*/
306
- messageDesc(file_kusinta_iot_webrtc_v1_management, 39);
370
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 48);
307
371
 
308
372
  /**
309
373
  * Describes the message kusinta.iot.webrtc.v1.ListAccountLinks.
310
374
  * Use `create(ListAccountLinksSchema)` to create a new message.
311
375
  */
312
376
  export const ListAccountLinksSchema = /*@__PURE__*/
313
- messageDesc(file_kusinta_iot_webrtc_v1_management, 40);
377
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 49);
314
378
 
315
379
  /**
316
380
  * Describes the message kusinta.iot.webrtc.v1.UnlinkAccount.
317
381
  * Use `create(UnlinkAccountSchema)` to create a new message.
318
382
  */
319
383
  export const UnlinkAccountSchema = /*@__PURE__*/
320
- messageDesc(file_kusinta_iot_webrtc_v1_management, 41);
384
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 50);
321
385
 
322
386
  /**
323
387
  * Describes the message kusinta.iot.webrtc.v1.ListCommissioning.
324
388
  * Use `create(ListCommissioningSchema)` to create a new message.
325
389
  */
326
390
  export const ListCommissioningSchema = /*@__PURE__*/
327
- messageDesc(file_kusinta_iot_webrtc_v1_management, 42);
391
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 51);
328
392
 
329
393
  /**
330
394
  * Describes the message kusinta.iot.webrtc.v1.PutCommissioningFact.
331
395
  * Use `create(PutCommissioningFactSchema)` to create a new message.
332
396
  */
333
397
  export const PutCommissioningFactSchema = /*@__PURE__*/
334
- messageDesc(file_kusinta_iot_webrtc_v1_management, 43);
398
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 52);
335
399
 
336
400
  /**
337
401
  * Describes the message kusinta.iot.webrtc.v1.RemoveCommissioningFact.
338
402
  * Use `create(RemoveCommissioningFactSchema)` to create a new message.
339
403
  */
340
404
  export const RemoveCommissioningFactSchema = /*@__PURE__*/
341
- messageDesc(file_kusinta_iot_webrtc_v1_management, 44);
405
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 53);
342
406
 
343
407
  /**
344
408
  * Describes the message kusinta.iot.webrtc.v1.PutHouseTemplate.
345
409
  * Use `create(PutHouseTemplateSchema)` to create a new message.
346
410
  */
347
411
  export const PutHouseTemplateSchema = /*@__PURE__*/
348
- messageDesc(file_kusinta_iot_webrtc_v1_management, 45);
412
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 54);
349
413
 
350
414
  /**
351
415
  * Describes the message kusinta.iot.webrtc.v1.SetHomeTemplate.
352
416
  * Use `create(SetHomeTemplateSchema)` to create a new message.
353
417
  */
354
418
  export const SetHomeTemplateSchema = /*@__PURE__*/
355
- messageDesc(file_kusinta_iot_webrtc_v1_management, 46);
419
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 55);
356
420
 
357
421
  /**
358
422
  * Describes the message kusinta.iot.webrtc.v1.RunCommissioningTest.
359
423
  * Use `create(RunCommissioningTestSchema)` to create a new message.
360
424
  */
361
425
  export const RunCommissioningTestSchema = /*@__PURE__*/
362
- messageDesc(file_kusinta_iot_webrtc_v1_management, 47);
426
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 56);
363
427
 
364
428
  /**
365
429
  * Describes the message kusinta.iot.webrtc.v1.ConcludeCommissioningTest.
366
430
  * Use `create(ConcludeCommissioningTestSchema)` to create a new message.
367
431
  */
368
432
  export const ConcludeCommissioningTestSchema = /*@__PURE__*/
369
- messageDesc(file_kusinta_iot_webrtc_v1_management, 48);
433
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 57);
370
434
 
371
435
  /**
372
436
  * Describes the message kusinta.iot.webrtc.v1.ListHomeSetups.
373
437
  * Use `create(ListHomeSetupsSchema)` to create a new message.
374
438
  */
375
439
  export const ListHomeSetupsSchema = /*@__PURE__*/
376
- messageDesc(file_kusinta_iot_webrtc_v1_management, 49);
440
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 58);
377
441
 
378
442
  /**
379
443
  * Describes the message kusinta.iot.webrtc.v1.RequestCommissioningGrant.
380
444
  * Use `create(RequestCommissioningGrantSchema)` to create a new message.
381
445
  */
382
446
  export const RequestCommissioningGrantSchema = /*@__PURE__*/
383
- messageDesc(file_kusinta_iot_webrtc_v1_management, 50);
447
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 59);
384
448
 
385
449
  /**
386
450
  * Describes the message kusinta.iot.webrtc.v1.AnswerCommissioningGrant.
387
451
  * Use `create(AnswerCommissioningGrantSchema)` to create a new message.
388
452
  */
389
453
  export const AnswerCommissioningGrantSchema = /*@__PURE__*/
390
- messageDesc(file_kusinta_iot_webrtc_v1_management, 51);
454
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 60);
391
455
 
392
456
  /**
393
457
  * Describes the message kusinta.iot.webrtc.v1.EndCommissioningGrant.
394
458
  * Use `create(EndCommissioningGrantSchema)` to create a new message.
395
459
  */
396
460
  export const EndCommissioningGrantSchema = /*@__PURE__*/
397
- messageDesc(file_kusinta_iot_webrtc_v1_management, 52);
461
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 61);
398
462
 
399
463
  /**
400
464
  * Describes the message kusinta.iot.webrtc.v1.ListCommissioningGrants.
401
465
  * Use `create(ListCommissioningGrantsSchema)` to create a new message.
402
466
  */
403
467
  export const ListCommissioningGrantsSchema = /*@__PURE__*/
404
- messageDesc(file_kusinta_iot_webrtc_v1_management, 53);
468
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 62);
405
469
 
406
470
  /**
407
471
  * Describes the message kusinta.iot.webrtc.v1.SetAssetOwner.
408
472
  * Use `create(SetAssetOwnerSchema)` to create a new message.
409
473
  */
410
474
  export const SetAssetOwnerSchema = /*@__PURE__*/
411
- messageDesc(file_kusinta_iot_webrtc_v1_management, 54);
475
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 63);
412
476
 
413
477
  /**
414
478
  * Describes the message kusinta.iot.webrtc.v1.ManagementRequest.
415
479
  * Use `create(ManagementRequestSchema)` to create a new message.
416
480
  */
417
481
  export const ManagementRequestSchema = /*@__PURE__*/
418
- messageDesc(file_kusinta_iot_webrtc_v1_management, 55);
482
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 64);
419
483