@kusinta/iot-schema 0.2.0-beta.37 → 0.2.0-beta.39

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.
@@ -14,6 +14,8 @@ import type { ClimateModeKind, ClimateSummaryPeriod } from "../../climate/v1/cli
14
14
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
15
15
  import type { ServiceSignal } from "../../access/v1/acl_pb.js";
16
16
  import type { ComfortLoad, ComfortWindow, FloorZone, HeatingCircuit, HeatingPlant } from "../../heating/v1/heating_pb.js";
17
+ import type { LinkedService } from "../../accountlink/v1/account_link_pb.js";
18
+ import type { BindingRef, CommissioningFact, HouseTemplate, TestKind, TestState } from "../../commissioning/v1/commissioning_pb.js";
17
19
  import type { ApproveJoinRequest, CreateInvite, DenyJoinRequest, ListSpaceInvites, MarkInviteEmailSent, ResendInvite, RevokeInvite } from "./invite_pb.js";
18
20
  import type { AnswerPromotion, ListGatewayMembers, ListPromotionRequests, RemoveFromGateway, RequestPromotion, SetAccessUntil, SetMemberRole, SetOwnerOrganisation } from "./members_pb.js";
19
21
 
@@ -1387,6 +1389,313 @@ export declare type SetComfortWindows = Message<"kusinta.iot.webrtc.v1.SetComfor
1387
1389
  */
1388
1390
  export declare const SetComfortWindowsSchema: GenMessage<SetComfortWindows>;
1389
1391
 
