@altnovatrail/contracts 0.8.1 → 0.8.3

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.
@@ -0,0 +1,406 @@
1
+ // @generated by protoc-gen-es v2.16.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file novatrail/api/v1/account.proto (package novatrail.api.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ // The account and its profiles in the contract between `app` and `api`: the account and the list
6
+ // of its profiles, by which `app` erases on the device what was deleted elsewhere; the profile of
7
+ // the account's owner and a child's profile, which a consent comes before; the PIN of the section
8
+ // for adults; the voicing a learner sets; the own key checked when it is connected; deletion and
9
+ // export. What each message means, and what `app` does on each refusal, are the rules of
10
+ // contracts/README.md, section 15.
11
+
12
+ import { enumDesc, fileDesc, messageDesc, serviceDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
13
+ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
14
+ import { file_novatrail_api_v1_attempt } from "./attempt_pb.js";
15
+ import { file_novatrail_api_v1_cause } from "./cause_pb.js";
16
+ import { file_novatrail_api_v1_learning } from "./learning_pb.js";
17
+
18
+ /**
19
+ * Describes the file novatrail/api/v1/account.proto.
20
+ */
21
+ export const file_novatrail_api_v1_account = /*@__PURE__*/
22
+ fileDesc("Ch5ub3ZhdHJhaWwvYXBpL3YxL2FjY291bnQucHJvdG8SEG5vdmF0cmFpbC5hcGkudjEiEwoRR2V0QWNjb3VudFJlcXVlc3QiQAoSR2V0QWNjb3VudFJlc3BvbnNlEioKB2FjY291bnQYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLkFjY291bnQiQQoUQ3JlYXRlQWNjb3VudFJlcXVlc3QSEwoLaW52aXRlX2NvZGUYASABKAkSFAoMYWR1bHRfc3RhdGVkGAIgASgIIkMKFUNyZWF0ZUFjY291bnRSZXNwb25zZRIqCgdhY2NvdW50GAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5BY2NvdW50IpMBCgdBY2NvdW50EhIKCmFjY291bnRfaWQYASABKAkSDwoHcGluX3NldBgCIAEoCBIrCghwcm9maWxlcxgDIAMoCzIZLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZRI2Cg5jaGlsZF9jb25zZW50cxgEIAMoCzIeLm5vdmF0cmFpbC5hcGkudjEuQ2hpbGRDb25zZW50IskDCgdQcm9maWxlEhIKCnByb2ZpbGVfaWQYASABKAkSDQoFb3duZXIYAiABKAgSEQoJcHNldWRvbnltGAMgASgJEg4KBmF2YXRhchgEIAEoCRIUCgxhZ2VfY2F0ZWdvcnkYBSABKAkSDwoHY291bnRyeRgGIAEoCRI/ChJwcmVzZW50YXRpb25fc3R5bGUYByABKAsyIy5ub3ZhdHJhaWwuYXBpLnYxLlByZXNlbnRhdGlvblN0eWxlEiwKDGRlZmF1bHRfbW9kZRgIIAEoDjIWLm5vdmF0cmFpbC5hcGkudjEuTW9kZRIfChJpbnRlcmZhY2VfbGFuZ3VhZ2UYCSABKAlIAIgBARISCgVncmFkZRgKIAEoBUgBiAEBEhoKEmFza19iZWZvcmVfc2hvd2luZxgLIAEoCBI2CgxvcGVuX2F0dGVtcHQYDCABKAsyIC5ub3ZhdHJhaWwuYXBpLnYxLk9wZW5BdHRlbXB0UmVmEjgKEG9wZW5fbGVzc29uX3J1bnMYDSADKAsyHi5ub3ZhdHJhaWwuYXBpLnYxLkxlc3NvblJ1blJlZkIVChNfaW50ZXJmYWNlX2xhbmd1YWdlQggKBl9ncmFkZSI/ChFQcmVzZW50YXRpb25TdHlsZRIqCgd2b2ljaW5nGAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nIloKB1ZvaWNpbmcSFAoHZW5hYmxlZBgBIAEoCEgAiAEBEi0KBXNwZWVkGAIgASgOMh4ubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nU3BlZWRCCgoIX2VuYWJsZWQivwIKD1Byb2ZpbGVTZXR0aW5ncxIWCglwc2V1ZG9ueW0YASABKAlIAIgBARITCgZhdmF0YXIYAiABKAlIAYgBARIqCgd2b2ljaW5nGAMgASgLMhkubm92YXRyYWlsLmFwaS52MS5Wb2ljaW5nEiwKDGRlZmF1bHRfbW9kZRgEIAEoDjIWLm5vdmF0cmFpbC5hcGkudjEuTW9kZRIfChJpbnRlcmZhY2VfbGFuZ3VhZ2UYBSABKAlIAogBARISCgVncmFkZRgGIAEoBUgDiAEBEh8KEmFza19iZWZvcmVfc2hvd2luZxgHIAEoCEgEiAEBQgwKCl9wc2V1ZG9ueW1CCQoHX2F2YXRhckIVChNfaW50ZXJmYWNlX2xhbmd1YWdlQggKBl9ncmFkZUIVChNfYXNrX2JlZm9yZV9zaG93aW5nIngKDENoaWxkQ29uc2VudBISCgpjb25zZW50X2lkGAEgASgJEhQKDGFnZV9jYXRlZ29yeRgCIAEoCRIPCgdjb3VudHJ5GAMgASgJEi0KBXN0YXRlGAQgASgOMh4ubm92YXRyYWlsLmFwaS52MS5Db25zZW50U3RhdGUiNQoNU2V0UGluUmVxdWVzdBILCgNwaW4YASABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJIhAKDlNldFBpblJlc3BvbnNlIjgKEFZlcmlmeVBpblJlcXVlc3QSCwoDcGluGAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgCIAEoCSI+ChFWZXJpZnlQaW5SZXNwb25zZRIpCgVjaGVjaxgBIAEoCzIaLm5vdmF0cmFpbC5hcGkudjEuUGluQ2hlY2siSQoQQ2hhbmdlUGluUmVxdWVzdBILCgNwaW4YASABKAkSDwoHbmV3X3BpbhgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkiPgoRQ2hhbmdlUGluUmVzcG9uc2USKQoFY2hlY2sYASABKAsyGi5ub3ZhdHJhaWwuYXBpLnYxLlBpbkNoZWNrImQKCFBpbkNoZWNrEg8KB21hdGNoZXMYASABKAgSFQoNYXR0ZW1wdHNfbGVmdBgCIAEoBRIwCgxsb2NrZWRfdW50aWwYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjsKD1Jlc2V0UGluUmVxdWVzdBIPCgduZXdfcGluGAEgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgCIAEoCSISChBSZXNldFBpblJlc3BvbnNlImEKGUNyZWF0ZU93bmVyUHJvZmlsZVJlcXVlc3QSDwoHY291bnRyeRgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkgKGkNyZWF0ZU93bmVyUHJvZmlsZVJlc3BvbnNlEioKB3Byb2ZpbGUYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLlByb2ZpbGUibAoaUmVxdWVzdENoaWxkQ29uc2VudFJlcXVlc3QSFwoPaWRlbXBvdGVuY3lfa2V5GAEgASgJEhYKCWFnZV95ZWFycxgCIAEoBUgAiAEBEg8KB2NvdW50cnkYAyABKAlCDAoKX2FnZV95ZWFycyJOChtSZXF1ZXN0Q2hpbGRDb25zZW50UmVzcG9uc2USLwoHY29uc2VudBgBIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuQ2hpbGRDb25zZW50ImQKGUNyZWF0ZUNoaWxkUHJvZmlsZVJlcXVlc3QSEgoKY29uc2VudF9pZBgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkgKGkNyZWF0ZUNoaWxkUHJvZmlsZVJlc3BvbnNlEioKB3Byb2ZpbGUYASABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLlByb2ZpbGUiXwoUVXBkYXRlUHJvZmlsZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRIzCghzZXR0aW5ncxgCIAEoCzIhLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZVNldHRpbmdzIkMKFVVwZGF0ZVByb2ZpbGVSZXNwb25zZRIqCgdwcm9maWxlGAEgASgLMhkubm92YXRyYWlsLmFwaS52MS5Qcm9maWxlIlMKEVNldFZvaWNpbmdSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSKgoHdm9pY2luZxgCIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuVm9pY2luZyJAChJTZXRWb2ljaW5nUmVzcG9uc2USKgoHcHJvZmlsZRgBIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuUHJvZmlsZSIqChREZWxldGVQcm9maWxlUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJIhcKFURlbGV0ZVByb2ZpbGVSZXNwb25zZSIWChREZWxldGVBY2NvdW50UmVxdWVzdCIXChVEZWxldGVBY2NvdW50UmVzcG9uc2UiKgoURXhwb3J0UHJvZmlsZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCSJEChVFeHBvcnRQcm9maWxlUmVzcG9uc2USDAoEcGFydBgBIAEoDBIdChVleHBvcnRfZm9ybWF0X3ZlcnNpb24YAiABKAkiFgoURXhwb3J0QWNjb3VudFJlcXVlc3QiRAoVRXhwb3J0QWNjb3VudFJlc3BvbnNlEgwKBHBhcnQYASABKAwSHQoVZXhwb3J0X2Zvcm1hdF92ZXJzaW9uGAIgASgJIlMKEkNoZWNrT3duS2V5UmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEikKB293bl9rZXkYAiABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleSJvChNDaGVja093bktleVJlc3BvbnNlEiwKBWNoZWNrGAEgASgOMh0ubm92YXRyYWlsLmFwaS52MS5Pd25LZXlDaGVjaxIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lIjAKGkxpc3RPd25LZXlQcm92aWRlcnNSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkiUgobTGlzdE93bktleVByb3ZpZGVyc1Jlc3BvbnNlEjMKCXByb3ZpZGVycxgBIAMoCzIgLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5UHJvdmlkZXIiMAoOT3duS2V5UHJvdmlkZXISEAoIcHJvdmlkZXIYASABKAkSDAoEbmFtZRgCIAEoCSpfCgxWb2ljaW5nU3BlZWQSHQoZVk9JQ0lOR19TUEVFRF9VTlNQRUNJRklFRBAAEhgKFFZPSUNJTkdfU1BFRURfTk9STUFMEAESFgoSVk9JQ0lOR19TUEVFRF9TTE9XEAIqPgoETW9kZRIUChBNT0RFX1VOU1BFQ0lGSUVEEAASEQoNTU9ERV9CWV9TVEVQUxABEg0KCU1PREVfU0VMRhACKmUKDENvbnNlbnRTdGF0ZRIdChlDT05TRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAASGQoVQ09OU0VOVF9TVEFURV9XQUlUSU5HEAESGwoXQ09OU0VOVF9TVEFURV9DT05GSVJNRUQQAiqnAQoLT3duS2V5Q2hlY2sSHQoZT1dOX0tFWV9DSEVDS19VTlNQRUNJRklFRBAAEhoKFk9XTl9LRVlfQ0hFQ0tfQUNDRVBURUQQARIZChVPV05fS0VZX0NIRUNLX0lOVkFMSUQQAhIfChtPV05fS0VZX0NIRUNLX05PX1BFUk1JU1NJT04QAxIhCh1PV05fS0VZX0NIRUNLX1BST1ZJREVSX0NMT1NFRBAEMoANCg5BY2NvdW50U2VydmljZRJXCgpHZXRBY2NvdW50EiMubm92YXRyYWlsLmFwaS52MS5HZXRBY2NvdW50UmVxdWVzdBokLm5vdmF0cmFpbC5hcGkudjEuR2V0QWNjb3VudFJlc3BvbnNlEmAKDUNyZWF0ZUFjY291bnQSJi5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZUFjY291bnRSZXF1ZXN0Gicubm92YXRyYWlsLmFwaS52MS5DcmVhdGVBY2NvdW50UmVzcG9uc2USSwoGU2V0UGluEh8ubm92YXRyYWlsLmFwaS52MS5TZXRQaW5SZXF1ZXN0GiAubm92YXRyYWlsLmFwaS52MS5TZXRQaW5SZXNwb25zZRJUCglWZXJpZnlQaW4SIi5ub3ZhdHJhaWwuYXBpLnYxLlZlcmlmeVBpblJlcXVlc3QaIy5ub3ZhdHJhaWwuYXBpLnYxLlZlcmlmeVBpblJlc3BvbnNlElQKCUNoYW5nZVBpbhIiLm5vdmF0cmFpbC5hcGkudjEuQ2hhbmdlUGluUmVxdWVzdBojLm5vdmF0cmFpbC5hcGkudjEuQ2hhbmdlUGluUmVzcG9uc2USUQoIUmVzZXRQaW4SIS5ub3ZhdHJhaWwuYXBpLnYxLlJlc2V0UGluUmVxdWVzdBoiLm5vdmF0cmFpbC5hcGkudjEuUmVzZXRQaW5SZXNwb25zZRJvChJDcmVhdGVPd25lclByb2ZpbGUSKy5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZU93bmVyUHJvZmlsZVJlcXVlc3QaLC5ub3ZhdHJhaWwuYXBpLnYxLkNyZWF0ZU93bmVyUHJvZmlsZVJlc3BvbnNlEnIKE1JlcXVlc3RDaGlsZENvbnNlbnQSLC5ub3ZhdHJhaWwuYXBpLnYxLlJlcXVlc3RDaGlsZENvbnNlbnRSZXF1ZXN0Gi0ubm92YXRyYWlsLmFwaS52MS5SZXF1ZXN0Q2hpbGRDb25zZW50UmVzcG9uc2USbwoSQ3JlYXRlQ2hpbGRQcm9maWxlEisubm92YXRyYWlsLmFwaS52MS5DcmVhdGVDaGlsZFByb2ZpbGVSZXF1ZXN0Giwubm92YXRyYWlsLmFwaS52MS5DcmVhdGVDaGlsZFByb2ZpbGVSZXNwb25zZRJgCg1VcGRhdGVQcm9maWxlEiYubm92YXRyYWlsLmFwaS52MS5VcGRhdGVQcm9maWxlUmVxdWVzdBonLm5vdmF0cmFpbC5hcGkudjEuVXBkYXRlUHJvZmlsZVJlc3BvbnNlElcKClNldFZvaWNpbmcSIy5ub3ZhdHJhaWwuYXBpLnYxLlNldFZvaWNpbmdSZXF1ZXN0GiQubm92YXRyYWlsLmFwaS52MS5TZXRWb2ljaW5nUmVzcG9uc2USYAoNRGVsZXRlUHJvZmlsZRImLm5vdmF0cmFpbC5hcGkudjEuRGVsZXRlUHJvZmlsZVJlcXVlc3QaJy5ub3ZhdHJhaWwuYXBpLnYxLkRlbGV0ZVByb2ZpbGVSZXNwb25zZRJgCg1EZWxldGVBY2NvdW50EiYubm92YXRyYWlsLmFwaS52MS5EZWxldGVBY2NvdW50UmVxdWVzdBonLm5vdmF0cmFpbC5hcGkudjEuRGVsZXRlQWNjb3VudFJlc3BvbnNlEmAKDUV4cG9ydFByb2ZpbGUSJi5ub3ZhdHJhaWwuYXBpLnYxLkV4cG9ydFByb2ZpbGVSZXF1ZXN0Gicubm92YXRyYWlsLmFwaS52MS5FeHBvcnRQcm9maWxlUmVzcG9uc2USYAoNRXhwb3J0QWNjb3VudBImLm5vdmF0cmFpbC5hcGkudjEuRXhwb3J0QWNjb3VudFJlcXVlc3QaJy5ub3ZhdHJhaWwuYXBpLnYxLkV4cG9ydEFjY291bnRSZXNwb25zZRJaCgtDaGVja093bktleRIkLm5vdmF0cmFpbC5hcGkudjEuQ2hlY2tPd25LZXlSZXF1ZXN0GiUubm92YXRyYWlsLmFwaS52MS5DaGVja093bktleVJlc3BvbnNlEnIKE0xpc3RPd25LZXlQcm92aWRlcnMSLC5ub3ZhdHJhaWwuYXBpLnYxLkxpc3RPd25LZXlQcm92aWRlcnNSZXF1ZXN0Gi0ubm92YXRyYWlsLmFwaS52MS5MaXN0T3duS2V5UHJvdmlkZXJzUmVzcG9uc2VCxQEKFGNvbS5ub3ZhdHJhaWwuYXBpLnYxQgxBY2NvdW50UHJvdG9QAVo9Z2l0aHViLmNvbS9hbHRub3ZhdHJhaWwvc3BlYy9jb250cmFjdHMvbm92YXRyYWlsL2FwaS92MTthcGl2MaICA05BWKoCEE5vdmF0cmFpbC5BcGkuVjHKAhBOb3ZhdHJhaWxcQXBpXFYx4gIcTm92YXRyYWlsXEFwaVxWMVxHUEJNZXRhZGF0YeoCEk5vdmF0cmFpbDo6QXBpOjpWMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_novatrail_api_v1_attempt, file_novatrail_api_v1_cause, file_novatrail_api_v1_learning]);
23
+
24
+ /**
25
+ * Describes the message novatrail.api.v1.GetAccountRequest.
26
+ * Use `create(GetAccountRequestSchema)` to create a new message.
27
+ */
28
+ export const GetAccountRequestSchema = /*@__PURE__*/
29
+ messageDesc(file_novatrail_api_v1_account, 0);
30
+
31
+ /**
32
+ * Describes the message novatrail.api.v1.GetAccountResponse.
33
+ * Use `create(GetAccountResponseSchema)` to create a new message.
34
+ */
35
+ export const GetAccountResponseSchema = /*@__PURE__*/
36
+ messageDesc(file_novatrail_api_v1_account, 1);
37
+
38
+ /**
39
+ * Describes the message novatrail.api.v1.CreateAccountRequest.
40
+ * Use `create(CreateAccountRequestSchema)` to create a new message.
41
+ */
42
+ export const CreateAccountRequestSchema = /*@__PURE__*/
43
+ messageDesc(file_novatrail_api_v1_account, 2);
44
+
45
+ /**
46
+ * Describes the message novatrail.api.v1.CreateAccountResponse.
47
+ * Use `create(CreateAccountResponseSchema)` to create a new message.
48
+ */
49
+ export const CreateAccountResponseSchema = /*@__PURE__*/
50
+ messageDesc(file_novatrail_api_v1_account, 3);
51
+
52
+ /**
53
+ * Describes the message novatrail.api.v1.Account.
54
+ * Use `create(AccountSchema)` to create a new message.
55
+ */
56
+ export const AccountSchema = /*@__PURE__*/
57
+ messageDesc(file_novatrail_api_v1_account, 4);
58
+
59
+ /**
60
+ * Describes the message novatrail.api.v1.Profile.
61
+ * Use `create(ProfileSchema)` to create a new message.
62
+ */
63
+ export const ProfileSchema = /*@__PURE__*/
64
+ messageDesc(file_novatrail_api_v1_account, 5);
65
+
66
+ /**
67
+ * Describes the message novatrail.api.v1.PresentationStyle.
68
+ * Use `create(PresentationStyleSchema)` to create a new message.
69
+ */
70
+ export const PresentationStyleSchema = /*@__PURE__*/
71
+ messageDesc(file_novatrail_api_v1_account, 6);
72
+
73
+ /**
74
+ * Describes the message novatrail.api.v1.Voicing.
75
+ * Use `create(VoicingSchema)` to create a new message.
76
+ */
77
+ export const VoicingSchema = /*@__PURE__*/
78
+ messageDesc(file_novatrail_api_v1_account, 7);
79
+
80
+ /**
81
+ * Describes the message novatrail.api.v1.ProfileSettings.
82
+ * Use `create(ProfileSettingsSchema)` to create a new message.
83
+ */
84
+ export const ProfileSettingsSchema = /*@__PURE__*/
85
+ messageDesc(file_novatrail_api_v1_account, 8);
86
+
87
+ /**
88
+ * Describes the message novatrail.api.v1.ChildConsent.
89
+ * Use `create(ChildConsentSchema)` to create a new message.
90
+ */
91
+ export const ChildConsentSchema = /*@__PURE__*/
92
+ messageDesc(file_novatrail_api_v1_account, 9);
93
+
94
+ /**
95
+ * Describes the message novatrail.api.v1.SetPinRequest.
96
+ * Use `create(SetPinRequestSchema)` to create a new message.
97
+ */
98
+ export const SetPinRequestSchema = /*@__PURE__*/
99
+ messageDesc(file_novatrail_api_v1_account, 10);
100
+
101
+ /**
102
+ * Describes the message novatrail.api.v1.SetPinResponse.
103
+ * Use `create(SetPinResponseSchema)` to create a new message.
104
+ */
105
+ export const SetPinResponseSchema = /*@__PURE__*/
106
+ messageDesc(file_novatrail_api_v1_account, 11);
107
+
108
+ /**
109
+ * Describes the message novatrail.api.v1.VerifyPinRequest.
110
+ * Use `create(VerifyPinRequestSchema)` to create a new message.
111
+ */
112
+ export const VerifyPinRequestSchema = /*@__PURE__*/
113
+ messageDesc(file_novatrail_api_v1_account, 12);
114
+
115
+ /**
116
+ * Describes the message novatrail.api.v1.VerifyPinResponse.
117
+ * Use `create(VerifyPinResponseSchema)` to create a new message.
118
+ */
119
+ export const VerifyPinResponseSchema = /*@__PURE__*/
120
+ messageDesc(file_novatrail_api_v1_account, 13);
121
+
122
+ /**
123
+ * Describes the message novatrail.api.v1.ChangePinRequest.
124
+ * Use `create(ChangePinRequestSchema)` to create a new message.
125
+ */
126
+ export const ChangePinRequestSchema = /*@__PURE__*/
127
+ messageDesc(file_novatrail_api_v1_account, 14);
128
+
129
+ /**
130
+ * Describes the message novatrail.api.v1.ChangePinResponse.
131
+ * Use `create(ChangePinResponseSchema)` to create a new message.
132
+ */
133
+ export const ChangePinResponseSchema = /*@__PURE__*/
134
+ messageDesc(file_novatrail_api_v1_account, 15);
135
+
136
+ /**
137
+ * Describes the message novatrail.api.v1.PinCheck.
138
+ * Use `create(PinCheckSchema)` to create a new message.
139
+ */
140
+ export const PinCheckSchema = /*@__PURE__*/
141
+ messageDesc(file_novatrail_api_v1_account, 16);
142
+
143
+ /**
144
+ * Describes the message novatrail.api.v1.ResetPinRequest.
145
+ * Use `create(ResetPinRequestSchema)` to create a new message.
146
+ */
147
+ export const ResetPinRequestSchema = /*@__PURE__*/
148
+ messageDesc(file_novatrail_api_v1_account, 17);
149
+
150
+ /**
151
+ * Describes the message novatrail.api.v1.ResetPinResponse.
152
+ * Use `create(ResetPinResponseSchema)` to create a new message.
153
+ */
154
+ export const ResetPinResponseSchema = /*@__PURE__*/
155
+ messageDesc(file_novatrail_api_v1_account, 18);
156
+
157
+ /**
158
+ * Describes the message novatrail.api.v1.CreateOwnerProfileRequest.
159
+ * Use `create(CreateOwnerProfileRequestSchema)` to create a new message.
160
+ */
161
+ export const CreateOwnerProfileRequestSchema = /*@__PURE__*/
162
+ messageDesc(file_novatrail_api_v1_account, 19);
163
+
164
+ /**
165
+ * Describes the message novatrail.api.v1.CreateOwnerProfileResponse.
166
+ * Use `create(CreateOwnerProfileResponseSchema)` to create a new message.
167
+ */
168
+ export const CreateOwnerProfileResponseSchema = /*@__PURE__*/
169
+ messageDesc(file_novatrail_api_v1_account, 20);
170
+
171
+ /**
172
+ * Describes the message novatrail.api.v1.RequestChildConsentRequest.
173
+ * Use `create(RequestChildConsentRequestSchema)` to create a new message.
174
+ */
175
+ export const RequestChildConsentRequestSchema = /*@__PURE__*/
176
+ messageDesc(file_novatrail_api_v1_account, 21);
177
+
178
+ /**
179
+ * Describes the message novatrail.api.v1.RequestChildConsentResponse.
180
+ * Use `create(RequestChildConsentResponseSchema)` to create a new message.
181
+ */
182
+ export const RequestChildConsentResponseSchema = /*@__PURE__*/
183
+ messageDesc(file_novatrail_api_v1_account, 22);
184
+
185
+ /**
186
+ * Describes the message novatrail.api.v1.CreateChildProfileRequest.
187
+ * Use `create(CreateChildProfileRequestSchema)` to create a new message.
188
+ */
189
+ export const CreateChildProfileRequestSchema = /*@__PURE__*/
190
+ messageDesc(file_novatrail_api_v1_account, 23);
191
+
192
+ /**
193
+ * Describes the message novatrail.api.v1.CreateChildProfileResponse.
194
+ * Use `create(CreateChildProfileResponseSchema)` to create a new message.
195
+ */
196
+ export const CreateChildProfileResponseSchema = /*@__PURE__*/
197
+ messageDesc(file_novatrail_api_v1_account, 24);
198
+
199
+ /**
200
+ * Describes the message novatrail.api.v1.UpdateProfileRequest.
201
+ * Use `create(UpdateProfileRequestSchema)` to create a new message.
202
+ */
203
+ export const UpdateProfileRequestSchema = /*@__PURE__*/
204
+ messageDesc(file_novatrail_api_v1_account, 25);
205
+
206
+ /**
207
+ * Describes the message novatrail.api.v1.UpdateProfileResponse.
208
+ * Use `create(UpdateProfileResponseSchema)` to create a new message.
209
+ */
210
+ export const UpdateProfileResponseSchema = /*@__PURE__*/
211
+ messageDesc(file_novatrail_api_v1_account, 26);
212
+
213
+ /**
214
+ * Describes the message novatrail.api.v1.SetVoicingRequest.
215
+ * Use `create(SetVoicingRequestSchema)` to create a new message.
216
+ */
217
+ export const SetVoicingRequestSchema = /*@__PURE__*/
218
+ messageDesc(file_novatrail_api_v1_account, 27);
219
+
220
+ /**
221
+ * Describes the message novatrail.api.v1.SetVoicingResponse.
222
+ * Use `create(SetVoicingResponseSchema)` to create a new message.
223
+ */
224
+ export const SetVoicingResponseSchema = /*@__PURE__*/
225
+ messageDesc(file_novatrail_api_v1_account, 28);
226
+
227
+ /**
228
+ * Describes the message novatrail.api.v1.DeleteProfileRequest.
229
+ * Use `create(DeleteProfileRequestSchema)` to create a new message.
230
+ */
231
+ export const DeleteProfileRequestSchema = /*@__PURE__*/
232
+ messageDesc(file_novatrail_api_v1_account, 29);
233
+
234
+ /**
235
+ * Describes the message novatrail.api.v1.DeleteProfileResponse.
236
+ * Use `create(DeleteProfileResponseSchema)` to create a new message.
237
+ */
238
+ export const DeleteProfileResponseSchema = /*@__PURE__*/
239
+ messageDesc(file_novatrail_api_v1_account, 30);
240
+
241
+ /**
242
+ * Describes the message novatrail.api.v1.DeleteAccountRequest.
243
+ * Use `create(DeleteAccountRequestSchema)` to create a new message.
244
+ */
245
+ export const DeleteAccountRequestSchema = /*@__PURE__*/
246
+ messageDesc(file_novatrail_api_v1_account, 31);
247
+
248
+ /**
249
+ * Describes the message novatrail.api.v1.DeleteAccountResponse.
250
+ * Use `create(DeleteAccountResponseSchema)` to create a new message.
251
+ */
252
+ export const DeleteAccountResponseSchema = /*@__PURE__*/
253
+ messageDesc(file_novatrail_api_v1_account, 32);
254
+
255
+ /**
256
+ * Describes the message novatrail.api.v1.ExportProfileRequest.
257
+ * Use `create(ExportProfileRequestSchema)` to create a new message.
258
+ */
259
+ export const ExportProfileRequestSchema = /*@__PURE__*/
260
+ messageDesc(file_novatrail_api_v1_account, 33);
261
+
262
+ /**
263
+ * Describes the message novatrail.api.v1.ExportProfileResponse.
264
+ * Use `create(ExportProfileResponseSchema)` to create a new message.
265
+ */
266
+ export const ExportProfileResponseSchema = /*@__PURE__*/
267
+ messageDesc(file_novatrail_api_v1_account, 34);
268
+
269
+ /**
270
+ * Describes the message novatrail.api.v1.ExportAccountRequest.
271
+ * Use `create(ExportAccountRequestSchema)` to create a new message.
272
+ */
273
+ export const ExportAccountRequestSchema = /*@__PURE__*/
274
+ messageDesc(file_novatrail_api_v1_account, 35);
275
+
276
+ /**
277
+ * Describes the message novatrail.api.v1.ExportAccountResponse.
278
+ * Use `create(ExportAccountResponseSchema)` to create a new message.
279
+ */
280
+ export const ExportAccountResponseSchema = /*@__PURE__*/
281
+ messageDesc(file_novatrail_api_v1_account, 36);
282
+
283
+ /**
284
+ * Describes the message novatrail.api.v1.CheckOwnKeyRequest.
285
+ * Use `create(CheckOwnKeyRequestSchema)` to create a new message.
286
+ */
287
+ export const CheckOwnKeyRequestSchema = /*@__PURE__*/
288
+ messageDesc(file_novatrail_api_v1_account, 37);
289
+
290
+ /**
291
+ * Describes the message novatrail.api.v1.CheckOwnKeyResponse.
292
+ * Use `create(CheckOwnKeyResponseSchema)` to create a new message.
293
+ */
294
+ export const CheckOwnKeyResponseSchema = /*@__PURE__*/
295
+ messageDesc(file_novatrail_api_v1_account, 38);
296
+
297
+ /**
298
+ * Describes the message novatrail.api.v1.ListOwnKeyProvidersRequest.
299
+ * Use `create(ListOwnKeyProvidersRequestSchema)` to create a new message.
300
+ */
301
+ export const ListOwnKeyProvidersRequestSchema = /*@__PURE__*/
302
+ messageDesc(file_novatrail_api_v1_account, 39);
303
+
304
+ /**
305
+ * Describes the message novatrail.api.v1.ListOwnKeyProvidersResponse.
306
+ * Use `create(ListOwnKeyProvidersResponseSchema)` to create a new message.
307
+ */
308
+ export const ListOwnKeyProvidersResponseSchema = /*@__PURE__*/
309
+ messageDesc(file_novatrail_api_v1_account, 40);
310
+
311
+ /**
312
+ * Describes the message novatrail.api.v1.OwnKeyProvider.
313
+ * Use `create(OwnKeyProviderSchema)` to create a new message.
314
+ */
315
+ export const OwnKeyProviderSchema = /*@__PURE__*/
316
+ messageDesc(file_novatrail_api_v1_account, 41);
317
+
318
+ /**
319
+ * Describes the enum novatrail.api.v1.VoicingSpeed.
320
+ */
321
+ export const VoicingSpeedSchema = /*@__PURE__*/
322
+ enumDesc(file_novatrail_api_v1_account, 0);
323
+
324
+ /**
325
+ * The speed of the voicing. A speed its build does not know `app` reads as normal.
326
+ *
327
+ * @generated from enum novatrail.api.v1.VoicingSpeed
328
+ */
329
+ export const VoicingSpeed = /*@__PURE__*/
330
+ tsEnum(VoicingSpeedSchema);
331
+
332
+ /**
333
+ * Describes the enum novatrail.api.v1.Mode.
334
+ */
335
+ export const ModeSchema = /*@__PURE__*/
336
+ enumDesc(file_novatrail_api_v1_account, 1);
337
+
338
+ /**
339
+ * A mode of the screen of a task (concepts 10). A mode its build does not know `app` reads as "by
340
+ * steps".
341
+ *
342
+ * @generated from enum novatrail.api.v1.Mode
343
+ */
344
+ export const Mode = /*@__PURE__*/
345
+ tsEnum(ModeSchema);
346
+
347
+ /**
348
+ * Describes the enum novatrail.api.v1.ConsentState.
349
+ */
350
+ export const ConsentStateSchema = /*@__PURE__*/
351
+ enumDesc(file_novatrail_api_v1_account, 2);
352
+
353
+ /**
354
+ * Where a consent for a child stands. A state its build does not know `app` reads as waiting.
355
+ *
356
+ * @generated from enum novatrail.api.v1.ConsentState
357
+ */
358
+ export const ConsentState = /*@__PURE__*/
359
+ tsEnum(ConsentStateSchema);
360
+
361
+ /**
362
+ * Describes the enum novatrail.api.v1.OwnKeyCheck.
363
+ */
364
+ export const OwnKeyCheckSchema = /*@__PURE__*/
365
+ enumDesc(file_novatrail_api_v1_account, 3);
366
+
367
+ /**
368
+ * What the check of an own key gave (R84). A value its build does not know `app` words as a check
369
+ * that did not go through.
370
+ *
371
+ * @generated from enum novatrail.api.v1.OwnKeyCheck
372
+ */
373
+ export const OwnKeyCheck = /*@__PURE__*/
374
+ tsEnum(OwnKeyCheckSchema);
375
+
376
+ /**
377
+ * The requests on the account and its profiles, from the section for adults and from a learner's
378
+ * session. Every method carries the ID token of the sign-in service in the header `Authorization`,
379
+ * as `Bearer <token>`, and every one may get the refusals of every request with a token:
380
+ * `unauthenticated` with no `Refusal`, when the token has expired, is revoked or its user is
381
+ * disabled; `CAUSE_ACCOUNT_GONE`; `CAUSE_NO_ACCESS`, but for `CreateAccount`; and `unavailable`
382
+ * with no `Refusal`, when the token could not be checked. A method on a profile names the right it
383
+ * needs, `can_manage` or `can_learn`; a method on the account itself needs the account of the token
384
+ * alone: it is an action of an adult, and the PIN in front of it is a barrier of the interface
385
+ * (R04 api). A request without the right it needs
386
+ * gets the code `permission_denied` with no `Refusal`, and a request whose form the contract
387
+ * refuses the code `invalid_argument` with no `Refusal`. `app` reads the cause of a refusal before
388
+ * it refreshes any token:
389
+ * - `unauthenticated` with no `Refusal`: it refreshes the token and repeats the request, and opens
390
+ * the sign-in window only if the refresh failed. Signing in again is signing in as the same
391
+ * user, without signing out: signing out erases everything of the account on the device;
392
+ * - `CAUSE_FRESH_SIGN_IN_NEEDED`: it signs in again by the window, on a press, and repeats the
393
+ * action. Whether a sign-in is fresh it reads by the `authTime` of a token it has just
394
+ * refreshed, against that token's `issuedAtTime`, not against the clock of the device; on
395
+ * `auth/user-mismatch` it asks `GetAccount`;
396
+ * - `CAUSE_ACCOUNT_GONE`: it erases everything of the account and signs out, without refreshing
397
+ * the token;
398
+ * - `CAUSE_NO_ACCESS` while the registry of the device holds an account: another account has
399
+ * signed in, and `app` erases what is left of the one before it opens anything;
400
+ * - `unavailable`: it repeats the request after a growing pause, for a short while.
401
+ *
402
+ * @generated from service novatrail.api.v1.AccountService
403
+ */
404
+ export const AccountService = /*@__PURE__*/
405
+ serviceDesc(file_novatrail_api_v1_account, 0);
406
+
@@ -9,7 +9,7 @@
9
9
 
10
10
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
11
11
  import type { Message } from "@bufbuild/protobuf";
12
- import type { CloseReason, Outcome } from "./cause_pb.js";
12
+ import type { CloseReason, EngineChoice, Outcome } from "./cause_pb.js";
13
13
  import type { AnswerSlotPlace, CropBox } from "../../observation/v1/observation_pb.js";
14
14
 
15
15
  /**
@@ -117,6 +117,13 @@ export declare type SubmitWorkResponse = Message<"novatrail.api.v1.SubmitWorkRes
117
117
  * @generated from field: novatrail.api.v1.SolvedTask solved = 4;
118
118
  */
119
119
  solved?: SolvedTask | undefined;
120
+
121
+ /**
122
+ * What comes next, beside `solved`.
123
+ *
124
+ * @generated from field: novatrail.api.v1.Next next = 5;
125
+ */
126
+ next?: Next | undefined;
120
127
  };
121
128
 
122
129
  /**
@@ -288,6 +295,13 @@ export declare type DoneResponse = Message<"novatrail.api.v1.DoneResponse"> & {
288
295
  * @generated from field: novatrail.api.v1.SolvedTask solved = 1;
289
296
  */
290
297
  solved?: SolvedTask | undefined;
298
+
299
+ /**
300
+ * What comes next.
301
+ *
302
+ * @generated from field: novatrail.api.v1.Next next = 2;
303
+ */
304
+ next?: Next | undefined;
291
305
  };
