@reallyme/codec 0.2.3 → 0.3.0

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.
@@ -1,16 +1,30 @@
1
- // SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
1
+ // SPDX-FileCopyrightText: 2026 ReallyMe LLC
2
2
  //
3
3
  // SPDX-License-Identifier: MIT OR Apache-2.0
4
- import { fromBinary, toBinary } from "@bufbuild/protobuf";
4
+ import { create, fromBinary, toBinary } from "@bufbuild/protobuf";
5
5
  import { MAX_CODEC_FFI_INPUT_BYTES, MAX_CODEC_PROTO_JSON_BYTES, MAX_CODEC_PROTO_MESSAGE_BYTES, requireBoundaryAggregate, strictUtf8ByteLength, utf8ByteLength, } from "./boundary.js";
6
6
  import { DETERMINISTIC_CBOR_I64_MIN, DETERMINISTIC_CBOR_U64_MAX, MAX_DETERMINISTIC_CBOR_AGGREGATE_BYTE_STRING_BYTES, MAX_DETERMINISTIC_CBOR_AGGREGATE_TEXT_BYTES, MAX_DETERMINISTIC_CBOR_CONTAINER_ENTRIES, MAX_DETERMINISTIC_CBOR_INPUT_LEN, MAX_DETERMINISTIC_CBOR_NESTING_DEPTH, MAX_DETERMINISTIC_CBOR_NODES, MAX_DETERMINISTIC_CBOR_PROTO_RECURSION_DEPTH, } from "./deterministicCborBoundary.js";
7
7
  import { ReallyMeCodecError } from "./errors.js";