1392
+ /**
1393
+ * Asks for a nonce to link one home's account at a third-party service
1394
+ * (accountlink.v1.AccountLinkNonce). Only a household admin of the home — the resident
1395
+ * relation that governs a home's own settings — is issued one; anyone else is refused as
1396
+ * NOT_ENTITLED, as is a home the caller cannot reach. A service this gateway does not
1397
+ * support is refused as INVALID_REQUEST.
1398
+ *
1399
+ * @generated from message kusinta.iot.webrtc.v1.RequestAccountLinkNonce
1400
+ */
1401
+ export declare type RequestAccountLinkNonce = Message<"kusinta.iot.webrtc.v1.RequestAccountLinkNonce"> & {
1402
+ /**
1403
+ * @generated from field: kusinta.iot.identity.v1.SpaceId home_id = 1;
1404
+ */
1405
+ homeId?: SpaceId | undefined;
1406
+
1407
+ /**
1408
+ * @generated from field: kusinta.iot.accountlink.v1.LinkedService service = 2;
1409
+ */
1410
+ service: LinkedService;
1411
+ };
1412
+
1413
+ /**
1414
+ * Describes the message kusinta.iot.webrtc.v1.RequestAccountLinkNonce.
1415
+ * Use `create(RequestAccountLinkNonceSchema)` to create a new message.
1416
+ */
1417
+ export declare const RequestAccountLinkNonceSchema: GenMessage<RequestAccountLinkNonce>;
1418
+
1419
+ /**
1420
+ * Lists a home's linked accounts and their status, answered with an AccountLinks. Given to
1421
+ * the home's residents; anyone else is refused as NOT_ENTITLED.
1422
+ *
1423
+ * @generated from message kusinta.iot.webrtc.v1.ListAccountLinks
1424
+ */
1425
+ export declare type ListAccountLinks = Message<"kusinta.iot.webrtc.v1.ListAccountLinks"> & {
1426
+ /**
1427
+ * @generated from field: kusinta.iot.identity.v1.SpaceId home_id = 1;
1428
+ */
1429
+ homeId?: SpaceId | undefined;
1430
+ };
1431
+
1432
+ /**
1433
+ * Describes the message kusinta.iot.webrtc.v1.ListAccountLinks.
1434
+ * Use `create(ListAccountLinksSchema)` to create a new message.
1435
+ */
1436
+ export declare const ListAccountLinksSchema: GenMessage<ListAccountLinks>;
1437
+
1438
+ /**
1439
+ * Unlinks a home's account at one service: the gateway reads no more through it and revokes
1440
+ * it (accountlink.v1.RevokeToken). A household admin of the home only; anyone else is refused
1441
+ * as NOT_ENTITLED. A service with no link is acked all the same. Acked.
1442
+ *
1443
+ * @generated from message kusinta.iot.webrtc.v1.UnlinkAccount
1444
+ */
1445
+ export declare type UnlinkAccount = Message<"kusinta.iot.webrtc.v1.UnlinkAccount"> & {
1446
+ /**
1447
+ * @generated from field: kusinta.iot.identity.v1.SpaceId home_id = 1;
1448
+ */
1449
+ homeId?: SpaceId | undefined;
1450
+
1451
+ /**
1452
+ * @generated from field: kusinta.iot.accountlink.v1.LinkedService service = 2;
1453
+ */
1454
+ service: LinkedService;
1455
+ };
1456
+
1457
+ /**
1458
+ * Describes the message kusinta.iot.webrtc.v1.UnlinkAccount.
1459
+ * Use `create(UnlinkAccountSchema)` to create a new message.
1460
+ */
1461
+ export declare const UnlinkAccountSchema: GenMessage<UnlinkAccount>;
1462
+
1463
+ /**
1464
+ * Lists a space's commissioning (commissioning.v1): for a home, its facts, tests and feature
1465
+ * states; for a space outside homes, its facts and the tests on records there. Answered
1466
+ * with a CommissioningProfile, filtered as commissioning.v1 says. A home asked by a caller
1467
+ * who is not given its commissioning is refused as NOT_ENTITLED.
1468
+ *
1469
+ * @generated from message kusinta.iot.webrtc.v1.ListCommissioning
1470
+ */
1471
+ export declare type ListCommissioning = Message<"kusinta.iot.webrtc.v1.ListCommissioning"> & {
1472
+ /**
1473
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1474
+ */
1475
+ spaceId?: SpaceId | undefined;
1476
+ };
1477
+
1478
+ /**
1479
+ * Describes the message kusinta.iot.webrtc.v1.ListCommissioning.
1480
+ * Use `create(ListCommissioningSchema)` to create a new message.
1481
+ */
1482
+ export declare const ListCommissioningSchema: GenMessage<ListCommissioning>;
1483
+
1484
+ /**
1485
+ * Creates a fact (empty fact_id) or replaces one. Answered with the CommissioningRecord as
1486
+ * stored. The gateway sets answerer, necessity, feature, topic and provenance, save
1487
+ * provenance.evidence, which the caller states. Refused with metadata "reason":
1488
+ *
1489
+ * INVALID_REQUEST
1490
+ * "UNKNOWN_KEY" a key the gateway's catalogue does not hold.
1491
+ * "VALUE_TYPE" a value of another type than the key takes, a string outside the
1492
+ * key's closed list, unknown false, or no answer.
1493
+ * "SUBJECT" a record_id that is not a heating record within space_id, or a key
1494
+ * that is not about that kind of space or record.
1495
+ * "ANSWERER" a key the caller's party does not answer.
1496
+ * "EVIDENCE" evidence the caller's party may not give, or less than the key
1497
+ * requires.
1498
+ * "TEMPLATE_VERSION" a new or changed deviates_from naming a template or version the
1499
+ * home's template never was, or set on a home that follows no
1500
+ * template. One carried over unchanged from the stored fact is kept,
1501
+ * even after the home moved to another template.
1502
+ *
1503
+ * FAILED_PRECONDITION
1504
+ * "STALE_REVISION" the fact changed since the revision the request names.
1505
+ * "FACT_EXISTS" a create for a space, record and key that already have a fact;
1506
+ * metadata "fact_id" names it. One answer per key.
1507
+ * "SET_BY_TEST" a key only a test sets.
1508
+ *
1509
+ * A space or record the caller cannot reach, and a fact_id that does not exist, are refused
1510
+ * as NOT_ENTITLED with the same metadata.
1511
+ *
1512
+ * @generated from message kusinta.iot.webrtc.v1.PutCommissioningFact
1513
+ */
1514
+ export declare type PutCommissioningFact = Message<"kusinta.iot.webrtc.v1.PutCommissioningFact"> & {
1515
+ /**
1516
+ * @generated from field: kusinta.iot.commissioning.v1.CommissioningFact fact = 1;
1517
+ */
1518
+ fact?: CommissioningFact | undefined;
1519
+ };
1520
+
1521
+ /**
1522
+ * Describes the message kusinta.iot.webrtc.v1.PutCommissioningFact.
1523
+ * Use `create(PutCommissioningFactSchema)` to create a new message.
1524
+ */
1525
+ export declare const PutCommissioningFactSchema: GenMessage<PutCommissioningFact>;
1526
+
1527
+ /**
1528
+ * Removes a fact by its id, naming the revision it removes; as PutCommissioningFact. A fact
1529
+ * set by a test is replaced only by running it again: refused as FAILED_PRECONDITION
1530
+ * "SET_BY_TEST". Acked.
1531
+ *
1532
+ * @generated from message kusinta.iot.webrtc.v1.RemoveCommissioningFact
1533
+ */
1534
+ export declare type RemoveCommissioningFact = Message<"kusinta.iot.webrtc.v1.RemoveCommissioningFact"> & {
1535
+ /**
1536
+ * @generated from field: string fact_id = 1;
1537
+ */
1538
+ factId: string;
1539
+
1540
+ /**
1541
+ * @generated from field: uint64 revision = 2;
1542
+ */
1543
+ revision: bigint;
1544
+ };
1545
+
1546
+ /**
1547
+ * Describes the message kusinta.iot.webrtc.v1.RemoveCommissioningFact.
1548
+ * Use `create(RemoveCommissioningFactSchema)` to create a new message.
1549
+ */
1550
+ export declare const RemoveCommissioningFactSchema: GenMessage<RemoveCommissioningFact>;
1551
+
1552
+ /**
1553
+ * Creates a house template (empty template_id) or replaces one, naming the version it
1554
+ * replaces. From the property owner or the gateway's administrators, reaching the building;
1555
+ * anyone else is refused as NOT_ENTITLED. Answered with the CommissioningRecord as stored.
1556
+ * Refused as FAILED_PRECONDITION "STALE_REVISION" when the template changed since, as
1557
+ * INVALID_REQUEST "UNKNOWN_KEY" or "VALUE_TYPE" as PutCommissioningFact, and as
1558
+ * INVALID_REQUEST "EVIDENCE" for a key a template may not answer (commissioning.v1,
1559
+ * TEMPLATES); metadata "key" names it.
1560
+ *
1561
+ * @generated from message kusinta.iot.webrtc.v1.PutHouseTemplate
1562
+ */
1563
+ export declare type PutHouseTemplate = Message<"kusinta.iot.webrtc.v1.PutHouseTemplate"> & {
1564
+ /**
1565
+ * @generated from field: kusinta.iot.commissioning.v1.HouseTemplate template = 1;
1566
+ */
1567
+ template?: HouseTemplate | undefined;
1568
+ };
1569
+
1570
+ /**
1571
+ * Describes the message kusinta.iot.webrtc.v1.PutHouseTemplate.
1572
+ * Use `create(PutHouseTemplateSchema)` to create a new message.
1573
+ */
1574
+ export declare const PutHouseTemplateSchema: GenMessage<PutHouseTemplate>;
1575
+
1576
+ /**
1577
+ * Says which house template a home follows; an empty template_id, none. From the property
1578
+ * owner or the gateway's administrators; anyone else is refused as NOT_ENTITLED. A template
1579
+ * of another building is refused as INVALID_REQUEST "TEMPLATE_BUILDING". Deviations recorded
1580
+ * against another template stay, naming the version they were recorded against. Acked.
1581
+ *
1582
+ * @generated from message kusinta.iot.webrtc.v1.SetHomeTemplate
1583
+ */
1584
+ export declare type SetHomeTemplate = Message<"kusinta.iot.webrtc.v1.SetHomeTemplate"> & {
1585
+ /**
1586
+ * @generated from field: kusinta.iot.identity.v1.SpaceId home_id = 1;
1587
+ */
1588
+ homeId?: SpaceId | undefined;
1589
+
1590
+ /**
1591
+ * @generated from field: string template_id = 2;
1592
+ */
1593
+ templateId: string;
1594
+ };
1595
+
1596
+ /**
1597
+ * Describes the message kusinta.iot.webrtc.v1.SetHomeTemplate.
1598
+ * Use `create(SetHomeTemplateSchema)` to create a new message.
1599
+ */
1600
+ export declare const SetHomeTemplateSchema: GenMessage<SetHomeTemplate>;
1601
+
1602
+ /**
1603
+ * Starts a commissioning test (commissioning.v1.TestKind) on a heating record, answered with
1604
+ * the CommissioningRecord of the test, RUNNING. Its changes of state, the start included,
1605
+ * are pushed (GatewayMessage.commissioning_test), save the start to the session that
1606
+ * started it, which has it as the reply. Run by whoever may bind the outputs it drives
1607
+ * (heating.v1); PUMP_ALL_ZONES_OFF by an installer under a commissioning grant only. Refused
1608
+ * with metadata "reason":
1609
+ *
1610
+ * INVALID_REQUEST
1611
+ * "TEST_SUBJECT" a kind that does not run on that record, or for OUTPUT_LEASE a
1612
+ * binding field that is empty or not a bound output of it; for the
1613
+ * other kinds, a binding field that is not empty.
1614
+ *
1615
+ * FAILED_PRECONDITION
1616
+ * "TEST_RUNNING" a test already drives one of its outputs.
1617
+ * "NEEDS_PASS" ZONE_EFFECT or PUMP_ALL_ZONES_OFF on outputs without a current
1618
+ * OUTPUT_LEASE pass; metadata "record_id" names one.
1619
+ * "OUTPUT_NOT_LEASED" an output its producer does not state as leased, with a lapse value
1620
+ * at rest (heating.v1), so no test could leave it at rest.
1621
+ * "READ_LATENCY" OUTPUT_LEASE on an output whose producer does not state its reads
1622
+ * REAL_TIME: a pass judged against a guessed latency is none.
1623
+ * "LEASE_BOUNDS" OUTPUT_LEASE on an output whose lease bounds admit no lease of 60
1624
+ * seconds to 5 minutes, so the test could not end by its ends_at.
1625
+ *
1626
+ * A record the caller cannot reach is refused as NOT_ENTITLED.
1627
+ *
1628
+ * @generated from message kusinta.iot.webrtc.v1.RunCommissioningTest
1629
+ */
1630
+ export declare type RunCommissioningTest = Message<"kusinta.iot.webrtc.v1.RunCommissioningTest"> & {
1631
+ /**
1632
+ * @generated from field: kusinta.iot.commissioning.v1.TestKind kind = 1;
1633
+ */
1634
+ kind: TestKind;
1635
+
1636
+ /**
1637
+ * binding.field for OUTPUT_LEASE only.
1638
+ *
1639
+ * @generated from field: kusinta.iot.commissioning.v1.BindingRef binding = 4;
1640
+ */
1641
+ binding?: BindingRef | undefined;
1642
+ };
1643
+
1644
+ /**
1645
+ * Describes the message kusinta.iot.webrtc.v1.RunCommissioningTest.
1646
+ * Use `create(RunCommissioningTestSchema)` to create a new message.
1647
+ */
1648
+ export declare const RunCommissioningTestSchema: GenMessage<RunCommissioningTest>;
1649
+
1650
+ /**
1651
+ * Ends a running test. verdict ABORTED stops any test, from whoever started it or may run
1652
+ * it; PASSED or FAILED concludes a PUMP_ALL_ZONES_OFF test, from an installer under a
1653
+ * commissioning grant only. Any other verdict, or PASSED or FAILED on another kind, is
1654
+ * refused as INVALID_REQUEST "VERDICT". Its outputs return to their normal control at once,
1655
+ * floor zones switching on no faster than "floor.max_zones_switching_on" allows. Answered
1656
+ * with the CommissioningRecord of the test. A test that has ended is refused as
1657
+ * FAILED_PRECONDITION "TEST_ENDED".
1658
+ *
1659
+ * @generated from message kusinta.iot.webrtc.v1.ConcludeCommissioningTest
1660
+ */
1661
+ export declare type ConcludeCommissioningTest = Message<"kusinta.iot.webrtc.v1.ConcludeCommissioningTest"> & {
1662
+ /**
1663
+ * @generated from field: string test_id = 1;
1664
+ */
1665
+ testId: string;
1666
+
1667
+ /**
1668
+ * @generated from field: kusinta.iot.commissioning.v1.TestState verdict = 2;
1669
+ */
1670
+ verdict: TestState;
1671
+ };
1672
+
1673
+ /**
1674
+ * Describes the message kusinta.iot.webrtc.v1.ConcludeCommissioningTest.
1675
+ * Use `create(ConcludeCommissioningTestSchema)` to create a new message.
1676
+ */
1677
+ export declare const ConcludeCommissioningTestSchema: GenMessage<ConcludeCommissioningTest>;
1678
+
1679
+ /**
1680
+ * Lists whether each home under a space is set up (commissioning.v1.HomeSetup): unset
1681
+ * root_space_id, every home the caller reaches. For the property owner and the gateway's
1682
+ * administrators; anyone else is refused as NOT_ENTITLED. Answered with a HomeSetups.
1683
+ *
1684
+ * @generated from message kusinta.iot.webrtc.v1.ListHomeSetups
1685
+ */
1686
+ export declare type ListHomeSetups = Message<"kusinta.iot.webrtc.v1.ListHomeSetups"> & {
1687
+ /**
1688
+ * @generated from field: kusinta.iot.identity.v1.SpaceId root_space_id = 1;
1689
+ */
1690
+ rootSpaceId?: SpaceId | undefined;
1691
+ };
1692
+
1693
+ /**
1694
+ * Describes the message kusinta.iot.webrtc.v1.ListHomeSetups.
1695
+ * Use `create(ListHomeSetupsSchema)` to create a new message.
1696
+ */
1697
+ export declare const ListHomeSetupsSchema: GenMessage<ListHomeSetups>;
1698
+
1390
1699
  /**
1391
1700
  * @generated from message kusinta.iot.webrtc.v1.ManagementRequest
1392
1701
  */