292
306
 
293
307
  /**
@@ -808,6 +822,13 @@ export declare type ShowSolutionResponse = Message<"novatrail.api.v1.ShowSolutio
808
822
  * @generated from field: novatrail.api.v1.SolvedTask solved = 1;
809
823
  */
810
824
  solved?: SolvedTask | undefined;
825
+
826
+ /**
827
+ * What comes next.
828
+ *
829
+ * @generated from field: novatrail.api.v1.Next next = 2;
830
+ */
831
+ next?: Next | undefined;
811
832
  };
812
833
 
813
834
  /**
@@ -1093,6 +1114,53 @@ export declare type SolvedTask = Message<"novatrail.api.v1.SolvedTask"> & {
1093
1114
  */
1094
1115
  export declare const SolvedTaskSchema: GenMessage<SolvedTask>;
1095
1116
 
1117
+ /**
1118
+ * What comes next once an attempt is closed by a correct answer, by the solution shown or by "Done".
1119
+ * A repeat gets the same: of `SubmitWork` and `ShowSolution` with the same idempotency key, and of
1120
+ * `Done` by the state of the attempt.
1121
+ *
1122
+ * @generated from message novatrail.api.v1.Next
1123
+ */
1124
+ export declare type Next = Message<"novatrail.api.v1.Next"> & {
1125
+ /**
1126
+ * In a lesson, the segment that comes next; outside a lesson, the engine's choice.
1127
+ *
1128
+ * @generated from oneof novatrail.api.v1.Next.next
1129
+ */
1130
+ next: {
1131
+ /**
1132
+ * In a lesson: the place of the next segment, from 1.
1133
+ *
1134
+ * @generated from field: int32 segment = 1;
1135
+ */
1136
+ value: number;
1137
+ case: "segment";
1138
+ } | {
1139
+ /**
1140
+ * In a lesson: no segment is left after the one that ended. The lesson run stays open until
1141
+ * "lesson done", `CompleteLesson`, which `app` sends when the learner presses "Continue".
1142
+ *
1143
+ * @generated from field: bool segments_ended = 2;
1144
+ */
1145
+ value: boolean;
1146
+ case: "segmentsEnded";
1147
+ } | {
1148
+ /**
1149
+ * Outside a lesson: the engine's choice.
1150
+ *
1151
+ * @generated from field: novatrail.api.v1.EngineChoice choice = 3;
1152
+ */
1153
+ value: EngineChoice;
1154
+ case: "choice";
1155
+ } | { case: undefined; value?: undefined };
1156
+ };
1157
+
1158
+ /**
1159
+ * Describes the message novatrail.api.v1.Next.
1160
+ * Use `create(NextSchema)` to create a new message.
1161
+ */
1162
+ export declare const NextSchema: GenMessage<Next>;
1163
+
1096
1164
  /**
1097
1165
  * The key of an answer slot.
1098
1166
  *
@@ -1269,7 +1337,12 @@ export declare const MarkKindSchema: GenEnum<MarkKind>;
1269
1337
  * the profile and the attempt; one of another profile, or none, gets `CAUSE_NOT_FOUND`, and a
1270
1338
  * profile that is not the account's `CAUSE_NO_PROFILE`. A request whose form the contract refuses
1271
1339
  * — a field it needs left out, a place the task does not have, a method the task's kind does not
1272
- * take — gets the code `invalid_argument` with no `Refusal`.
1340
+ * take — gets the code `invalid_argument` with no `Refusal`. Every method carries the token of the
1341
+ * sign-in service and may get the refusals of every request with a token, which the comment of
1342
+ * `AccountService` names with what `app` does on each; a request of a profile whose consent is not
1343
+ * confirmed gets `CAUSE_NO_CONSENT`. An answer that closes the attempt by a correct answer, by the
1344
+ * solution shown or by "Done" says what comes next, `next`: an attempt begins by
1345
+ * `LearningService`.
1273
1346
  *
1274
1347
  * @generated from service novatrail.api.v1.AttemptService
1275
1348
  */