8
- import { CodecErrorOrigin, CodecErrorReason, CodecOperationResponseSchema, CodecOperationRequestSchema, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
9
- import { readIndependentBoundedBytesOutput, snapshotBoundedBytesInput, } from "./readOutput.js";
8
+ import { CodecErrorOrigin, CodecErrorReason, CodecErrorSchema, CodecBoundaryErrorSchema, CodecOperationResponseSchema, CodecOperationRequestSchema, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
9
+ import { ensureBytesInput, readIndependentBoundedBytesOutput, snapshotBoundedBytesInput, snapshotProviderBytes, } from "./readOutput.js";
10
10
  import { requireReallyMeCodecWasmProvider } from "./wasmProvider.js";
11
11
  const PROTO_REQUEST_OVERHEAD_BUDGET = 64;
12
12
  const DETERMINISTIC_CBOR_PROTO_NODE_OVERHEAD_BUDGET = 16;
13
13
  const DAG_CBOR_I64_MAX = (1n << 63n) - 1n;
14
+ const resourceLimitOperationResponse = () => toBinary(CodecOperationResponseSchema, create(CodecOperationResponseSchema, {
15
+ outcome: {
16
+ case: "error",
17
+ value: create(CodecErrorSchema, {
18
+ error: {
19
+ case: "boundary",
20
+ value: create(CodecBoundaryErrorSchema, {
21
+ reason: CodecErrorReason.BOUNDARY_RESOURCE_LIMIT_EXCEEDED,
22
+ }),
23
+ },
24
+ origin: CodecErrorOrigin.CALLER,
25
+ }),
26
+ },
27
+ }));
14
28
  const requireNoGeneratedUnknownFields = (message) => {
15
29
  if (message.$unknown !== undefined && message.$unknown.length !== 0) {
16
30
  throw new ReallyMeCodecError("invalid-input");
@@ -441,11 +455,14 @@ const validateGeneratedOperationRequest = (request) => {
441
455
  * Execute one binary generated-protobuf request and return the fully
442
456
  * discriminated binary `CodecOperationResponse`.
443
457
  *
444
- * Oversized requests are rejected before the provider call. Malformed and
445
- * unsupported in-limit requests are represented by the response error oneof
446
- * rather than a boundary-local exception.
458
+ * Oversized and malformed requests are represented by the response error
459
+ * oneof. Caller-owned oversized bytes are not copied into WASM.
447
460
  */
448
461
  export const processOperation = (requestBytes) => {
462
+ ensureBytesInput(requestBytes);
463
+ if (requestBytes.length > MAX_CODEC_PROTO_MESSAGE_BYTES) {
464
+ return resourceLimitOperationResponse();
465
+ }
449
466
  const requestSnapshot = snapshotBoundedBytesInput(requestBytes, MAX_CODEC_PROTO_MESSAGE_BYTES);
450
467
  try {
451
468
  return readIndependentBoundedBytesOutput(requireReallyMeCodecWasmProvider().processOperation(requestSnapshot), requestSnapshot, MAX_CODEC_PROTO_MESSAGE_BYTES);
@@ -459,6 +476,10 @@ export const processOperation = (requestBytes) => {
459
476
  * binary response used by `processOperation`.
460
477
  */
461
478
  export const processOperationJson = (requestJson) => {
479
+ ensureBytesInput(requestJson);
480
+ if (requestJson.length > MAX_CODEC_PROTO_JSON_BYTES) {
481
+ return resourceLimitOperationResponse();
482
+ }
462
483
  const requestSnapshot = snapshotBoundedBytesInput(requestJson, MAX_CODEC_PROTO_JSON_BYTES);
463
484
  try {
464
485
  return readIndependentBoundedBytesOutput(requireReallyMeCodecWasmProvider().processOperationJson(requestSnapshot), requestSnapshot, MAX_CODEC_PROTO_MESSAGE_BYTES);
@@ -551,38 +572,38 @@ export const processGeneratedOperationRequest = (request) => {
551
572
  const detachGeneratedOperationResultBytes = (result) => {
552
573
  switch (result.result.case) {
553
574
  case "multicodecPrefixForName":
554
- result.result.value.prefix = result.result.value.prefix.slice();
575
+ result.result.value.prefix = snapshotProviderBytes(result.result.value.prefix);
555
576
  break;
556
577
  case "multicodecLookupPrefix":
557
578
  if (result.result.value.metadata !== undefined) {
558
579
  result.result.value.metadata.prefix =
559
- result.result.value.metadata.prefix.slice();
580
+ snapshotProviderBytes(result.result.value.metadata.prefix);
560
581
  }
561
582
  break;
562
583
  case "multicodecTable":
563
584
  for (const entry of result.result.value.entries) {
564
- entry.prefix = entry.prefix.slice();
585
+ entry.prefix = snapshotProviderBytes(entry.prefix);
565
586
  }
566
587
  break;
567
588
  case "multikeyParse":
568
- result.result.value.publicKey = result.result.value.publicKey.slice();
589
+ result.result.value.publicKey = snapshotProviderBytes(result.result.value.publicKey);
569
590
  break;
570
591
  case "dagCborVerifyCid":
571
592
  break;
572
593
  case "dagCborEncode":
573
- result.result.value.encoded = result.result.value.encoded.slice();
594
+ result.result.value.encoded = snapshotProviderBytes(result.result.value.encoded);
574
595
  break;
575
596
  case "dagCborDecode":
576
597
  detachGeneratedCborValueBytes(result.result.value.value);
577
598
  break;
578
599
  case "pemDecode":
579
- result.result.value.der = result.result.value.der.slice();
600
+ result.result.value.der = snapshotProviderBytes(result.result.value.der);
580
601
  break;
581
602
  case "pemEncode":
582
- result.result.value.pem = result.result.value.pem.slice();
603
+ result.result.value.pem = snapshotProviderBytes(result.result.value.pem);
583
604
  break;
584
605
  case "deterministicCborEncode":
585
- result.result.value.encoded = result.result.value.encoded.slice();
606
+ result.result.value.encoded = snapshotProviderBytes(result.result.value.encoded);
586
607
  break;
587
608
  case "deterministicCborDecode":
588
609
  detachGeneratedCborValueBytes(result.result.value.value);
@@ -597,7 +618,7 @@ const detachGeneratedCborValueBytes = (value) => {
597
618
  }
598
619
  switch (value.value.case) {
599
620
  case "bytesValue":
600
- value.value.value.value = value.value.value.value.slice();
621
+ value.value.value.value = snapshotProviderBytes(value.value.value.value);
601
622
  break;
602
623
  case "arrayValue":
603
624
  for (const child of value.value.value.values) {
@@ -748,7 +769,24 @@ const errorCodeForCodecErrorMessage = (error) => {
748
769
  if (error.origin !== expectedOrigin) {
749
770
  return "provider-failure";
750
771
  }
751
- return error.origin === CodecErrorOrigin.CALLER
752
- ? "invalid-input"
753
- : "provider-failure";
772
+ if (error.origin !== CodecErrorOrigin.CALLER) {
773
+ return "provider-failure";
774
+ }
775
+ switch (reason) {
776
+ case CodecErrorReason.MULTIFORMAT_UNKNOWN_MULTICODEC:
777
+ case CodecErrorReason.MULTIFORMAT_INVALID_MULTICODEC_PREFIX:
778
+ return "unsupported-codec";
779
+ case CodecErrorReason.CANONICAL_UNSUPPORTED_IPLD_VALUE:
780
+ return "unsupported-ipld-value";
781
+ case CodecErrorReason.BASE_NON_CANONICAL_HEX:
782
+ case CodecErrorReason.CANONICAL_NON_CANONICAL_CBOR:
783
+ case CodecErrorReason.CANONICAL_NON_CANONICAL_JSON:
784
+ case CodecErrorReason.CANONICAL_NON_MINIMAL_CBOR_INTEGER:
785
+ case CodecErrorReason.CANONICAL_DUPLICATE_CBOR_MAP_KEY:
786
+ case CodecErrorReason.CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER:
787
+ case CodecErrorReason.CANONICAL_CBOR_TRAILING_BYTES:
788
+ return "non-canonical";
789
+ default:
790
+ return "invalid-input";
791
+ }
754
792
  };
package/dist/pem.js CHANGED
@@ -1,4 +1,4 @@
1
- // SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
1
+ // SPDX-FileCopyrightText: 2026 ReallyMe LLC
2
2
  //
3
3
  // SPDX-License-Identifier: MIT OR Apache-2.0
4
4
  import { create } from "@bufbuild/protobuf";
@@ -146,6 +146,9 @@ const snapshotEncodeOptions = (options) => {
146
146
  const snapshot = snapshotOptionsRecord(options, pemEncodeOptionFields);
147
147
  const maxDerLen = readPositiveIntegerOption(snapshot, "maxDerLen");
148
148
  const lineWidth = readPositiveIntegerOption(snapshot, "lineWidth");
149
+ if (lineWidth !== undefined && (lineWidth < 1 || lineWidth > 76)) {
150
+ throw new ReallyMeCodecError("invalid-input");
151
+ }
149
152
  const lineEndingValue = readSnapshotProperty(snapshot, "lineEnding");
150
153
  let lineEnding;
151
154
  if (lineEndingValue !== undefined) {
@@ -201,7 +201,7 @@ export type CodecDagCborDecodeResult = Message<"reallyme.codec.v1.CodecDagCborDe
201
201
  export declare const CodecDagCborDecodeResultSchema: GenMessage<CodecDagCborDecodeResult>;
202
202
  /**
203
203
  * Zero limits select the documented codec defaults. An empty allowed-label list
204
- * selects the default PRIVATE KEY, EC PRIVATE KEY, and PUBLIC KEY set.
204
+ * selects PUBLIC KEY only; private-key labels require an explicit allowlist.
205
205
  *
206
206
  * @generated from message reallyme.codec.v1.CodecPemDecodeOptions
207
207
  */
@@ -278,8 +278,9 @@ export type CodecPemEncodeRequest = Message<"reallyme.codec.v1.CodecPemEncodeReq
278
278
  */
279
279
  label: CodecPemLabel;
280
280
  /**
281
- * DER may contain private-key material. Generated owners are hardened to
282
- * wipe this field on every success and failure path.
281
+ * DER may contain private-key material. Generated owned-message drop wipes
282
+ * the retained field; transport decoders may create temporary copies that
283
+ * cannot be reliably wiped. Use binary requests for secret-bearing DER.
283
284
  *
284
285
  * @generated from field: bytes der = 2;
285
286
  */
@@ -1358,6 +1359,30 @@ export declare enum CodecErrorReason {
1358
1359
  * @generated from enum value: CODEC_ERROR_REASON_PEM_DER_TOO_LARGE = 204;
1359
1360
  */
1360
1361
  PEM_DER_TOO_LARGE = 204,
1362
+ /**
1363
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_INPUT = 205;
1364
+ */
1365
+ PEM_EMPTY_INPUT = 205,
1366
+ /**
1367
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_DER = 206;
1368
+ */
1369
+ PEM_EMPTY_DER = 206,
1370
+ /**
1371
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_OPTIONS = 207;
1372
+ */
1373
+ PEM_INVALID_OPTIONS = 207,
1374
+ /**
1375
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_BEGIN = 208;
1376
+ */
1377
+ PEM_MISSING_BEGIN = 208,
1378
+ /**
1379
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_END = 209;
1380
+ */
1381
+ PEM_MISSING_END = 209,
1382
+ /**
1383
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_BASE64 = 210;
1384
+ */
1385
+ PEM_INVALID_BASE64 = 210,
1361
1386
  /**
1362
1387
  * Multiformats and key envelopes.
1363
1388
  *
@@ -1398,6 +1423,26 @@ export declare enum CodecErrorReason {
1398
1423
  * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_INTERNAL = 404;
1399
1424
  */
1400
1425
  CANONICAL_INTERNAL = 404,
1426
+ /**
1427
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405;
1428
+ */
1429
+ CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405,
1430
+ /**
1431
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406;
1432
+ */
1433
+ CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406,
1434
+ /**
1435
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407;
1436
+ */
1437
+ CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407,
1438
+ /**
1439
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_TRAILING_BYTES = 408;
1440
+ */
1441
+ CANONICAL_CBOR_TRAILING_BYTES = 408,
1442
+ /**
1443
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_UNSUPPORTED_IPLD_VALUE = 409;
1444
+ */
1445
+ CANONICAL_UNSUPPORTED_IPLD_VALUE = 409,
1401
1446
  /**
1402
1447
  * Backend failures.
1403
1448
  *
@@ -1,11 +1,11 @@
1
- // SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
1
+ // SPDX-FileCopyrightText: 2026 ReallyMe LLC
2
2
  //
3
3
  // SPDX-License-Identifier: MIT OR Apache-2.0
4
4
  import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
5
5
  /**
6
6
  * Describes the file reallyme/codec/v1/codec.proto.
7
7
  */
8
- export const file_reallyme_codec_v1_codec = /*@__PURE__*/ fileDesc("Ch1yZWFsbHltZS9jb2RlYy92MS9jb2RlYy5wcm90bxIRcmVhbGx5bWUuY29kZWMudjEivwMKCkNvZGVjRXJyb3ISQgoNYmFzZV9lbmNvZGluZxgBIAEoCzIpLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQmFzZUVuY29kaW5nRXJyb3JIABIvCgNwZW0YAiABKAsyIC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVycm9ySAASPwoLbXVsdGlmb3JtYXQYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpZm9ybWF0RXJyb3JIABJJChBjYW5vbmljYWxpemF0aW9uGAQgASgLMi0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNDYW5vbmljYWxpemF0aW9uRXJyb3JIABI3CgdiYWNrZW5kGAUgASgLMiQucmVhbGx5bWUuY29kZWMudjEuQ29kZWNCYWNrZW5kRXJyb3JIABI5Cghib3VuZGFyeRgGIAEoCzIlLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQm91bmRhcnlFcnJvckgAEjMKBm9yaWdpbhhkIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JPcmlnaW5CBwoFZXJyb3IiMwojQ29kZWNNdWx0aWNvZGVjUHJlZml4Rm9yTmFtZVJlcXVlc3QSDAoEbmFtZRgBIAEoCSIzCiJDb2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0Eg0KBXZhbHVlGAEgASgMIh0KG0NvZGVjTXVsdGljb2RlY1RhYmxlUmVxdWVzdCItChlDb2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0EhAKCG11bHRpa2V5GAEgASgJIjwKHENvZGVjRGFnQ2JvclZlcmlmeUNpZFJlcXVlc3QSCwoDY2lkGAEgASgJEg8KB3BheWxvYWQYAiABKAwiWgoZQ29kZWNEYWdDYm9yRW5jb2RlUmVxdWVzdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSIrChhDb2RlY0RhZ0Nib3JFbmNvZGVSZXN1bHQSDwoHZW5jb2RlZBgBIAEoDCIsChlDb2RlY0RhZ0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiWQoYQ29kZWNEYWdDYm9yRGVjb2RlUmVzdWx0Ej0KBXZhbHVlGAEgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIn0KFUNvZGVjUGVtRGVjb2RlT3B0aW9ucxI4Cg5hbGxvd2VkX2xhYmVscxgBIAMoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSFQoNbWF4X2lucHV0X2xlbhgCIAEoDRITCgttYXhfZGVyX2xlbhgDIAEoDSJfChVDb2RlY1BlbURlY29kZVJlcXVlc3QSCwoDcGVtGAEgASgMEjkKB29wdGlvbnMYAiABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbURlY29kZU9wdGlvbnMifAoVQ29kZWNQZW1FbmNvZGVPcHRpb25zEhMKC21heF9kZXJfbGVuGAEgASgNEhIKCmxpbmVfd2lkdGgYAiABKA0SOgoLbGluZV9lbmRpbmcYAyABKA4yJS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUxpbmVFbmRpbmcikAEKFUNvZGVjUGVtRW5jb2RlUmVxdWVzdBIvCgVsYWJlbBgBIAEoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSCwoDZGVyGAIgASgMEjkKB29wdGlvbnMYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZU9wdGlvbnMiIwoUQ29kZWNQZW1FbmNvZGVSZXN1bHQSCwoDcGVtGAEgASgMIhwKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JOdWxsIisKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JCb29sEg0KBXZhbHVlGAEgASgIIjYKJUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JVbnNpZ25lZEludGVnZXISDQoFdmFsdWUYASABKAQiNgolQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck5lZ2F0aXZlSW50ZWdlchINCgV2YWx1ZRgBIAEoEiLQAQodQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXISUgoOdW5zaWduZWRfdmFsdWUYASABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVW5zaWduZWRJbnRlZ2VySAASUgoObmVnYXRpdmVfdmFsdWUYAiABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTmVnYXRpdmVJbnRlZ2VySABCBwoFdmFsdWUiKwoaQ29kZWNEZXRlcm1pbmlzdGljQ2JvclRleHQSDQoFdmFsdWUYASABKAkiLAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzEg0KBXZhbHVlGAEgASgMIrEBChxDb2RlY0RldGVybWluaXN0aWNDYm9yTWFwS2V5EkcKC2ludGVnZXJfa2V5GAEgASgLMjAucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXJIABJBCgh0ZXh0X2tleRgCIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JUZXh0SABCBQoDa2V5Ip0BCh5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwRW50cnkSPAoDa2V5GAEgASgLMi8ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck1hcEtleRI9CgV2YWx1ZRgCIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSJdChtDb2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXkSPgoGdmFsdWVzGAEgAygLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIl8KGUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXASQgoHZW50cmllcxgBIAMoCzIxLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXBFbnRyeSKRBAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlEkMKCm51bGxfdmFsdWUYASABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTnVsbEgAEkMKCmJvb2xfdmFsdWUYAiABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQm9vbEgAEkkKDWludGVnZXJfdmFsdWUYAyABKAsyMC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9ySW50ZWdlckgAEkMKCnRleHRfdmFsdWUYBCABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVGV4dEgAEkUKC2J5dGVzX3ZhbHVlGAUgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzSAASRQoLYXJyYXlfdmFsdWUYBiABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXlIABJBCgltYXBfdmFsdWUYByABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwSABCBwoFdmFsdWUiZAojQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlcXVlc3QSPQoFdmFsdWUYASABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVmFsdWUiNQoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlc3VsdBIPCgdlbmNvZGVkGAEgASgMIjYKI0NvZGVjRGV0ZXJtaW5pc3RpY0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiYwoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckRlY29kZVJlc3VsdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSL7BgoUQ29kZWNPcGVyYXRpb25SZXN1bHQSTQoabXVsdGljb2RlY19wcmVmaXhfZm9yX25hbWUY6AcgASgLMiYucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWNvZGVjU3BlY0gAElMKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBSZXN1bHRIABJKChBtdWx0aWNvZGVjX3RhYmxlGOoHIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1RhYmxlUmVzdWx0SAASRgoObXVsdGlrZXlfcGFyc2UY0A8gASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWtleVBhcnNlUmVzdWx0SAASTgoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXN1bHRIABJHCg9kYWdfY2Jvcl9lbmNvZGUYuRcgASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRW5jb2RlUmVzdWx0SAASRwoPZGFnX2Nib3JfZGVjb2RlGLoXIAEoCzIrLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckRlY29kZVJlc3VsdEgAEj4KCnBlbV9kZWNvZGUYoB8gASgLMicucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXN1bHRIABI+CgpwZW1fZW5jb2RlGKEfIAEoCzInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2VuY29kZRiIJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVzdWx0SABCCAoGcmVzdWx0SgUIARDoByKOAQoWQ29kZWNPcGVyYXRpb25SZXNwb25zZRI5CgZyZXN1bHQYASABKAsyJy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY09wZXJhdGlvblJlc3VsdEgAEi4KBWVycm9yGAIgASgLMh0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvckgAQgkKB291dGNvbWUinwcKFUNvZGVjT3BlcmF0aW9uUmVxdWVzdBJdChptdWx0aWNvZGVjX3ByZWZpeF9mb3JfbmFtZRjoByABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNQcmVmaXhGb3JOYW1lUmVxdWVzdEgAEloKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0SAASSwoQbXVsdGljb2RlY190YWJsZRjqByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNUYWJsZVJlcXVlc3RIABJHCg5tdWx0aWtleV9wYXJzZRjQDyABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0SAASTwoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXF1ZXN0SAASSAoPZGFnX2Nib3JfZW5jb2RlGLkXIAEoCzIsLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckVuY29kZVJlcXVlc3RIABJICg9kYWdfY2Jvcl9kZWNvZGUYuhcgASgLMiwucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRGVjb2RlUmVxdWVzdEgAEj8KCnBlbV9kZWNvZGUYoB8gASgLMigucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXF1ZXN0SAASPwoKcGVtX2VuY29kZRihHyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZVJlcXVlc3RIABJcChlkZXRlcm1pbmlzdGljX2Nib3JfZW5jb2RlGIgnIAEoCzI2LnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JFbmNvZGVSZXF1ZXN0SAASXAoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVxdWVzdEgAQgsKCW9wZXJhdGlvbkoFCAEQ6Aci9gEKE0NvZGVjTXVsdGljb2RlY1NwZWMSDAoEbmFtZRgBIAEoCRIMCgRjb2RlGAIgASgMEg4KBnByZWZpeBgDIAEoDBIoCgN0YWcYBCABKA4yGy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1RhZxJCChFrZXlfbWF0ZXJpYWxfa2luZBgFIAEoDjInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjS2V5TWF0ZXJpYWxLaW5kEhQKDGZpeGVkX2xlbmd0aBgGIAEoDRIXCg92YXJpYWJsZV9sZW5ndGgYByABKAgSFgoOYWxnb3JpdGhtX25hbWUYCCABKAkifAobQ29kZWNNdWx0aWNvZGVjTG9va3VwUmVzdWx0EgwKBG5hbWUYASABKAkSFQoNcHJlZml4X2xlbmd0aBgCIAEoDRI4CghtZXRhZGF0YRgDIAEoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiVQoaQ29kZWNNdWx0aWNvZGVjVGFibGVSZXN1bHQSNwoHZW50cmllcxgBIAMoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiogEKGENvZGVjTXVsdGlrZXlQYXJzZVJlc3VsdBISCgpjb2RlY19uYW1lGAEgASgJEhYKDmFsZ29yaXRobV9uYW1lGAIgASgJEhIKCnB1YmxpY19rZXkYAyABKAwSIgoaZXhwZWN0ZWRfcHVibGljX2tleV9sZW5ndGgYBCABKA0SIgoadmFyaWFibGVfcHVibGljX2tleV9sZW5ndGgYBSABKAgiVgobQ29kZWNEYWdDYm9yVmVyaWZ5Q2lkUmVzdWx0Eg0KBXZhbGlkGAEgASgIEhQKDGV4cGVjdGVkX2NpZBgCIAEoCRISCgphY3R1YWxfY2lkGAMgASgJIjIKFENvZGVjUGVtRGVjb2RlUmVzdWx0Eg0KBWxhYmVsGAEgASgJEgsKA2RlchgCIAEoDCJNChZDb2RlY0Jhc2VFbmNvZGluZ0Vycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iRAoNQ29kZWNQZW1FcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIkwKFUNvZGVjTXVsdGlmb3JtYXRFcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIlEKGkNvZGVjQ2Fub25pY2FsaXphdGlvbkVycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iSAoRQ29kZWNCYWNrZW5kRXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbiJJChJDb2RlY0JvdW5kYXJ5RXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbip2ChBDb2RlY0Vycm9yT3JpZ2luEiIKHkNPREVDX0VSUk9SX09SSUdJTl9VTlNQRUNJRklFRBAAEh0KGUNPREVDX0VSUk9SX09SSUdJTl9DQUxMRVIQARIfChtDT0RFQ19FUlJPUl9PUklHSU5fUFJPVklERVIQAiqVAQoNQ29kZWNQZW1MYWJlbBIfChtDT0RFQ19QRU1fTEFCRUxfVU5TUEVDSUZJRUQQABIfChtDT0RFQ19QRU1fTEFCRUxfUFJJVkFURV9LRVkQZBIiCh5DT0RFQ19QRU1fTEFCRUxfRUNfUFJJVkFURV9LRVkQbhIeChpDT0RFQ19QRU1fTEFCRUxfUFVCTElDX0tFWRB4KnkKEkNvZGVjUGVtTGluZUVuZGluZxIlCiFDT0RFQ19QRU1fTElORV9FTkRJTkdfVU5TUEVDSUZJRUQQABIcChhDT0RFQ19QRU1fTElORV9FTkRJTkdfTEYQZBIeChpDT0RFQ19QRU1fTElORV9FTkRJTkdfQ1JMRhBuKuABChRDb2RlY0tleU1hdGVyaWFsS2luZBInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9VTlNQRUNJRklFRBAAEiYKIkNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1BVQkxJQ19LRVkQARInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9QUklWQVRFX0tFWRACEikKJUNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1NZTU1FVFJJQ19LRVkQAxIjCh9DT0RFQ19LRVlfTUFURVJJQUxfS0lORF9OT1RfS0VZEAQqlwEKCENvZGVjVGFnEhkKFUNPREVDX1RBR19VTlNQRUNJRklFRBAAEhgKFENPREVDX1RBR19FTkNSWVBUSU9OEAESEQoNQ09ERUNfVEFHX0tFWRACEhIKDkNPREVDX1RBR19IQVNIEAMSFwoTQ09ERUNfVEFHX01VTFRJSEFTSBAEEhYKEkNPREVDX1RBR19NVUxUSUtFWRAFKpILChBDb2RlY0Vycm9yUmVhc29uEiIKHkNPREVDX0VSUk9SX1JFQVNPTl9VTlNQRUNJRklFRBAAEi0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX1VOU1VQUE9SVEVEX0NPREVDEGQSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9FTkNPRElORxBlEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfTEVOR1RIEGYSKwonQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5QVVRfVE9PX0xBUkdFEGcSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfT1VUUFVUX1RPT19MQVJHRRBoEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfQkFTRTY0EG4SLQopQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9CQVNFNjRVUkwQbxInCiNDT0RFQ19FUlJPUl9SRUFTT05fQkFTRV9JTlZBTElEX0hFWBB4Ei0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX05PTl9DQU5PTklDQUxfSEVYEHkSLAonQ09ERUNfRVJST1JfUkVBU09OX1BFTV9JTlZBTElEX0JPVU5EQVJZEMgBEioKJUNPREVDX0VSUk9SX1JFQVNPTl9QRU1fTEFCRUxfTUlTTUFUQ0gQyQESLQooQ09ERUNfRVJST1JfUkVBU09OX1BFTV9VTlNVUFBPUlRFRF9MQUJFTBDKARIoCiNDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQk9EWRDLARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0RFUl9UT09fTEFSR0UQzAESPAo3Q09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX0lOVkFMSURfTVVMVElCQVNFX1BSRUZJWBCsAhI9CjhDT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfSU5WQUxJRF9NVUxUSUNPREVDX1BSRUZJWBCtAhI2CjFDT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfVU5LTk9XTl9NVUxUSUNPREVDEK4CEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9NVUxUSUZPUk1BVF9JTlZBTElEX01VTFRJS0VZEK8CEi4KKUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5WQUxJRF9DQk9SEJADEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX0NBTk9OSUNBTF9DQk9SEJEDEi4KKUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5WQUxJRF9KU09OEJIDEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX0NBTk9OSUNBTF9KU09OEJMDEioKJUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5URVJOQUwQlAMSKAojQ09ERUNfRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQ9AMSMwouQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX01BTEZPUk1FRF9QUk9UT0JVRhDYBBIvCipDT0RFQ19FUlJPUl9SRUFTT05fQk9VTkRBUllfTUFMRk9STUVEX0pTT04Q2QQSOAozQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX1JFU09VUkNFX0xJTUlUX0VYQ0VFREVEENoEEjIKLUNPREVDX0VSUk9SX1JFQVNPTl9CT1VOREFSWV9NSVNTSU5HX09QRVJBVElPThDbBCIECHAQcEImChJtZS5yZWFsbHkuY29kZWMudjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
8
+ export const file_reallyme_codec_v1_codec = /*@__PURE__*/ fileDesc("Ch1yZWFsbHltZS9jb2RlYy92MS9jb2RlYy5wcm90bxIRcmVhbGx5bWUuY29kZWMudjEivwMKCkNvZGVjRXJyb3ISQgoNYmFzZV9lbmNvZGluZxgBIAEoCzIpLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQmFzZUVuY29kaW5nRXJyb3JIABIvCgNwZW0YAiABKAsyIC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVycm9ySAASPwoLbXVsdGlmb3JtYXQYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpZm9ybWF0RXJyb3JIABJJChBjYW5vbmljYWxpemF0aW9uGAQgASgLMi0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNDYW5vbmljYWxpemF0aW9uRXJyb3JIABI3CgdiYWNrZW5kGAUgASgLMiQucmVhbGx5bWUuY29kZWMudjEuQ29kZWNCYWNrZW5kRXJyb3JIABI5Cghib3VuZGFyeRgGIAEoCzIlLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQm91bmRhcnlFcnJvckgAEjMKBm9yaWdpbhhkIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JPcmlnaW5CBwoFZXJyb3IiMwojQ29kZWNNdWx0aWNvZGVjUHJlZml4Rm9yTmFtZVJlcXVlc3QSDAoEbmFtZRgBIAEoCSIzCiJDb2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0Eg0KBXZhbHVlGAEgASgMIh0KG0NvZGVjTXVsdGljb2RlY1RhYmxlUmVxdWVzdCItChlDb2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0EhAKCG11bHRpa2V5GAEgASgJIjwKHENvZGVjRGFnQ2JvclZlcmlmeUNpZFJlcXVlc3QSCwoDY2lkGAEgASgJEg8KB3BheWxvYWQYAiABKAwiWgoZQ29kZWNEYWdDYm9yRW5jb2RlUmVxdWVzdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSIrChhDb2RlY0RhZ0Nib3JFbmNvZGVSZXN1bHQSDwoHZW5jb2RlZBgBIAEoDCIsChlDb2RlY0RhZ0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiWQoYQ29kZWNEYWdDYm9yRGVjb2RlUmVzdWx0Ej0KBXZhbHVlGAEgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIn0KFUNvZGVjUGVtRGVjb2RlT3B0aW9ucxI4Cg5hbGxvd2VkX2xhYmVscxgBIAMoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSFQoNbWF4X2lucHV0X2xlbhgCIAEoDRITCgttYXhfZGVyX2xlbhgDIAEoDSJfChVDb2RlY1BlbURlY29kZVJlcXVlc3QSCwoDcGVtGAEgASgMEjkKB29wdGlvbnMYAiABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbURlY29kZU9wdGlvbnMifAoVQ29kZWNQZW1FbmNvZGVPcHRpb25zEhMKC21heF9kZXJfbGVuGAEgASgNEhIKCmxpbmVfd2lkdGgYAiABKA0SOgoLbGluZV9lbmRpbmcYAyABKA4yJS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUxpbmVFbmRpbmcikAEKFUNvZGVjUGVtRW5jb2RlUmVxdWVzdBIvCgVsYWJlbBgBIAEoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSCwoDZGVyGAIgASgMEjkKB29wdGlvbnMYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZU9wdGlvbnMiIwoUQ29kZWNQZW1FbmNvZGVSZXN1bHQSCwoDcGVtGAEgASgMIhwKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JOdWxsIisKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JCb29sEg0KBXZhbHVlGAEgASgIIjYKJUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JVbnNpZ25lZEludGVnZXISDQoFdmFsdWUYASABKAQiNgolQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck5lZ2F0aXZlSW50ZWdlchINCgV2YWx1ZRgBIAEoEiLQAQodQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXISUgoOdW5zaWduZWRfdmFsdWUYASABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVW5zaWduZWRJbnRlZ2VySAASUgoObmVnYXRpdmVfdmFsdWUYAiABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTmVnYXRpdmVJbnRlZ2VySABCBwoFdmFsdWUiKwoaQ29kZWNEZXRlcm1pbmlzdGljQ2JvclRleHQSDQoFdmFsdWUYASABKAkiLAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzEg0KBXZhbHVlGAEgASgMIrEBChxDb2RlY0RldGVybWluaXN0aWNDYm9yTWFwS2V5EkcKC2ludGVnZXJfa2V5GAEgASgLMjAucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXJIABJBCgh0ZXh0X2tleRgCIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JUZXh0SABCBQoDa2V5Ip0BCh5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwRW50cnkSPAoDa2V5GAEgASgLMi8ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck1hcEtleRI9CgV2YWx1ZRgCIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSJdChtDb2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXkSPgoGdmFsdWVzGAEgAygLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIl8KGUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXASQgoHZW50cmllcxgBIAMoCzIxLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXBFbnRyeSKRBAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlEkMKCm51bGxfdmFsdWUYASABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTnVsbEgAEkMKCmJvb2xfdmFsdWUYAiABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQm9vbEgAEkkKDWludGVnZXJfdmFsdWUYAyABKAsyMC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9ySW50ZWdlckgAEkMKCnRleHRfdmFsdWUYBCABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVGV4dEgAEkUKC2J5dGVzX3ZhbHVlGAUgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzSAASRQoLYXJyYXlfdmFsdWUYBiABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXlIABJBCgltYXBfdmFsdWUYByABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwSABCBwoFdmFsdWUiZAojQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlcXVlc3QSPQoFdmFsdWUYASABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVmFsdWUiNQoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlc3VsdBIPCgdlbmNvZGVkGAEgASgMIjYKI0NvZGVjRGV0ZXJtaW5pc3RpY0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiYwoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckRlY29kZVJlc3VsdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSL7BgoUQ29kZWNPcGVyYXRpb25SZXN1bHQSTQoabXVsdGljb2RlY19wcmVmaXhfZm9yX25hbWUY6AcgASgLMiYucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWNvZGVjU3BlY0gAElMKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBSZXN1bHRIABJKChBtdWx0aWNvZGVjX3RhYmxlGOoHIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1RhYmxlUmVzdWx0SAASRgoObXVsdGlrZXlfcGFyc2UY0A8gASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWtleVBhcnNlUmVzdWx0SAASTgoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXN1bHRIABJHCg9kYWdfY2Jvcl9lbmNvZGUYuRcgASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRW5jb2RlUmVzdWx0SAASRwoPZGFnX2Nib3JfZGVjb2RlGLoXIAEoCzIrLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckRlY29kZVJlc3VsdEgAEj4KCnBlbV9kZWNvZGUYoB8gASgLMicucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXN1bHRIABI+CgpwZW1fZW5jb2RlGKEfIAEoCzInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2VuY29kZRiIJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVzdWx0SABCCAoGcmVzdWx0SgUIARDoByKOAQoWQ29kZWNPcGVyYXRpb25SZXNwb25zZRI5CgZyZXN1bHQYASABKAsyJy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY09wZXJhdGlvblJlc3VsdEgAEi4KBWVycm9yGAIgASgLMh0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvckgAQgkKB291dGNvbWUinwcKFUNvZGVjT3BlcmF0aW9uUmVxdWVzdBJdChptdWx0aWNvZGVjX3ByZWZpeF9mb3JfbmFtZRjoByABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNQcmVmaXhGb3JOYW1lUmVxdWVzdEgAEloKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0SAASSwoQbXVsdGljb2RlY190YWJsZRjqByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNUYWJsZVJlcXVlc3RIABJHCg5tdWx0aWtleV9wYXJzZRjQDyABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0SAASTwoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXF1ZXN0SAASSAoPZGFnX2Nib3JfZW5jb2RlGLkXIAEoCzIsLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckVuY29kZVJlcXVlc3RIABJICg9kYWdfY2Jvcl9kZWNvZGUYuhcgASgLMiwucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRGVjb2RlUmVxdWVzdEgAEj8KCnBlbV9kZWNvZGUYoB8gASgLMigucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXF1ZXN0SAASPwoKcGVtX2VuY29kZRihHyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZVJlcXVlc3RIABJcChlkZXRlcm1pbmlzdGljX2Nib3JfZW5jb2RlGIgnIAEoCzI2LnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JFbmNvZGVSZXF1ZXN0SAASXAoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVxdWVzdEgAQgsKCW9wZXJhdGlvbkoFCAEQ6Aci9gEKE0NvZGVjTXVsdGljb2RlY1NwZWMSDAoEbmFtZRgBIAEoCRIMCgRjb2RlGAIgASgMEg4KBnByZWZpeBgDIAEoDBIoCgN0YWcYBCABKA4yGy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1RhZxJCChFrZXlfbWF0ZXJpYWxfa2luZBgFIAEoDjInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjS2V5TWF0ZXJpYWxLaW5kEhQKDGZpeGVkX2xlbmd0aBgGIAEoDRIXCg92YXJpYWJsZV9sZW5ndGgYByABKAgSFgoOYWxnb3JpdGhtX25hbWUYCCABKAkifAobQ29kZWNNdWx0aWNvZGVjTG9va3VwUmVzdWx0EgwKBG5hbWUYASABKAkSFQoNcHJlZml4X2xlbmd0aBgCIAEoDRI4CghtZXRhZGF0YRgDIAEoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiVQoaQ29kZWNNdWx0aWNvZGVjVGFibGVSZXN1bHQSNwoHZW50cmllcxgBIAMoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiogEKGENvZGVjTXVsdGlrZXlQYXJzZVJlc3VsdBISCgpjb2RlY19uYW1lGAEgASgJEhYKDmFsZ29yaXRobV9uYW1lGAIgASgJEhIKCnB1YmxpY19rZXkYAyABKAwSIgoaZXhwZWN0ZWRfcHVibGljX2tleV9sZW5ndGgYBCABKA0SIgoadmFyaWFibGVfcHVibGljX2tleV9sZW5ndGgYBSABKAgiVgobQ29kZWNEYWdDYm9yVmVyaWZ5Q2lkUmVzdWx0Eg0KBXZhbGlkGAEgASgIEhQKDGV4cGVjdGVkX2NpZBgCIAEoCRISCgphY3R1YWxfY2lkGAMgASgJIjIKFENvZGVjUGVtRGVjb2RlUmVzdWx0Eg0KBWxhYmVsGAEgASgJEgsKA2RlchgCIAEoDCJNChZDb2RlY0Jhc2VFbmNvZGluZ0Vycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iRAoNQ29kZWNQZW1FcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIkwKFUNvZGVjTXVsdGlmb3JtYXRFcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIlEKGkNvZGVjQ2Fub25pY2FsaXphdGlvbkVycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iSAoRQ29kZWNCYWNrZW5kRXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbiJJChJDb2RlY0JvdW5kYXJ5RXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbip2ChBDb2RlY0Vycm9yT3JpZ2luEiIKHkNPREVDX0VSUk9SX09SSUdJTl9VTlNQRUNJRklFRBAAEh0KGUNPREVDX0VSUk9SX09SSUdJTl9DQUxMRVIQARIfChtDT0RFQ19FUlJPUl9PUklHSU5fUFJPVklERVIQAiqVAQoNQ29kZWNQZW1MYWJlbBIfChtDT0RFQ19QRU1fTEFCRUxfVU5TUEVDSUZJRUQQABIfChtDT0RFQ19QRU1fTEFCRUxfUFJJVkFURV9LRVkQZBIiCh5DT0RFQ19QRU1fTEFCRUxfRUNfUFJJVkFURV9LRVkQbhIeChpDT0RFQ19QRU1fTEFCRUxfUFVCTElDX0tFWRB4KnkKEkNvZGVjUGVtTGluZUVuZGluZxIlCiFDT0RFQ19QRU1fTElORV9FTkRJTkdfVU5TUEVDSUZJRUQQABIcChhDT0RFQ19QRU1fTElORV9FTkRJTkdfTEYQZBIeChpDT0RFQ19QRU1fTElORV9FTkRJTkdfQ1JMRhBuKuABChRDb2RlY0tleU1hdGVyaWFsS2luZBInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9VTlNQRUNJRklFRBAAEiYKIkNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1BVQkxJQ19LRVkQARInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9QUklWQVRFX0tFWRACEikKJUNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1NZTU1FVFJJQ19LRVkQAxIjCh9DT0RFQ19LRVlfTUFURVJJQUxfS0lORF9OT1RfS0VZEAQqlwEKCENvZGVjVGFnEhkKFUNPREVDX1RBR19VTlNQRUNJRklFRBAAEhgKFENPREVDX1RBR19FTkNSWVBUSU9OEAESEQoNQ09ERUNfVEFHX0tFWRACEhIKDkNPREVDX1RBR19IQVNIEAMSFwoTQ09ERUNfVEFHX01VTFRJSEFTSBAEEhYKEkNPREVDX1RBR19NVUxUSUtFWRAFKrQPChBDb2RlY0Vycm9yUmVhc29uEiIKHkNPREVDX0VSUk9SX1JFQVNPTl9VTlNQRUNJRklFRBAAEi0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX1VOU1VQUE9SVEVEX0NPREVDEGQSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9FTkNPRElORxBlEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfTEVOR1RIEGYSKwonQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5QVVRfVE9PX0xBUkdFEGcSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfT1VUUFVUX1RPT19MQVJHRRBoEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfQkFTRTY0EG4SLQopQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9CQVNFNjRVUkwQbxInCiNDT0RFQ19FUlJPUl9SRUFTT05fQkFTRV9JTlZBTElEX0hFWBB4Ei0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX05PTl9DQU5PTklDQUxfSEVYEHkSLAonQ09ERUNfRVJST1JfUkVBU09OX1BFTV9JTlZBTElEX0JPVU5EQVJZEMgBEioKJUNPREVDX0VSUk9SX1JFQVNPTl9QRU1fTEFCRUxfTUlTTUFUQ0gQyQESLQooQ09ERUNfRVJST1JfUkVBU09OX1BFTV9VTlNVUFBPUlRFRF9MQUJFTBDKARIoCiNDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQk9EWRDLARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0RFUl9UT09fTEFSR0UQzAESJwoiQ09ERUNfRVJST1JfUkVBU09OX1BFTV9FTVBUWV9JTlBVVBDNARIlCiBDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0VNUFRZX0RFUhDOARIrCiZDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfT1BUSU9OUxDPARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX01JU1NJTkdfQkVHSU4Q0AESJwoiQ09ERUNfRVJST1JfUkVBU09OX1BFTV9NSVNTSU5HX0VORBDRARIqCiVDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQkFTRTY0ENIBEjwKN0NPREVDX0VSUk9SX1JFQVNPTl9NVUxUSUZPUk1BVF9JTlZBTElEX01VTFRJQkFTRV9QUkVGSVgQrAISPQo4Q09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX0lOVkFMSURfTVVMVElDT0RFQ19QUkVGSVgQrQISNgoxQ09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX1VOS05PV05fTVVMVElDT0RFQxCuAhI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfSU5WQUxJRF9NVUxUSUtFWRCvAhIuCilDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVkFMSURfQ0JPUhCQAxI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX05PTl9DQU5PTklDQUxfQ0JPUhCRAxIuCilDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVkFMSURfSlNPThCSAxI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX05PTl9DQU5PTklDQUxfSlNPThCTAxIqCiVDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVEVSTkFMEJQDEjoKNUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX01JTklNQUxfQ0JPUl9JTlRFR0VSEJUDEjgKM0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfRFVQTElDQVRFX0NCT1JfTUFQX0tFWRCWAxI8CjdDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0NCT1JfTUFQX0tFWVNfT1VUX09GX09SREVSEJcDEjUKMENPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfQ0JPUl9UUkFJTElOR19CWVRFUxCYAxI4CjNDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX1VOU1VQUE9SVEVEX0lQTERfVkFMVUUQmQMSKAojQ09ERUNfRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQ9AMSMwouQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX01BTEZPUk1FRF9QUk9UT0JVRhDYBBIvCipDT0RFQ19FUlJPUl9SRUFTT05fQk9VTkRBUllfTUFMRk9STUVEX0pTT04Q2QQSOAozQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX1JFU09VUkNFX0xJTUlUX0VYQ0VFREVEENoEEjIKLUNPREVDX0VSUk9SX1JFQVNPTl9CT1VOREFSWV9NSVNTSU5HX09QRVJBVElPThDbBCIECHAQcEImChJtZS5yZWFsbHkuY29kZWMudjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
9
9
  /**
10
10
  * Describes the message reallyme.codec.v1.CodecError.
11
11
  * Use `create(CodecErrorSchema)` to create a new message.
@@ -464,6 +464,30 @@ export var CodecErrorReason;
464
464
  * @generated from enum value: CODEC_ERROR_REASON_PEM_DER_TOO_LARGE = 204;
465
465
  */
466
466
  CodecErrorReason[CodecErrorReason["PEM_DER_TOO_LARGE"] = 204] = "PEM_DER_TOO_LARGE";
467
+ /**
468
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_INPUT = 205;
469
+ */
470
+ CodecErrorReason[CodecErrorReason["PEM_EMPTY_INPUT"] = 205] = "PEM_EMPTY_INPUT";
471
+ /**
472
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_DER = 206;
473
+ */
474
+ CodecErrorReason[CodecErrorReason["PEM_EMPTY_DER"] = 206] = "PEM_EMPTY_DER";
475
+ /**
476
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_OPTIONS = 207;
477
+ */
478
+ CodecErrorReason[CodecErrorReason["PEM_INVALID_OPTIONS"] = 207] = "PEM_INVALID_OPTIONS";
479
+ /**
480
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_BEGIN = 208;
481
+ */
482
+ CodecErrorReason[CodecErrorReason["PEM_MISSING_BEGIN"] = 208] = "PEM_MISSING_BEGIN";
483
+ /**
484
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_END = 209;
485
+ */
486
+ CodecErrorReason[CodecErrorReason["PEM_MISSING_END"] = 209] = "PEM_MISSING_END";
487
+ /**
488
+ * @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_BASE64 = 210;
489
+ */
490
+ CodecErrorReason[CodecErrorReason["PEM_INVALID_BASE64"] = 210] = "PEM_INVALID_BASE64";
467
491
  /**
468
492
  * Multiformats and key envelopes.
469
493
  *
@@ -504,6 +528,26 @@ export var CodecErrorReason;
504
528
  * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_INTERNAL = 404;
505
529
  */
506
530
  CodecErrorReason[CodecErrorReason["CANONICAL_INTERNAL"] = 404] = "CANONICAL_INTERNAL";
531
+ /**
532
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405;
533
+ */
534
+ CodecErrorReason[CodecErrorReason["CANONICAL_NON_MINIMAL_CBOR_INTEGER"] = 405] = "CANONICAL_NON_MINIMAL_CBOR_INTEGER";
535
+ /**
536
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406;
537
+ */
538
+ CodecErrorReason[CodecErrorReason["CANONICAL_DUPLICATE_CBOR_MAP_KEY"] = 406] = "CANONICAL_DUPLICATE_CBOR_MAP_KEY";
539
+ /**
540
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407;
541
+ */
542
+ CodecErrorReason[CodecErrorReason["CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER"] = 407] = "CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER";
543
+ /**
544
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_TRAILING_BYTES = 408;
545
+ */
546
+ CodecErrorReason[CodecErrorReason["CANONICAL_CBOR_TRAILING_BYTES"] = 408] = "CANONICAL_CBOR_TRAILING_BYTES";
547
+ /**
548
+ * @generated from enum value: CODEC_ERROR_REASON_CANONICAL_UNSUPPORTED_IPLD_VALUE = 409;
549
+ */
550
+ CodecErrorReason[CodecErrorReason["CANONICAL_UNSUPPORTED_IPLD_VALUE"] = 409] = "CANONICAL_UNSUPPORTED_IPLD_VALUE";
507
551
  /**
508
552
  * Backend failures.
509
553
  *
package/dist/proto.js CHANGED
@@ -1,4 +1,4 @@
1
- // SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
1
+ // SPDX-FileCopyrightText: 2026 ReallyMe LLC
2
2
  //
3
3
  // SPDX-License-Identifier: MIT OR Apache-2.0
4
4
  export { CodecBackendErrorSchema, CodecBaseEncodingErrorSchema, CodecCanonicalizationErrorSchema, CodecBoundaryErrorSchema, CodecDagCborDecodeRequestSchema, CodecDagCborDecodeResultSchema, CodecDagCborEncodeRequestSchema, CodecDagCborEncodeResultSchema, CodecDagCborVerifyCidRequestSchema, CodecDagCborVerifyCidResultSchema, CodecDeterministicCborArraySchema, CodecDeterministicCborBoolSchema, CodecDeterministicCborBytesSchema, CodecDeterministicCborDecodeRequestSchema, CodecDeterministicCborDecodeResultSchema, CodecDeterministicCborEncodeRequestSchema, CodecDeterministicCborEncodeResultSchema, CodecDeterministicCborIntegerSchema, CodecDeterministicCborMapEntrySchema, CodecDeterministicCborMapKeySchema, CodecDeterministicCborMapSchema, CodecDeterministicCborNegativeIntegerSchema, CodecDeterministicCborNullSchema, CodecDeterministicCborTextSchema, CodecDeterministicCborUnsignedIntegerSchema, CodecDeterministicCborValueSchema, CodecErrorReason, CodecErrorReasonSchema, CodecErrorOrigin, CodecErrorOriginSchema, CodecErrorSchema, CodecKeyMaterialKind, CodecKeyMaterialKindSchema, CodecMultiformatErrorSchema, CodecMulticodecLookupResultSchema, CodecMulticodecLookupPrefixRequestSchema, CodecMulticodecPrefixForNameRequestSchema, CodecMulticodecSpecSchema, CodecMulticodecTableRequestSchema, CodecMulticodecTableResultSchema, CodecMultikeyParseRequestSchema, CodecMultikeyParseResultSchema, CodecOperationRequestSchema, CodecOperationResponseSchema, CodecOperationResultSchema, CodecPemDecodeOptionsSchema, CodecPemDecodeRequestSchema, CodecPemEncodeOptionsSchema, CodecPemEncodeRequestSchema, CodecPemEncodeResultSchema, CodecPemErrorSchema, CodecPemLabel, CodecPemLabelSchema, CodecPemLineEnding, CodecPemLineEndingSchema, CodecPemDecodeResultSchema, CodecTag, CodecTagSchema, file_reallyme_codec_v1_codec, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
@@ -6,6 +6,10 @@ export declare const ensureBytesInput: (value: Uint8Array) => void;
6
6
  * provider or protobuf serializer consumes another.
7
7
  */
8
8
  export declare const snapshotBoundedBytesInput: (value: Uint8Array, maximumLength?: number) => Uint8Array;
9
+ /** Copy provider-owned bytes without invoking methods supplied by the provider. */
10
+ export declare const snapshotProviderBytes: (value: Uint8Array, maximumLength?: number) => Uint8Array;
11
+ /** Wipes the private copy even when the provider rejects the request. */
12
+ export declare const withSnapshotBytesInput: <T>(value: Uint8Array, action: (snapshot: Uint8Array) => T) => T;
9
13
  export declare const ensureStringInput: (value: string) => void;
10
14
  export declare const ensureStringValue: (value: string) => void;
11
15
  export declare const readBooleanOutput: (value: unknown) => boolean;
@@ -1,4 +1,4 @@
1
- // SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
1
+ // SPDX-FileCopyrightText: 2026 ReallyMe LLC
2
2
  //
3
3
  // SPDX-License-Identifier: MIT OR Apache-2.0
4
4
  import { MAX_CODEC_FFI_INPUT_BYTES, MAX_CODEC_FFI_OUTPUT_BYTES, requireBoundaryUtf8String, } from "./boundary.js";
@@ -105,6 +105,25 @@ export const snapshotBoundedBytesInput = (value, maximumLength = MAX_CODEC_FFI_I
105
105
  throw new ReallyMeCodecError("invalid-input");
106
106
  }
107
107
  };
108
+ /** Copy provider-owned bytes without invoking methods supplied by the provider. */
109
+ export const snapshotProviderBytes = (value, maximumLength = MAX_CODEC_FFI_OUTPUT_BYTES) => {
110
+ try {
111
+ return snapshotBoundedBytesInput(value, maximumLength);
112
+ }
113
+ catch (_error) {
114
+ throw new ReallyMeCodecError("provider-failure");
115
+ }
116
+ };
117
+ /** Wipes the private copy even when the provider rejects the request. */
118
+ export const withSnapshotBytesInput = (value, action) => {
119
+ const snapshot = snapshotBoundedBytesInput(value);
120
+ try {
121
+ return action(snapshot);
122
+ }
123
+ finally {
124
+ snapshot.fill(0);
125
+ }
126
+ };
108
127
  export const ensureStringInput = (value) => {
109
128
  if (typeof value !== "string" || value.length === 0) {
110
129
  throw new ReallyMeCodecError("invalid-input");
@@ -92,7 +92,7 @@ export function multibaseBase64urlEncode(bytes: Uint8Array): string;
92
92
  export function multibaseDecode(encoded: string): Uint8Array;
93
93
 
94
94
  /**
95
- * Strip a known multicodec prefix, or return the original bytes when none is found.
95
+ * Strip a known multicodec prefix, or return a typed error for an unknown prefix.
96
96
  */
97
97
  export function multicodecStripPrefix(bytes: Uint8Array): Uint8Array;
98
98
 
@@ -131,25 +131,25 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
131
131
  export interface InitOutput {
132
132
  readonly memory: WebAssembly.Memory;
133
133
  readonly base58btcDecode: (a: any) => [number, number, number];
134
- readonly base58btcEncode: (a: any) => [number, number, number, number];
134
+ readonly base58btcEncode: (a: any) => [number, number, number];
135
135
  readonly base64Decode: (a: any) => [number, number, number];
136
- readonly base64Encode: (a: any) => [number, number, number, number];
136
+ readonly base64Encode: (a: any) => [number, number, number];
137
137
  readonly base64urlDecode: (a: any) => [number, number, number];
138
- readonly base64urlEncode: (a: any) => [number, number, number, number];
138
+ readonly base64urlEncode: (a: any) => [number, number, number];
139
139
  readonly bindingTypeMatchesCodec: (a: any, b: any) => [number, number, number];
140
- readonly bytesToLowerHex: (a: any) => [number, number, number, number];
141
- readonly canonicalizeJson: (a: any) => [number, number, number, number];
140
+ readonly bytesToLowerHex: (a: any) => [number, number, number];
141
+ readonly canonicalizeJson: (a: any) => [number, number, number];
142
142
  readonly dagCborCodecCode: () => number;
143
- readonly dagCborComputeCid: (a: any) => [number, number, number, number];
143
+ readonly dagCborComputeCid: (a: any) => [number, number, number];
144
144
  readonly dagCborMultihash: (a: any) => [number, number, number];
145
145
  readonly dagCborSha256ContentHash: (a: any) => [number, number, number];
146
146
  readonly isValidCidString: (a: any) => [number, number, number];
147
147
  readonly lowerHexToBytes: (a: any) => [number, number, number];
148
- readonly multibaseBase58btcEncode: (a: any) => [number, number, number, number];
149
- readonly multibaseBase64urlEncode: (a: any) => [number, number, number, number];
148
+ readonly multibaseBase58btcEncode: (a: any) => [number, number, number];
149
+ readonly multibaseBase64urlEncode: (a: any) => [number, number, number];
150
150
  readonly multibaseDecode: (a: any) => [number, number, number];
151
151
  readonly multicodecStripPrefix: (a: any) => [number, number, number];
152
- readonly multikeyEncode: (a: any, b: any) => [number, number, number, number];
152
+ readonly multikeyEncode: (a: any, b: any) => [number, number, number];
153
153
  readonly processOperation: (a: any) => [number, number, number];
154
154
  readonly processOperationJson: (a: any) => [number, number, number];
155
155
  readonly requireSupportedMulticodec: (a: any) => [number, number];
@@ -157,10 +157,10 @@ export interface InitOutput {
157
157
  readonly validateKeyBinding: (a: any, b: number, c: any) => [number, number];
158
158
  readonly __wbindgen_malloc: (a: number, b: number) => number;
159
159
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
160
+ readonly __wbindgen_exn_store: (a: number) => void;
161
+ readonly __externref_table_alloc: () => number;
160
162
  readonly __wbindgen_externrefs: WebAssembly.Table;
161
163
  readonly __externref_table_dealloc: (a: number) => void;
162
- readonly __wbindgen_free: (a: number, b: number, c: number) => void;
163
- readonly __externref_table_alloc: () => number;
164
164
  readonly __wbindgen_start: () => void;
165
165
  }
166
166