@@ -1675,6 +1984,74 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
1675
1984
  */
1676
1985
  value: SetComfortWindows;
1677
1986
  case: "setComfortWindows";
1987
+ } | {
1988
+ /**
1989
+ * @generated from field: kusinta.iot.webrtc.v1.RequestAccountLinkNonce request_account_link_nonce = 46;
1990
+ */
1991
+ value: RequestAccountLinkNonce;
1992
+ case: "requestAccountLinkNonce";
1993
+ } | {
1994
+ /**
1995
+ * @generated from field: kusinta.iot.webrtc.v1.ListAccountLinks list_account_links = 47;
1996
+ */
1997
+ value: ListAccountLinks;
1998
+ case: "listAccountLinks";
1999
+ } | {
2000
+ /**
2001
+ * @generated from field: kusinta.iot.webrtc.v1.UnlinkAccount unlink_account = 48;
2002
+ */
2003
+ value: UnlinkAccount;
2004
+ case: "unlinkAccount";
2005
+ } | {
2006
+ /**
2007
+ * Commissioning; see commissioning.v1.
2008
+ *
2009
+ * @generated from field: kusinta.iot.webrtc.v1.ListCommissioning list_commissioning = 49;
2010
+ */
2011
+ value: ListCommissioning;
2012
+ case: "listCommissioning";
2013
+ } | {
2014
+ /**
2015
+ * @generated from field: kusinta.iot.webrtc.v1.PutCommissioningFact put_commissioning_fact = 50;
2016
+ */
2017
+ value: PutCommissioningFact;
2018
+ case: "putCommissioningFact";
2019
+ } | {
2020
+ /**
2021
+ * @generated from field: kusinta.iot.webrtc.v1.RemoveCommissioningFact remove_commissioning_fact = 51;
2022
+ */
2023
+ value: RemoveCommissioningFact;
2024
+ case: "removeCommissioningFact";
2025
+ } | {
2026
+ /**
2027
+ * @generated from field: kusinta.iot.webrtc.v1.PutHouseTemplate put_house_template = 52;
2028
+ */
2029
+ value: PutHouseTemplate;
2030
+ case: "putHouseTemplate";
2031
+ } | {
2032
+ /**
2033
+ * @generated from field: kusinta.iot.webrtc.v1.SetHomeTemplate set_home_template = 53;
2034
+ */
2035
+ value: SetHomeTemplate;
2036
+ case: "setHomeTemplate";
2037
+ } | {
2038
+ /**
2039
+ * @generated from field: kusinta.iot.webrtc.v1.RunCommissioningTest run_commissioning_test = 54;
2040
+ */
2041
+ value: RunCommissioningTest;
2042
+ case: "runCommissioningTest";
2043
+ } | {
2044
+ /**
2045
+ * @generated from field: kusinta.iot.webrtc.v1.ConcludeCommissioningTest conclude_commissioning_test = 55;
2046
+ */
2047
+ value: ConcludeCommissioningTest;
2048
+ case: "concludeCommissioningTest";
2049
+ } | {
2050
+ /**
2051
+ * @generated from field: kusinta.iot.webrtc.v1.ListHomeSetups list_home_setups = 56;
2052
+ */
2053
+ value: ListHomeSetups;
2054
+ case: "listHomeSetups";
1678
2055
  } | { case: undefined; value?: undefined };