@@ -15,7 +15,7 @@ import { file_novatrail_observation_v1_observation } from "../../observation/v1/
15
15
  * Describes the file novatrail/api/v1/attempt.proto.
16
16
  */
17
17
  export const file_novatrail_api_v1_attempt = /*@__PURE__*/
18
- fileDesc("Ch5ub3ZhdHJhaWwvYXBpL3YxL2F0dGVtcHQucHJvdG8SEG5vdmF0cmFpbC5hcGkudjEimQIKEVN1Ym1pdFdvcmtSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSJAoEd29yaxgEIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuV29yaxI2Cg50YXBwZWRfY2hvaWNlcxgFIAMoCzIeLm5vdmF0cmFpbC5hcGkudjEuVGFwcGVkQ2hvaWNlEikKB293bl9rZXkYBiABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgHIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyKzAQoSU3VibWl0V29ya1Jlc3BvbnNlEiwKBWl0ZW1zGAEgAygLMh0ubm92YXRyYWlsLmFwaS52MS5JdGVtVmVyZGljdBIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lEhUKDXdyb25nX2Fuc3dlcnMYAyABKAUSLAoGc29sdmVkGAQgASgLMhwubm92YXRyYWlsLmFwaS52MS5Tb2x2ZWRUYXNrIsoBChJTdWJtaXRFc3NheVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIMCgRjcm9wGAQgASgMEikKB293bl9rZXkYBSABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgGIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyKAAgoTU3VibWl0RXNzYXlSZXNwb25zZRIsCgNlbmQYASABKA4yHy5ub3ZhdHJhaWwuYXBpLnYxLlN1Ym1pc3Npb25FbmQSEQoEdGV4dBgCIAEoCUgAiAEBEg4KBnJlYXNvbhgDIAEoCRIVCghmZWVkYmFjaxgEIAEoCUgBiAEBEioKB291dGNvbWUYBSABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUSLQoGY2xvc2VkGAYgASgOMh0ubm92YXRyYWlsLmFwaS52MS5DbG9zZVJlYXNvbhIQCghyZXBlYXRlZBgHIAEoCEIHCgVfdGV4dEILCglfZmVlZGJhY2siNQoLRG9uZVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJIjwKDERvbmVSZXNwb25zZRIsCgZzb2x2ZWQYASABKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlNvbHZlZFRhc2sikQIKE0dldFJ1bmdXb3Jkc1JlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIaCg13cm9uZ19hbnN3ZXJzGAQgASgFSACIAQESJAoEd29yaxgFIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuV29yaxIpCgdvd25fa2V5GAYgASgLMhgubm92YXRyYWlsLmFwaS52MS5Pd25LZXkSIQoUY2xvY2tfb2Zmc2V0X21pbnV0ZXMYByABKAVIAYgBAUIQCg5fd3JvbmdfYW5zd2Vyc0IXChVfY2xvY2tfb2Zmc2V0X21pbnV0ZXMimAEKFEdldFJ1bmdXb3Jkc1Jlc3BvbnNlEgwKBHJ1bmcYASABKAUSDQoFd29yZHMYAiABKAkSJQoFbWFya3MYAyADKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLk1hcmsSKgoHb3V0Y29tZRgEIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuT3V0Y29tZRIQCghyZXBlYXRlZBgFIAEoCCLsAQocR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAMgASgJEiQKBHdvcmsYBCABKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLldvcmsSKQoHb3duX2tleRgFIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAYgASgFSACIAQFCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzInsKHUdldENvcnJlY3RBbnN3ZXJXb3Jkc1Jlc3BvbnNlEhIKBXdvcmRzGAEgASgJSACIAQESKgoHb3V0Y29tZRgCIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuT3V0Y29tZRIQCghyZXBlYXRlZBgDIAEoCEIICgZfd29yZHMi8QEKGUV4cGxhaW5EaWZmZXJlbnRseVJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIpCgdvd25fa2V5GAQgASgLMhgubm92YXRyYWlsLmFwaS52MS5Pd25LZXkSIQoUY2xvY2tfb2Zmc2V0X21pbnV0ZXMYBSABKAVIAIgBARIaCg13cm9uZ19hbnN3ZXJzGAYgASgFSAGIAQFCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzQhAKDl93cm9uZ19hbnN3ZXJzIlcKGkV4cGxhaW5EaWZmZXJlbnRseVJlc3BvbnNlEg0KBXdvcmRzGAEgASgJEioKB291dGNvbWUYAiABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUiOAoOR2V0SGludFJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJInkKD0dldEhpbnRSZXNwb25zZRIyCgp0ZWNobmlxdWVzGAEgASgLMhwubm92YXRyYWlsLmFwaS52MS5UZWNobmlxdWVzSAASKgoEcnVuZxgCIAEoCzIaLm5vdmF0cmFpbC5hcGkudjEuUnVuZ0hpbnRIAEIGCgRoaW50IiMKClRlY2huaXF1ZXMSFQoNdGVjaG5pcXVlX2lkcxgBIAMoCSInCghSdW5nSGludBIMCgRydW5nGAEgASgFEg0KBXdvcmRzGAIgASgJIkgKEEJlZ2luU3RlcFJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEgwKBHN0ZXAYAyABKAUiRQoRQmVnaW5TdGVwUmVzcG9uc2USMAoKdGVjaG5pcXVlcxgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuVGVjaG5pcXVlcyKAAQoTU2hvd1NvbHV0aW9uUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAMgASgJEigKBmFjdGlvbhgEIAEoDjIYLm5vdmF0cmFpbC5hcGkudjEuQWN0aW9uIkQKFFNob3dTb2x1dGlvblJlc3BvbnNlEiwKBnNvbHZlZBgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuU29sdmVkVGFzayJzCgRXb3JrEiwKBXNoZWV0GAEgASgLMhsubm92YXRyYWlsLmFwaS52MS5TaGVldFdvcmtIABIyCgh3b3JrYm9vaxgCIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuV29ya2Jvb2tXb3JrSABCCQoHc3VyZmFjZSIZCglTaGVldFdvcmsSDAoEY3JvcBgBIAEoDCI4CgxXb3JrYm9va1dvcmsSKAoFYm94ZXMYASADKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLkJveENyb3AiVwoHQm94Q3JvcBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDAoEY3JvcBgCIAEoDCJdCgxUYXBwZWRDaG9pY2USPgoLYW5zd2VyX3Nsb3QYASABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlEg0KBXZhbHVlGAIgASgJIicKBk93bktleRIQCghwcm92aWRlchgBIAEoCRILCgNrZXkYAiABKAkiWQoLSXRlbVZlcmRpY3QSDwoHdmVyZGljdBgBIAEoCRI5CgxhbnN3ZXJfc2xvdHMYAiADKAsyIy5ub3ZhdHJhaWwuYXBpLnYxLkFuc3dlclNsb3RWZXJkaWN0IpIBChFBbnN3ZXJTbG90VmVyZGljdBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDwoHdmVyZGljdBgCIAEoCRIOCgZyZWFzb24YAyABKAkSEgoFdmFsdWUYBCABKAlIAIgBAUIICgZfdmFsdWUifgoKU29sdmVkVGFzaxItCgRrZXlzGAEgAygLMh8ubm92YXRyYWlsLmFwaS52MS5BbnN3ZXJTbG90S2V5EhAKCHNvbHV0aW9uGAIgASgMEh0KFW1vZHVsZV9mb3JtYXRfdmVyc2lvbhgDIAEoCRIQCghjcml0ZXJpYRgEIAMoCSJcCg1BbnN3ZXJTbG90S2V5Ej4KC2Fuc3dlcl9zbG90GAEgASgLMikubm92YXRyYWlsLm9ic2VydmF0aW9uLnYxLkFuc3dlclNsb3RQbGFjZRILCgNrZXkYAiABKAkisgEKBE1hcmsSKAoEa2luZBgBIAEoDjIaLm5vdmF0cmFpbC5hcGkudjEuTWFya0tpbmQSQAoLYW5zd2VyX3Nsb3QYAiABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlSAASNQoIY3JvcF9ib3gYAyABKAsyIS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQ3JvcEJveEgAQgcKBXBsYWNlKokBCg1TdWJtaXNzaW9uRW5kEh4KGlNVQk1JU1NJT05fRU5EX1VOU1BFQ0lGSUVEEAASGwoXU1VCTUlTU0lPTl9FTkRfRkVFREJBQ0sQARIdChlTVUJNSVNTSU9OX0VORF9VTlJFQURBQkxFEAISHAoYU1VCTUlTU0lPTl9FTkRfVU5DSEVDS0VEEAMqRwoGQWN0aW9uEhYKEkFDVElPTl9VTlNQRUNJRklFRBAAEhMKD0FDVElPTl9MRUFSTklORxABEhAKDEFDVElPTl9BRFVMVBACKjoKCE1hcmtLaW5kEhkKFU1BUktfS0lORF9VTlNQRUNJRklFRBAAEhMKD01BUktfS0lORF9GUkFNRRABMtsGCg5BdHRlbXB0U2VydmljZRJXCgpTdWJtaXRXb3JrEiMubm92YXRyYWlsLmFwaS52MS5TdWJtaXRXb3JrUmVxdWVzdBokLm5vdmF0cmFpbC5hcGkudjEuU3VibWl0V29ya1Jlc3BvbnNlEloKC1N1Ym1pdEVzc2F5EiQubm92YXRyYWlsLmFwaS52MS5TdWJtaXRFc3NheVJlcXVlc3QaJS5ub3ZhdHJhaWwuYXBpLnYxLlN1Ym1pdEVzc2F5UmVzcG9uc2USRQoERG9uZRIdLm5vdmF0cmFpbC5hcGkudjEuRG9uZVJlcXVlc3QaHi5ub3ZhdHJhaWwuYXBpLnYxLkRvbmVSZXNwb25zZRJdCgxHZXRSdW5nV29yZHMSJS5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1JlcXVlc3QaJi5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1Jlc3BvbnNlEngKFUdldENvcnJlY3RBbnN3ZXJXb3JkcxIuLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVxdWVzdBovLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVzcG9uc2USbwoSRXhwbGFpbkRpZmZlcmVudGx5Eisubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXF1ZXN0Giwubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXNwb25zZRJOCgdHZXRIaW50EiAubm92YXRyYWlsLmFwaS52MS5HZXRIaW50UmVxdWVzdBohLm5vdmF0cmFpbC5hcGkudjEuR2V0SGludFJlc3BvbnNlElQKCUJlZ2luU3RlcBIiLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVxdWVzdBojLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVzcG9uc2USXQoMU2hvd1NvbHV0aW9uEiUubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXF1ZXN0GiYubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXNwb25zZULFAQoUY29tLm5vdmF0cmFpbC5hcGkudjFCDEF0dGVtcHRQcm90b1ABWj1naXRodWIuY29tL2FsdG5vdmF0cmFpbC9zcGVjL2NvbnRyYWN0cy9ub3ZhdHJhaWwvYXBpL3YxO2FwaXYxogIDTkFYqgIQTm92YXRyYWlsLkFwaS5WMcoCEE5vdmF0cmFpbFxBcGlcVjHiAhxOb3ZhdHJhaWxcQXBpXFYxXEdQQk1ldGFkYXRh6gISTm92YXRyYWlsOjpBcGk6OlYxYgZwcm90bzM", [file_novatrail_api_v1_cause, file_novatrail_observation_v1_observation]);
18
+ fileDesc("Ch5ub3ZhdHJhaWwvYXBpL3YxL2F0dGVtcHQucHJvdG8SEG5vdmF0cmFpbC5hcGkudjEimQIKEVN1Ym1pdFdvcmtSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSJAoEd29yaxgEIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuV29yaxI2Cg50YXBwZWRfY2hvaWNlcxgFIAMoCzIeLm5vdmF0cmFpbC5hcGkudjEuVGFwcGVkQ2hvaWNlEikKB293bl9rZXkYBiABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgHIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyLZAQoSU3VibWl0V29ya1Jlc3BvbnNlEiwKBWl0ZW1zGAEgAygLMh0ubm92YXRyYWlsLmFwaS52MS5JdGVtVmVyZGljdBIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lEhUKDXdyb25nX2Fuc3dlcnMYAyABKAUSLAoGc29sdmVkGAQgASgLMhwubm92YXRyYWlsLmFwaS52MS5Tb2x2ZWRUYXNrEiQKBG5leHQYBSABKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLk5leHQiygEKElN1Ym1pdEVzc2F5UmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAMgASgJEgwKBGNyb3AYBCABKAwSKQoHb3duX2tleRgFIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAYgASgFSACIAQFCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzIoACChNTdWJtaXRFc3NheVJlc3BvbnNlEiwKA2VuZBgBIAEoDjIfLm5vdmF0cmFpbC5hcGkudjEuU3VibWlzc2lvbkVuZBIRCgR0ZXh0GAIgASgJSACIAQESDgoGcmVhc29uGAMgASgJEhUKCGZlZWRiYWNrGAQgASgJSAGIAQESKgoHb3V0Y29tZRgFIAEoCzIZLm5vdmF0cmFpbC5hcGkudjEuT3V0Y29tZRItCgZjbG9zZWQYBiABKA4yHS5ub3ZhdHJhaWwuYXBpLnYxLkNsb3NlUmVhc29uEhAKCHJlcGVhdGVkGAcgASgIQgcKBV90ZXh0QgsKCV9mZWVkYmFjayI1CgtEb25lUmVxdWVzdBISCgpwcm9maWxlX2lkGAEgASgJEhIKCmF0dGVtcHRfaWQYAiABKAkiYgoMRG9uZVJlc3BvbnNlEiwKBnNvbHZlZBgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuU29sdmVkVGFzaxIkCgRuZXh0GAIgASgLMhYubm92YXRyYWlsLmFwaS52MS5OZXh0IpECChNHZXRSdW5nV29yZHNSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSGgoNd3JvbmdfYW5zd2VycxgEIAEoBUgAiAEBEiQKBHdvcmsYBSABKAsyFi5ub3ZhdHJhaWwuYXBpLnYxLldvcmsSKQoHb3duX2tleRgGIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAcgASgFSAGIAQFCEAoOX3dyb25nX2Fuc3dlcnNCFwoVX2Nsb2NrX29mZnNldF9taW51dGVzIpgBChRHZXRSdW5nV29yZHNSZXNwb25zZRIMCgRydW5nGAEgASgFEg0KBXdvcmRzGAIgASgJEiUKBW1hcmtzGAMgAygLMhYubm92YXRyYWlsLmFwaS52MS5NYXJrEioKB291dGNvbWUYBCABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUSEAoIcmVwZWF0ZWQYBSABKAgi7AEKHEdldENvcnJlY3RBbnN3ZXJXb3Jkc1JlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIkCgR3b3JrGAQgASgLMhYubm92YXRyYWlsLmFwaS52MS5Xb3JrEikKB293bl9rZXkYBSABKAsyGC5ub3ZhdHJhaWwuYXBpLnYxLk93bktleRIhChRjbG9ja19vZmZzZXRfbWludXRlcxgGIAEoBUgAiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlcyJ7Ch1HZXRDb3JyZWN0QW5zd2VyV29yZHNSZXNwb25zZRISCgV3b3JkcxgBIAEoCUgAiAEBEioKB291dGNvbWUYAiABKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLk91dGNvbWUSEAoIcmVwZWF0ZWQYAyABKAhCCAoGX3dvcmRzIvEBChlFeHBsYWluRGlmZmVyZW50bHlSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSKQoHb3duX2tleRgEIAEoCzIYLm5vdmF0cmFpbC5hcGkudjEuT3duS2V5EiEKFGNsb2NrX29mZnNldF9taW51dGVzGAUgASgFSACIAQESGgoNd3JvbmdfYW5zd2VycxgGIAEoBUgBiAEBQhcKFV9jbG9ja19vZmZzZXRfbWludXRlc0IQCg5fd3JvbmdfYW5zd2VycyJXChpFeHBsYWluRGlmZmVyZW50bHlSZXNwb25zZRINCgV3b3JkcxgBIAEoCRIqCgdvdXRjb21lGAIgASgLMhkubm92YXRyYWlsLmFwaS52MS5PdXRjb21lIjgKDkdldEhpbnRSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCSJ5Cg9HZXRIaW50UmVzcG9uc2USMgoKdGVjaG5pcXVlcxgBIAEoCzIcLm5vdmF0cmFpbC5hcGkudjEuVGVjaG5pcXVlc0gAEioKBHJ1bmcYAiABKAsyGi5ub3ZhdHJhaWwuYXBpLnYxLlJ1bmdIaW50SABCBgoEaGludCIjCgpUZWNobmlxdWVzEhUKDXRlY2huaXF1ZV9pZHMYASADKAkiJwoIUnVuZ0hpbnQSDAoEcnVuZxgBIAEoBRINCgV3b3JkcxgCIAEoCSJIChBCZWdpblN0ZXBSZXF1ZXN0EhIKCnByb2ZpbGVfaWQYASABKAkSEgoKYXR0ZW1wdF9pZBgCIAEoCRIMCgRzdGVwGAMgASgFIkUKEUJlZ2luU3RlcFJlc3BvbnNlEjAKCnRlY2huaXF1ZXMYASABKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlRlY2huaXF1ZXMigAEKE1Nob3dTb2x1dGlvblJlcXVlc3QSEgoKcHJvZmlsZV9pZBgBIAEoCRISCgphdHRlbXB0X2lkGAIgASgJEhcKD2lkZW1wb3RlbmN5X2tleRgDIAEoCRIoCgZhY3Rpb24YBCABKA4yGC5ub3ZhdHJhaWwuYXBpLnYxLkFjdGlvbiJqChRTaG93U29sdXRpb25SZXNwb25zZRIsCgZzb2x2ZWQYASABKAsyHC5ub3ZhdHJhaWwuYXBpLnYxLlNvbHZlZFRhc2sSJAoEbmV4dBgCIAEoCzIWLm5vdmF0cmFpbC5hcGkudjEuTmV4dCJzCgRXb3JrEiwKBXNoZWV0GAEgASgLMhsubm92YXRyYWlsLmFwaS52MS5TaGVldFdvcmtIABIyCgh3b3JrYm9vaxgCIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuV29ya2Jvb2tXb3JrSABCCQoHc3VyZmFjZSIZCglTaGVldFdvcmsSDAoEY3JvcBgBIAEoDCI4CgxXb3JrYm9va1dvcmsSKAoFYm94ZXMYASADKAsyGS5ub3ZhdHJhaWwuYXBpLnYxLkJveENyb3AiVwoHQm94Q3JvcBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDAoEY3JvcBgCIAEoDCJdCgxUYXBwZWRDaG9pY2USPgoLYW5zd2VyX3Nsb3QYASABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlEg0KBXZhbHVlGAIgASgJIicKBk93bktleRIQCghwcm92aWRlchgBIAEoCRILCgNrZXkYAiABKAkiWQoLSXRlbVZlcmRpY3QSDwoHdmVyZGljdBgBIAEoCRI5CgxhbnN3ZXJfc2xvdHMYAiADKAsyIy5ub3ZhdHJhaWwuYXBpLnYxLkFuc3dlclNsb3RWZXJkaWN0IpIBChFBbnN3ZXJTbG90VmVyZGljdBI+CgthbnN3ZXJfc2xvdBgBIAEoCzIpLm5vdmF0cmFpbC5vYnNlcnZhdGlvbi52MS5BbnN3ZXJTbG90UGxhY2USDwoHdmVyZGljdBgCIAEoCRIOCgZyZWFzb24YAyABKAkSEgoFdmFsdWUYBCABKAlIAIgBAUIICgZfdmFsdWUifgoKU29sdmVkVGFzaxItCgRrZXlzGAEgAygLMh8ubm92YXRyYWlsLmFwaS52MS5BbnN3ZXJTbG90S2V5EhAKCHNvbHV0aW9uGAIgASgMEh0KFW1vZHVsZV9mb3JtYXRfdmVyc2lvbhgDIAEoCRIQCghjcml0ZXJpYRgEIAMoCSJtCgROZXh0EhEKB3NlZ21lbnQYASABKAVIABIYCg5zZWdtZW50c19lbmRlZBgCIAEoCEgAEjAKBmNob2ljZRgDIAEoCzIeLm5vdmF0cmFpbC5hcGkudjEuRW5naW5lQ2hvaWNlSABCBgoEbmV4dCJcCg1BbnN3ZXJTbG90S2V5Ej4KC2Fuc3dlcl9zbG90GAEgASgLMikubm92YXRyYWlsLm9ic2VydmF0aW9uLnYxLkFuc3dlclNsb3RQbGFjZRILCgNrZXkYAiABKAkisgEKBE1hcmsSKAoEa2luZBgBIAEoDjIaLm5vdmF0cmFpbC5hcGkudjEuTWFya0tpbmQSQAoLYW5zd2VyX3Nsb3QYAiABKAsyKS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQW5zd2VyU2xvdFBsYWNlSAASNQoIY3JvcF9ib3gYAyABKAsyIS5ub3ZhdHJhaWwub2JzZXJ2YXRpb24udjEuQ3JvcEJveEgAQgcKBXBsYWNlKokBCg1TdWJtaXNzaW9uRW5kEh4KGlNVQk1JU1NJT05fRU5EX1VOU1BFQ0lGSUVEEAASGwoXU1VCTUlTU0lPTl9FTkRfRkVFREJBQ0sQARIdChlTVUJNSVNTSU9OX0VORF9VTlJFQURBQkxFEAISHAoYU1VCTUlTU0lPTl9FTkRfVU5DSEVDS0VEEAMqRwoGQWN0aW9uEhYKEkFDVElPTl9VTlNQRUNJRklFRBAAEhMKD0FDVElPTl9MRUFSTklORxABEhAKDEFDVElPTl9BRFVMVBACKjoKCE1hcmtLaW5kEhkKFU1BUktfS0lORF9VTlNQRUNJRklFRBAAEhMKD01BUktfS0lORF9GUkFNRRABMtsGCg5BdHRlbXB0U2VydmljZRJXCgpTdWJtaXRXb3JrEiMubm92YXRyYWlsLmFwaS52MS5TdWJtaXRXb3JrUmVxdWVzdBokLm5vdmF0cmFpbC5hcGkudjEuU3VibWl0V29ya1Jlc3BvbnNlEloKC1N1Ym1pdEVzc2F5EiQubm92YXRyYWlsLmFwaS52MS5TdWJtaXRFc3NheVJlcXVlc3QaJS5ub3ZhdHJhaWwuYXBpLnYxLlN1Ym1pdEVzc2F5UmVzcG9uc2USRQoERG9uZRIdLm5vdmF0cmFpbC5hcGkudjEuRG9uZVJlcXVlc3QaHi5ub3ZhdHJhaWwuYXBpLnYxLkRvbmVSZXNwb25zZRJdCgxHZXRSdW5nV29yZHMSJS5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1JlcXVlc3QaJi5ub3ZhdHJhaWwuYXBpLnYxLkdldFJ1bmdXb3Jkc1Jlc3BvbnNlEngKFUdldENvcnJlY3RBbnN3ZXJXb3JkcxIuLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVxdWVzdBovLm5vdmF0cmFpbC5hcGkudjEuR2V0Q29ycmVjdEFuc3dlcldvcmRzUmVzcG9uc2USbwoSRXhwbGFpbkRpZmZlcmVudGx5Eisubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXF1ZXN0Giwubm92YXRyYWlsLmFwaS52MS5FeHBsYWluRGlmZmVyZW50bHlSZXNwb25zZRJOCgdHZXRIaW50EiAubm92YXRyYWlsLmFwaS52MS5HZXRIaW50UmVxdWVzdBohLm5vdmF0cmFpbC5hcGkudjEuR2V0SGludFJlc3BvbnNlElQKCUJlZ2luU3RlcBIiLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVxdWVzdBojLm5vdmF0cmFpbC5hcGkudjEuQmVnaW5TdGVwUmVzcG9uc2USXQoMU2hvd1NvbHV0aW9uEiUubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXF1ZXN0GiYubm92YXRyYWlsLmFwaS52MS5TaG93U29sdXRpb25SZXNwb25zZULFAQoUY29tLm5vdmF0cmFpbC5hcGkudjFCDEF0dGVtcHRQcm90b1ABWj1naXRodWIuY29tL2FsdG5vdmF0cmFpbC9zcGVjL2NvbnRyYWN0cy9ub3ZhdHJhaWwvYXBpL3YxO2FwaXYxogIDTkFYqgIQTm92YXRyYWlsLkFwaS5WMcoCEE5vdmF0cmFpbFxBcGlcVjHiAhxOb3ZhdHJhaWxcQXBpXFYxXEdQQk1ldGFkYXRh6gISTm92YXRyYWlsOjpBcGk6OlYxYgZwcm90bzM", [file_novatrail_api_v1_cause, file_novatrail_observation_v1_observation]);
19
19
 
20
20
  /**
21
21
  * Describes the message novatrail.api.v1.SubmitWorkRequest.
@@ -220,19 +220,26 @@ export const AnswerSlotVerdictSchema = /*@__PURE__*/
220
220
  export const SolvedTaskSchema = /*@__PURE__*/
221
221
  messageDesc(file_novatrail_api_v1_attempt, 28);
222
222
 
223
+ /**
224
+ * Describes the message novatrail.api.v1.Next.
225
+ * Use `create(NextSchema)` to create a new message.
226
+ */
227
+ export const NextSchema = /*@__PURE__*/
228
+ messageDesc(file_novatrail_api_v1_attempt, 29);
229
+
223
230
  /**
224
231
  * Describes the message novatrail.api.v1.AnswerSlotKey.
225
232
  * Use `create(AnswerSlotKeySchema)` to create a new message.
226
233
  */
227
234
  export const AnswerSlotKeySchema = /*@__PURE__*/
228
- messageDesc(file_novatrail_api_v1_attempt, 29);
235
+ messageDesc(file_novatrail_api_v1_attempt, 30);
229
236
 
230
237
  /**
231
238
  * Describes the message novatrail.api.v1.Mark.
232
239
  * Use `create(MarkSchema)` to create a new message.
233
240
  */
234
241
  export const MarkSchema = /*@__PURE__*/