1679
2056
  };
1680
2057
 
@@ -6,7 +6,9 @@ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
6
  import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
7
  import { file_kusinta_iot_access_v1_acl } from "../../access/v1/acl_pb.js";
8
8
  import { file_kusinta_iot_access_v1_roles } from "../../access/v1/roles_pb.js";
9
+ import { file_kusinta_iot_accountlink_v1_account_link } from "../../accountlink/v1/account_link_pb.js";
9
10
  import { file_kusinta_iot_climate_v1_climate } from "../../climate/v1/climate_pb.js";
11
+ import { file_kusinta_iot_commissioning_v1_commissioning } from "../../commissioning/v1/commissioning_pb.js";
10
12
  import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
11
13
  import { file_kusinta_iot_heating_v1_heating } from "../../heating/v1/heating_pb.js";
12
14
  import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
@@ -20,7 +22,7 @@ import { file_kusinta_iot_webrtc_v1_members } from "./members_pb.js";
20
22
  * Describes the file kusinta/iot/webrtc/v1/management.proto.
21
23
  */
22
24
  export const file_kusinta_iot_webrtc_v1_management = /*@__PURE__*/
23
- fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMi7QEKFENvbmZpZ3VyZVJvb21DbGltYXRlEjEKB3Jvb21faWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjEKBmxpbWl0cxgCIAEoCzIhLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tTGltaXRzEjMKB3NlbnNvcnMYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUm9vbVNlbnNvcnMSIQoUbG9ja19kZXZpY2VfY29udHJvbHMYBCABKAhIAIgBAUIXChVfbG9ja19kZXZpY2VfY29udHJvbHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIp8BCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpgCChFQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoPc2VydmljZV9wYXJ0aWVzGAUgAygLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VQYXJ0eRJMChZjbGltYXRlX3N1bW1hcnlfcGVyaW9kGAQgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBIfChdvd25lcl9vcmdhbmlzYXRpb25fbmFtZRgGIAEoCRIWCg5uYW1lc193aXRoaGVsZBgHIAEoCEoECAIQA0oECAMQBCJ/CgxTZXJ2aWNlUGFydHkSKQoEcm9sZRgBIAEoDjIbLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Sb2xlEjUKB3NpZ25hbHMYAiADKA4yJC5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuU2VydmljZVNpZ25hbBINCgVuYW1lcxgDIAMoCSJKChRHZXRQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7gEKGkdldEFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5EjYKDGFwYXJ0bWVudF9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoGcGVyaW9kGAIgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBItCglmcm9tX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKElJlY29ubmVjdENvbm5lY3RvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZCJGCgtMaXN0SGVhdGluZxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJGCg9QdXRIZWF0aW5nUGxhbnQSMwoFcGxhbnQYASABKAsyJC5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdQbGFudCJMChFQdXRIZWF0aW5nQ2lyY3VpdBI3CgdjaXJjdWl0GAEgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdCI/CgxQdXRGbG9vclpvbmUSLwoEem9uZRgBIAEoCzIhLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lIksKDlB1dENvbWZvcnRMb2FkEjkKDGNvbWZvcnRfbG9hZBgBIAEoCzIjLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydExvYWQiMwoTUmVtb3ZlSGVhdGluZ1JlY29yZBIKCgJpZBgBIAEoCRIQCghyZXZpc2lvbhgCIAEoBCKYAQoRU2V0Q29tZm9ydFdpbmRvd3MSFwoPY29tZm9ydF9sb2FkX2lkGAEgASgJEjYKB3dpbmRvd3MYAiADKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRXaW5kb3cSHQoQd2luZG93c19yZXZpc2lvbhgDIAEoBEgAiAEBQhMKEV93aW5kb3dzX3JldmlzaW9uIvUYChFNYW5hZ2VtZW50UmVxdWVzdBI6CgxjcmVhdGVfc3BhY2UYASABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlU3BhY2VIABI6Cgx1cGRhdGVfc3BhY2UYAiABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuVXBkYXRlU3BhY2VIABI6CgxkZWxldGVfc3BhY2UYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVsZXRlU3BhY2VIABJIChRhc3NpZ25fdXNlcl90b19zcGFjZRgEIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Bc3NpZ25Vc2VyVG9TcGFjZUgAEkwKFnJlbW92ZV91c2VyX2Zyb21fc3BhY2UYBSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlVXNlckZyb21TcGFjZUgAEkoKFXBsYWNlX2RldmljZV9pbl9zcGFjZRgGIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QbGFjZURldmljZUluU3BhY2VIABJQChhyZW1vdmVfZGV2aWNlX2Zyb21fc3BhY2UYByABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRGV2aWNlRnJvbVNwYWNlSAASOgoMY2xhaW1fZGV2aWNlGAggASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsYWltRGV2aWNlSAASPgoOcmVsZWFzZV9kZXZpY2UYCSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVsZWFzZURldmljZUgAEjgKC2xpc3Rfc3BhY2VzGAogASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RTcGFjZXNIABJFChJjcmVhdGVfZGV2aWNlX2xpbmsYCyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlRGV2aWNlTGlua0gAEkUKEnJlbW92ZV9kZXZpY2VfbGluaxgMIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVEZXZpY2VMaW5rSAASQwoRbGlzdF9kZXZpY2VfbGlua3MYDSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdERldmljZUxpbmtzSAASRQoSdXBkYXRlX2RldmljZV9saW5rGA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlVwZGF0ZURldmljZUxpbmtIABJCChBwcm92aXNpb25fZGV2aWNlGA8gASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3Zpc2lvbkRldmljZUgAEj8KD3NldF9yb29tX3RhcmdldBgQIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRSb29tVGFyZ2V0SAASTQoWY29uZmlndXJlX3Jvb21fY2xpbWF0ZRgRIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25maWd1cmVSb29tQ2xpbWF0ZUgAEkEKEHNldF9jbGltYXRlX21vZGUYEiABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Q2xpbWF0ZU1vZGVIABJFChJsaXN0X3Jvb21fY2xpbWF0ZXMYEyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFJvb21DbGltYXRlc0gAEkEKEGdldF9yb29tX2hpc3RvcnkYFCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0Um9vbUhpc3RvcnlIABJNChZnZXRfcHJpdmFjeV9kaXNjbG9zdXJlGBUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldFByaXZhY3lEaXNjbG9zdXJlSAASWgodZ2V0X2FwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYFiABKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0QXBhcnRtZW50Q2xpbWF0ZVN1bW1hcnlIABJIChNyZWNvbm5lY3RfY29ubmVjdG9yGBcgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlY29ubmVjdENvbm5lY3RvckgAEjwKDWNyZWF0ZV9pbnZpdGUYGCABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlSW52aXRlSAASPAoNcmVzZW5kX2ludml0ZRgZIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXNlbmRJbnZpdGVIABI8Cg1yZXZva2VfaW52aXRlGBogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlJldm9rZUludml0ZUgAEkwKFm1hcmtfaW52aXRlX2VtYWlsX3NlbnQYGyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFya0ludml0ZUVtYWlsU2VudEgAEkUKEmxpc3Rfc3BhY2VfaW52aXRlcxgcIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0U3BhY2VJbnZpdGVzSAASSQoUYXBwcm92ZV9qb2luX3JlcXVlc3QYHSABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXBwcm92ZUpvaW5SZXF1ZXN0SAASQwoRZGVueV9qb2luX3JlcXVlc3QYHiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVueUpvaW5SZXF1ZXN0SAASSQoUbGlzdF9nYXRld2F5X21lbWJlcnMYHyABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEdhdGV3YXlNZW1iZXJzSAASPwoPc2V0X21lbWJlcl9yb2xlGCAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldE1lbWJlclJvbGVIABJHChNyZW1vdmVfZnJvbV9nYXRld2F5GCEgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZUZyb21HYXRld2F5SAASQQoQc2V0X2FjY2Vzc191bnRpbBgiIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRBY2Nlc3NVbnRpbEgAElEKFnNldF9vd25lcl9vcmdhbmlzYXRpb24YIyABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0T3duZXJPcmdhbmlzYXRpb25CAhgBSAASRAoRcmVxdWVzdF9wcm9tb3Rpb24YJCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdFByb21vdGlvbkgAEkIKEGFuc3dlcl9wcm9tb3Rpb24YJSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQW5zd2VyUHJvbW90aW9uSAASTwoXbGlzdF9wcm9tb3Rpb25fcmVxdWVzdHMYJiABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFByb21vdGlvblJlcXVlc3RzSAASOgoMbGlzdF9oZWF0aW5nGCcgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RIZWF0aW5nSAASQwoRcHV0X2hlYXRpbmdfcGxhbnQYKCABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SGVhdGluZ1BsYW50SAASRwoTcHV0X2hlYXRpbmdfY2lyY3VpdBgpIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIZWF0aW5nQ2lyY3VpdEgAEj0KDnB1dF9mbG9vcl96b25lGCogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEZsb29yWm9uZUgAEkEKEHB1dF9jb21mb3J0X2xvYWQYKyABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Q29tZm9ydExvYWRIABJLChVyZW1vdmVfaGVhdGluZ19yZWNvcmQYLCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlSGVhdGluZ1JlY29yZEgAEkcKE3NldF9jb21mb3J0X3dpbmRvd3MYLSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Q29tZm9ydFdpbmRvd3NIAEIJCgdyZXF1ZXN0QgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_access_v1_roles, file_kusinta_iot_climate_v1_climate, 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_invite, file_kusinta_iot_webrtc_v1_members]);
25
+ fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMi7QEKFENvbmZpZ3VyZVJvb21DbGltYXRlEjEKB3Jvb21faWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjEKBmxpbWl0cxgCIAEoCzIhLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tTGltaXRzEjMKB3NlbnNvcnMYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUm9vbVNlbnNvcnMSIQoUbG9ja19kZXZpY2VfY29udHJvbHMYBCABKAhIAIgBAUIXChVfbG9ja19kZXZpY2VfY29udHJvbHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIp8BCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpICChFQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoPc2VydmljZV9wYXJ0aWVzGAUgAygLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VQYXJ0eRJMChZjbGltYXRlX3N1bW1hcnlfcGVyaW9kGAQgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBIfChdvd25lcl9vcmdhbmlzYXRpb25fbmFtZRgGIAEoCRIWCg5uYW1lc193aXRoaGVsZBgHIAEoCEoECAIQBCJ/CgxTZXJ2aWNlUGFydHkSKQoEcm9sZRgBIAEoDjIbLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Sb2xlEjUKB3NpZ25hbHMYAiADKA4yJC5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuU2VydmljZVNpZ25hbBINCgVuYW1lcxgDIAMoCSJKChRHZXRQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7gEKGkdldEFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5EjYKDGFwYXJ0bWVudF9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoGcGVyaW9kGAIgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBItCglmcm9tX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKElJlY29ubmVjdENvbm5lY3RvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZCJGCgtMaXN0SGVhdGluZxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJGCg9QdXRIZWF0aW5nUGxhbnQSMwoFcGxhbnQYASABKAsyJC5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdQbGFudCJMChFQdXRIZWF0aW5nQ2lyY3VpdBI3CgdjaXJjdWl0GAEgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdCI/CgxQdXRGbG9vclpvbmUSLwoEem9uZRgBIAEoCzIhLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lIksKDlB1dENvbWZvcnRMb2FkEjkKDGNvbWZvcnRfbG9hZBgBIAEoCzIjLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydExvYWQiMwoTUmVtb3ZlSGVhdGluZ1JlY29yZBIKCgJpZBgBIAEoCRIQCghyZXZpc2lvbhgCIAEoBCKYAQoRU2V0Q29tZm9ydFdpbmRvd3MSFwoPY29tZm9ydF9sb2FkX2lkGAEgASgJEjYKB3dpbmRvd3MYAiADKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRXaW5kb3cSHQoQd2luZG93c19yZXZpc2lvbhgDIAEoBEgAiAEBQhMKEV93aW5kb3dzX3JldmlzaW9uIogBChdSZXF1ZXN0QWNjb3VudExpbmtOb25jZRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI6CgdzZXJ2aWNlGAIgASgOMikua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuTGlua2VkU2VydmljZSJFChBMaXN0QWNjb3VudExpbmtzEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIn4KDVVubGlua0FjY291bnQSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOgoHc2VydmljZRgCIAEoDjIpLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkxpbmtlZFNlcnZpY2UiRwoRTGlzdENvbW1pc3Npb25pbmcSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIlUKFFB1dENvbW1pc3Npb25pbmdGYWN0Ej0KBGZhY3QYASABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0IjwKF1JlbW92ZUNvbW1pc3Npb25pbmdGYWN0Eg8KB2ZhY3RfaWQYASABKAkSEAoIcmV2aXNpb24YAiABKAQiUQoQUHV0SG91c2VUZW1wbGF0ZRI9Cgh0ZW1wbGF0ZRgBIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZSJZCg9TZXRIb21lVGVtcGxhdGUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEwoLdGVtcGxhdGVfaWQYAiABKAkinwEKFFJ1bkNvbW1pc3Npb25pbmdUZXN0EjQKBGtpbmQYASABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYBCABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEARSCXJlY29yZF9pZFIFZmllbGQiZgoZQ29uY2x1ZGVDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjgKB3ZlcmRpY3QYAiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZSJJCg5MaXN0SG9tZVNldHVwcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCK1HwoRTWFuYWdlbWVudFJlcXVlc3QSOgoMY3JlYXRlX3NwYWNlGAEgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkNyZWF0ZVNwYWNlSAASOgoMdXBkYXRlX3NwYWNlGAIgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLlVwZGF0ZVNwYWNlSAASOgoMZGVsZXRlX3NwYWNlGAMgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkRlbGV0ZVNwYWNlSAASSAoUYXNzaWduX3VzZXJfdG9fc3BhY2UYBCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXNzaWduVXNlclRvU3BhY2VIABJMChZyZW1vdmVfdXNlcl9mcm9tX3NwYWNlGAUgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZVVzZXJGcm9tU3BhY2VIABJKChVwbGFjZV9kZXZpY2VfaW5fc3BhY2UYBiABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGxhY2VEZXZpY2VJblNwYWNlSAASUAoYcmVtb3ZlX2RldmljZV9mcm9tX3NwYWNlGAcgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZURldmljZUZyb21TcGFjZUgAEjoKDGNsYWltX2RldmljZRgIIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGFpbURldmljZUgAEj4KDnJlbGVhc2VfZGV2aWNlGAkgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbGVhc2VEZXZpY2VIABI4CgtsaXN0X3NwYWNlcxgKIAEoCzIhLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0U3BhY2VzSAASRQoSY3JlYXRlX2RldmljZV9saW5rGAsgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkNyZWF0ZURldmljZUxpbmtIABJFChJyZW1vdmVfZGV2aWNlX2xpbmsYDCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRGV2aWNlTGlua0gAEkMKEWxpc3RfZGV2aWNlX2xpbmtzGA0gASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3REZXZpY2VMaW5rc0gAEkUKEnVwZGF0ZV9kZXZpY2VfbGluaxgOIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VcGRhdGVEZXZpY2VMaW5rSAASQgoQcHJvdmlzaW9uX2RldmljZRgPIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm92aXNpb25EZXZpY2VIABI/Cg9zZXRfcm9vbV90YXJnZXQYECABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Um9vbVRhcmdldEgAEk0KFmNvbmZpZ3VyZV9yb29tX2NsaW1hdGUYESABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29uZmlndXJlUm9vbUNsaW1hdGVIABJBChBzZXRfY2xpbWF0ZV9tb2RlGBIgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldENsaW1hdGVNb2RlSAASRQoSbGlzdF9yb29tX2NsaW1hdGVzGBMgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RSb29tQ2xpbWF0ZXNIABJBChBnZXRfcm9vbV9oaXN0b3J5GBQgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldFJvb21IaXN0b3J5SAASTQoWZ2V0X3ByaXZhY3lfZGlzY2xvc3VyZRgVIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRQcml2YWN5RGlzY2xvc3VyZUgAEloKHWdldF9hcGFydG1lbnRfY2xpbWF0ZV9zdW1tYXJ5GBYgASgLMjEua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldEFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASSAoTcmVjb25uZWN0X2Nvbm5lY3RvchgXIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZWNvbm5lY3RDb25uZWN0b3JIABI8Cg1jcmVhdGVfaW52aXRlGBggASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkNyZWF0ZUludml0ZUgAEjwKDXJlc2VuZF9pbnZpdGUYGSABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVzZW5kSW52aXRlSAASPAoNcmV2b2tlX2ludml0ZRgaIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXZva2VJbnZpdGVIABJMChZtYXJrX2ludml0ZV9lbWFpbF9zZW50GBsgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hcmtJbnZpdGVFbWFpbFNlbnRIABJFChJsaXN0X3NwYWNlX2ludml0ZXMYHCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFNwYWNlSW52aXRlc0gAEkkKFGFwcHJvdmVfam9pbl9yZXF1ZXN0GB0gASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkFwcHJvdmVKb2luUmVxdWVzdEgAEkMKEWRlbnlfam9pbl9yZXF1ZXN0GB4gASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLkRlbnlKb2luUmVxdWVzdEgAEkkKFGxpc3RfZ2F0ZXdheV9tZW1iZXJzGB8gASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RHYXRld2F5TWVtYmVyc0gAEj8KD3NldF9tZW1iZXJfcm9sZRggIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRNZW1iZXJSb2xlSAASRwoTcmVtb3ZlX2Zyb21fZ2F0ZXdheRghIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVGcm9tR2F0ZXdheUgAEkEKEHNldF9hY2Nlc3NfdW50aWwYIiABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0QWNjZXNzVW50aWxIABJRChZzZXRfb3duZXJfb3JnYW5pc2F0aW9uGCMgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldE93bmVyT3JnYW5pc2F0aW9uQgIYAUgAEkQKEXJlcXVlc3RfcHJvbW90aW9uGCQgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlcXVlc3RQcm9tb3Rpb25IABJCChBhbnN3ZXJfcHJvbW90aW9uGCUgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLkFuc3dlclByb21vdGlvbkgAEk8KF2xpc3RfcHJvbW90aW9uX3JlcXVlc3RzGCYgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RQcm9tb3Rpb25SZXF1ZXN0c0gAEjoKDGxpc3RfaGVhdGluZxgnIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0SGVhdGluZ0gAEkMKEXB1dF9oZWF0aW5nX3BsYW50GCggASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEhlYXRpbmdQbGFudEgAEkcKE3B1dF9oZWF0aW5nX2NpcmN1aXQYKSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SGVhdGluZ0NpcmN1aXRIABI9Cg5wdXRfZmxvb3Jfem9uZRgqIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRGbG9vclpvbmVIABJBChBwdXRfY29tZm9ydF9sb2FkGCsgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dENvbWZvcnRMb2FkSAASSwoVcmVtb3ZlX2hlYXRpbmdfcmVjb3JkGCwgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZUhlYXRpbmdSZWNvcmRIABJHChNzZXRfY29tZm9ydF93aW5kb3dzGC0gASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldENvbWZvcnRXaW5kb3dzSAASVAoacmVxdWVzdF9hY2NvdW50X2xpbmtfbm9uY2UYLiABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdEFjY291bnRMaW5rTm9uY2VIABJFChJsaXN0X2FjY291bnRfbGlua3MYLyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEFjY291bnRMaW5rc0gAEj4KDnVubGlua19hY2NvdW50GDAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlVubGlua0FjY291bnRIABJGChJsaXN0X2NvbW1pc3Npb25pbmcYMSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdENvbW1pc3Npb25pbmdIABJNChZwdXRfY29tbWlzc2lvbmluZ19mYWN0GDIgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dENvbW1pc3Npb25pbmdGYWN0SAASUwoZcmVtb3ZlX2NvbW1pc3Npb25pbmdfZmFjdBgzIAEoCzIuLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVDb21taXNzaW9uaW5nRmFjdEgAEkUKEnB1dF9ob3VzZV90ZW1wbGF0ZRg0IAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIb3VzZVRlbXBsYXRlSAASQwoRc2V0X2hvbWVfdGVtcGxhdGUYNSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0SG9tZVRlbXBsYXRlSAASTQoWcnVuX2NvbW1pc3Npb25pbmdfdGVzdBg2IAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SdW5Db21taXNzaW9uaW5nVGVzdEgAElcKG2NvbmNsdWRlX2NvbW1pc3Npb25pbmdfdGVzdBg3IAEoCzIwLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25jbHVkZUNvbW1pc3Npb25pbmdUZXN0SAASQQoQbGlzdF9ob21lX3NldHVwcxg4IAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0SG9tZVNldHVwc0gAQgkKB3JlcXVlc3RCAkgBYgZwcm90bzM", [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_invite, file_kusinta_iot_webrtc_v1_members]);
24
26
 