235
- messageDesc(file_novatrail_api_v1_attempt, 30);
242
+ messageDesc(file_novatrail_api_v1_attempt, 31);
236
243
 
237
244
  /**
238
245
  * Describes the enum novatrail.api.v1.SubmissionEnd.
@@ -281,7 +288,12 @@ export const MarkKind = /*@__PURE__*/
281
288
  * the profile and the attempt; one of another profile, or none, gets `CAUSE_NOT_FOUND`, and a
282
289
  * profile that is not the account's `CAUSE_NO_PROFILE`. A request whose form the contract refuses
283
290
  * — a field it needs left out, a place the task does not have, a method the task's kind does not
284
- * take — gets the code `invalid_argument` with no `Refusal`.
291
+ * take — gets the code `invalid_argument` with no `Refusal`. Every method carries the token of the
292
+ * sign-in service and may get the refusals of every request with a token, which the comment of
293
+ * `AccountService` names with what `app` does on each; a request of a profile whose consent is not
294
+ * confirmed gets `CAUSE_NO_CONSENT`. An answer that closes the attempt by a correct answer, by the
295
+ * solution shown or by "Done" says what comes next, `next`: an attempt begins by
296
+ * `LearningService`.
285
297
  *
286
298
  * @generated from service novatrail.api.v1.AttemptService
287
299
  */