25
27
  /**
26
28
  * Describes the message kusinta.iot.webrtc.v1.CreateSpace.
@@ -274,10 +276,87 @@ export const RemoveHeatingRecordSchema = /*@__PURE__*/
274
276
  export const SetComfortWindowsSchema = /*@__PURE__*/
275
277
  messageDesc(file_kusinta_iot_webrtc_v1_management, 35);
276
278
 
279
+ /**
280
+ * Describes the message kusinta.iot.webrtc.v1.RequestAccountLinkNonce.
281
+ * Use `create(RequestAccountLinkNonceSchema)` to create a new message.
282
+ */
283
+ export const RequestAccountLinkNonceSchema = /*@__PURE__*/
284
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 36);
285
+
286
+ /**
287
+ * Describes the message kusinta.iot.webrtc.v1.ListAccountLinks.
288
+ * Use `create(ListAccountLinksSchema)` to create a new message.
289
+ */
290
+ export const ListAccountLinksSchema = /*@__PURE__*/
291
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 37);
292
+
293
+ /**
294
+ * Describes the message kusinta.iot.webrtc.v1.UnlinkAccount.
295
+ * Use `create(UnlinkAccountSchema)` to create a new message.
296
+ */
297
+ export const UnlinkAccountSchema = /*@__PURE__*/
298
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 38);
299
+
300
+ /**
301
+ * Describes the message kusinta.iot.webrtc.v1.ListCommissioning.
302
+ * Use `create(ListCommissioningSchema)` to create a new message.
303
+ */
304
+ export const ListCommissioningSchema = /*@__PURE__*/
305
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 39);
306
+
307
+ /**
308
+ * Describes the message kusinta.iot.webrtc.v1.PutCommissioningFact.
309
+ * Use `create(PutCommissioningFactSchema)` to create a new message.
310
+ */
311
+ export const PutCommissioningFactSchema = /*@__PURE__*/
312
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 40);
313
+
314
+ /**
315
+ * Describes the message kusinta.iot.webrtc.v1.RemoveCommissioningFact.
316
+ * Use `create(RemoveCommissioningFactSchema)` to create a new message.
317
+ */
318
+ export const RemoveCommissioningFactSchema = /*@__PURE__*/
319
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 41);
320
+
321
+ /**
322
+ * Describes the message kusinta.iot.webrtc.v1.PutHouseTemplate.
323
+ * Use `create(PutHouseTemplateSchema)` to create a new message.
324
+ */
325
+ export const PutHouseTemplateSchema = /*@__PURE__*/
326
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 42);
327
+
328
+ /**
329
+ * Describes the message kusinta.iot.webrtc.v1.SetHomeTemplate.
330
+ * Use `create(SetHomeTemplateSchema)` to create a new message.
331
+ */
332
+ export const SetHomeTemplateSchema = /*@__PURE__*/
333
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 43);
334
+
335
+ /**
336
+ * Describes the message kusinta.iot.webrtc.v1.RunCommissioningTest.
337
+ * Use `create(RunCommissioningTestSchema)` to create a new message.
338
+ */
339
+ export const RunCommissioningTestSchema = /*@__PURE__*/
340
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 44);
341
+
342
+ /**
343
+ * Describes the message kusinta.iot.webrtc.v1.ConcludeCommissioningTest.
344
+ * Use `create(ConcludeCommissioningTestSchema)` to create a new message.
345
+ */
346
+ export const ConcludeCommissioningTestSchema = /*@__PURE__*/
347
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 45);
348
+
349
+ /**
350
+ * Describes the message kusinta.iot.webrtc.v1.ListHomeSetups.
351
+ * Use `create(ListHomeSetupsSchema)` to create a new message.
352
+ */
353
+ export const ListHomeSetupsSchema = /*@__PURE__*/
354
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 46);
355
+
277
356
  /**
278
357
  * Describes the message kusinta.iot.webrtc.v1.ManagementRequest.
279
358
  * Use `create(ManagementRequestSchema)` to create a new message.
280
359
  */
281
360
  export const ManagementRequestSchema = /*@__PURE__*/
282
- messageDesc(file_kusinta_iot_webrtc_v1_management, 36);
361
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 47);
283
362