@zhoujun_aptos/octopus-ts-sdk-min 0.1.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.
Files changed (62) hide show
  1. package/README.md +108 -0
  2. package/dist/aes256gcm.d.ts +16 -0
  3. package/dist/aes256gcm.d.ts.map +1 -0
  4. package/dist/aes256gcm.js +98 -0
  5. package/dist/aes256gcm.js.map +1 -0
  6. package/dist/elgamal.d.ts +31 -0
  7. package/dist/elgamal.d.ts.map +1 -0
  8. package/dist/elgamal.js +96 -0
  9. package/dist/elgamal.js.map +1 -0
  10. package/dist/enc/index.d.ts +35 -0
  11. package/dist/enc/index.d.ts.map +1 -0
  12. package/dist/enc/index.js +171 -0
  13. package/dist/enc/index.js.map +1 -0
  14. package/dist/enc/simple_elgamal_ristretto255.d.ts +27 -0
  15. package/dist/enc/simple_elgamal_ristretto255.d.ts.map +1 -0
  16. package/dist/enc/simple_elgamal_ristretto255.js +135 -0
  17. package/dist/enc/simple_elgamal_ristretto255.js.map +1 -0
  18. package/dist/group.d.ts +37 -0
  19. package/dist/group.d.ts.map +1 -0
  20. package/dist/group.js +150 -0
  21. package/dist/group.js.map +1 -0
  22. package/dist/ibe/index.d.ts +46 -0
  23. package/dist/ibe/index.d.ts.map +1 -0
  24. package/dist/ibe/index.js +238 -0
  25. package/dist/ibe/index.js.map +1 -0
  26. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.d.ts +37 -0
  27. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.d.ts.map +1 -0
  28. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.js +131 -0
  29. package/dist/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.js.map +1 -0
  30. package/dist/index.d.ts +10 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +47 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/shamir_gf256.d.ts +61 -0
  35. package/dist/shamir_gf256.d.ts.map +1 -0
  36. package/dist/shamir_gf256.js +295 -0
  37. package/dist/shamir_gf256.js.map +1 -0
  38. package/dist/sig/index.d.ts +35 -0
  39. package/dist/sig/index.d.ts.map +1 -0
  40. package/dist/sig/index.js +171 -0
  41. package/dist/sig/index.js.map +1 -0
  42. package/dist/sig/schnorr_ristretto255.d.ts +28 -0
  43. package/dist/sig/schnorr_ristretto255.d.ts.map +1 -0
  44. package/dist/sig/schnorr_ristretto255.js +135 -0
  45. package/dist/sig/schnorr_ristretto255.js.map +1 -0
  46. package/dist/silent_setup_encryption.d.ts +82 -0
  47. package/dist/silent_setup_encryption.d.ts.map +1 -0
  48. package/dist/silent_setup_encryption.js +285 -0
  49. package/dist/silent_setup_encryption.js.map +1 -0
  50. package/dist/utils.d.ts +9 -0
  51. package/dist/utils.d.ts.map +1 -0
  52. package/dist/utils.js +100 -0
  53. package/dist/utils.js.map +1 -0
  54. package/dist/worker_config.d.ts +17 -0
  55. package/dist/worker_config.d.ts.map +1 -0
  56. package/dist/worker_config.js +84 -0
  57. package/dist/worker_config.js.map +1 -0
  58. package/dist/worker_task.d.ts +15 -0
  59. package/dist/worker_task.d.ts.map +1 -0
  60. package/dist/worker_task.js +59 -0
  61. package/dist/worker_task.js.map +1 -0
  62. package/package.json +35 -0
@@ -0,0 +1,37 @@
1
+ import { Deserializer, Serializer } from "@aptos-labs/ts-sdk";
2
+ import { WeierstrassPoint } from "@noble/curves/abstract/weierstrass";
3
+ import { Fp2 } from "@noble/curves/abstract/tower";
4
+ export declare class MasterPublicKey {
5
+ base: WeierstrassPoint<bigint>;
6
+ publicPointG1: WeierstrassPoint<bigint>;
7
+ constructor(base: WeierstrassPoint<bigint>, publicPointG1: WeierstrassPoint<bigint>);
8
+ static deserialize(deserializer: Deserializer): MasterPublicKey;
9
+ serialize(serializer: Serializer): void;
10
+ }
11
+ export declare class MasterPrivateKey {
12
+ base: WeierstrassPoint<bigint>;
13
+ privateScalar: bigint;
14
+ constructor(base: WeierstrassPoint<bigint>, privateScalar: bigint);
15
+ static deserialize(deserializer: Deserializer): MasterPrivateKey;
16
+ serialize(serializer: Serializer): void;
17
+ }
18
+ export declare class IdentityPrivateKey {
19
+ privatePointG2: WeierstrassPoint<Fp2>;
20
+ constructor(privatePointG2: WeierstrassPoint<Fp2>);
21
+ static deserialize(deserializer: Deserializer): IdentityPrivateKey;
22
+ serialize(serializer: Serializer): void;
23
+ }
24
+ export declare class Ciphertext {
25
+ c0: WeierstrassPoint<bigint>;
26
+ symmetricCiph: Uint8Array;
27
+ mac: Uint8Array;
28
+ constructor(c0: WeierstrassPoint<bigint>, symmetricCiph: Uint8Array, mac: Uint8Array);
29
+ static deserialize(deserializer: Deserializer): Ciphertext;
30
+ serialize(serializer: Serializer): void;
31
+ }
32
+ export declare function keygen(): MasterPrivateKey;
33
+ export declare function derivePublicKey(privateKey: MasterPrivateKey): MasterPublicKey;
34
+ export declare function encrypt(publicKey: MasterPublicKey, id: Uint8Array, plaintext: Uint8Array): Ciphertext;
35
+ export declare function extract(privateKey: MasterPrivateKey, id: Uint8Array): IdentityPrivateKey;
36
+ export declare function decrypt(identityKey: IdentityPrivateKey, ciphertext: Ciphertext): Uint8Array | undefined;
37
+ //# sourceMappingURL=otp_hmac_boneh_franklin_bls12381_short_pk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otp_hmac_boneh_franklin_bls12381_short_pk.d.ts","sourceRoot":"","sources":["../../src/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AASnD,qBAAa,eAAe;IACxB,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAE5B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAKnF,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,eAAe;IAQ/D,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CAI1C;AAED,qBAAa,gBAAgB;IACzB,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM;IAKjE,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,gBAAgB;IAQhE,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CAI1C;AAED,qBAAa,kBAAkB;IAC3B,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAE1B,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC;IAIjD,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB;IAMlE,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CAG1C;AAED,qBAAa,UAAU;IACnB,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,UAAU,CAAC;IAC1B,GAAG,EAAE,UAAU,CAAC;gBAEJ,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU;IAMpF,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU;IAQ1D,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CAK1C;AAED,wBAAgB,MAAM,IAAI,gBAAgB,CAIzC;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,gBAAgB,GAAG,eAAe,CAG7E;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAWrG;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,EAAE,UAAU,GAAG,kBAAkB,CAIxF;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAUvG"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Ciphertext = exports.IdentityPrivateKey = exports.MasterPrivateKey = exports.MasterPublicKey = void 0;
4
+ exports.keygen = keygen;
5
+ exports.derivePublicKey = derivePublicKey;
6
+ exports.encrypt = encrypt;
7
+ exports.extract = extract;
8
+ exports.decrypt = decrypt;
9
+ const bls12_381_1 = require("@noble/curves/bls12-381");
10
+ const utils_1 = require("@noble/hashes/utils");
11
+ const utils_2 = require("@noble/curves/utils");
12
+ const utils_3 = require("../utils");
13
+ const DST_OTP = new TextEncoder().encode("BONEH_FRANKLIN_BLS12381_SHORT_PK/OTP");
14
+ const DST_ID_HASH = new TextEncoder().encode("BONEH_FRANKLIN_BLS12381_SHORT_PK/HASH_ID_TO_CURVE");
15
+ const DST_MAC = new TextEncoder().encode("BONEH_FRANKLIN_BLS12381_SHORT_PK/MAC");
16
+ class MasterPublicKey {
17
+ base;
18
+ publicPointG1;
19
+ constructor(base, publicPointG1) {
20
+ this.base = base;
21
+ this.publicPointG1 = publicPointG1;
22
+ }
23
+ static deserialize(deserializer) {
24
+ const baseBytes = deserializer.deserializeBytes();
25
+ const base = bls12_381_1.bls12_381.G1.Point.fromBytes(baseBytes);
26
+ const publicPointG1Bytes = deserializer.deserializeBytes();
27
+ const publicPointG1 = bls12_381_1.bls12_381.G1.Point.fromBytes(publicPointG1Bytes);
28
+ return new MasterPublicKey(base, publicPointG1);
29
+ }
30
+ serialize(serializer) {
31
+ serializer.serializeBytes(this.base.toBytes());
32
+ serializer.serializeBytes(this.publicPointG1.toBytes());
33
+ }
34
+ }
35
+ exports.MasterPublicKey = MasterPublicKey;
36
+ class MasterPrivateKey {
37
+ base;
38
+ privateScalar;
39
+ constructor(base, privateScalar) {
40
+ this.base = base;
41
+ this.privateScalar = privateScalar;
42
+ }
43
+ static deserialize(deserializer) {
44
+ const baseBytes = deserializer.deserializeBytes();
45
+ const base = bls12_381_1.bls12_381.G1.Point.fromBytes(baseBytes);
46
+ const privateScalarBytes = deserializer.deserializeBytes();
47
+ const privateScalar = BigInt('0x' + Array.from(privateScalarBytes).map(b => b.toString(16).padStart(2, '0')).join(''));
48
+ return new MasterPrivateKey(base, privateScalar);
49
+ }
50
+ serialize(serializer) {
51
+ serializer.serializeBytes(this.base.toBytes());
52
+ serializer.serializeBytes((0, utils_2.numberToBytesBE)(this.privateScalar, 32));
53
+ }
54
+ }
55
+ exports.MasterPrivateKey = MasterPrivateKey;
56
+ class IdentityPrivateKey {
57
+ privatePointG2;
58
+ constructor(privatePointG2) {
59
+ this.privatePointG2 = privatePointG2;
60
+ }
61
+ static deserialize(deserializer) {
62
+ const privatePointG2Bytes = deserializer.deserializeBytes();
63
+ const privatePointG2 = bls12_381_1.bls12_381.G2.Point.fromBytes(privatePointG2Bytes);
64
+ return new IdentityPrivateKey(privatePointG2);
65
+ }
66
+ serialize(serializer) {
67
+ serializer.serializeBytes(this.privatePointG2.toBytes());
68
+ }
69
+ }
70
+ exports.IdentityPrivateKey = IdentityPrivateKey;
71
+ class Ciphertext {
72
+ c0;
73
+ symmetricCiph;
74
+ mac;
75
+ constructor(c0, symmetricCiph, mac) {
76
+ this.c0 = c0;
77
+ this.symmetricCiph = symmetricCiph;
78
+ this.mac = mac;
79
+ }
80
+ static deserialize(deserializer) {
81
+ const c0Bytes = deserializer.deserializeBytes();
82
+ const c0 = bls12_381_1.bls12_381.G1.Point.fromBytes(c0Bytes);
83
+ const symmetricCiph = deserializer.deserializeBytes();
84
+ const mac = deserializer.deserializeBytes();
85
+ return new Ciphertext(c0, symmetricCiph, mac);
86
+ }
87
+ serialize(serializer) {
88
+ serializer.serializeBytes(this.c0.toBytes());
89
+ serializer.serializeBytes(this.symmetricCiph);
90
+ serializer.serializeBytes(this.mac);
91
+ }
92
+ }
93
+ exports.Ciphertext = Ciphertext;
94
+ function keygen() {
95
+ const base = bls12_381_1.bls12_381.G1.hashToCurve((0, utils_1.randomBytes)(32));
96
+ const privateScalar = (0, utils_2.bytesToNumberBE)(bls12_381_1.bls12_381.utils.randomSecretKey());
97
+ return new MasterPrivateKey(base, privateScalar);
98
+ }
99
+ function derivePublicKey(privateKey) {
100
+ const publicPoint = privateKey.base.multiply(privateKey.privateScalar);
101
+ return new MasterPublicKey(privateKey.base, publicPoint);
102
+ }
103
+ function encrypt(publicKey, id, plaintext) {
104
+ const r = (0, utils_2.bytesToNumberBE)(bls12_381_1.bls12_381.utils.randomSecretKey());
105
+ const idPoint = bls12_381_1.bls12_381.G2.hashToCurve(id, { DST: DST_ID_HASH });
106
+ const seedElement = bls12_381_1.bls12_381.pairing(publicKey.publicPointG1.multiply(r), idPoint);
107
+ const seed = bls12_381_1.bls12_381.fields.Fp12.toBytes(seedElement);
108
+ const otp = (0, utils_3.kdf)(seed, DST_OTP, plaintext.length);
109
+ const macKey = (0, utils_3.kdf)(seed, DST_MAC, 32);
110
+ const symmetricCiph = (0, utils_3.xorBytes)(otp, plaintext);
111
+ const mac = (0, utils_3.hmac_sha3_256)(macKey, symmetricCiph);
112
+ const c0 = publicKey.base.multiply(r);
113
+ return new Ciphertext(c0, symmetricCiph, mac);
114
+ }
115
+ function extract(privateKey, id) {
116
+ const idPoint = bls12_381_1.bls12_381.G2.hashToCurve(id, { DST: DST_ID_HASH });
117
+ const privatePointG2 = idPoint.multiply(privateKey.privateScalar);
118
+ return new IdentityPrivateKey(privatePointG2);
119
+ }
120
+ function decrypt(identityKey, ciphertext) {
121
+ const seedElementGt = bls12_381_1.bls12_381.pairing(ciphertext.c0, identityKey.privatePointG2);
122
+ const seed = bls12_381_1.bls12_381.fields.Fp12.toBytes(seedElementGt);
123
+ const macKey = (0, utils_3.kdf)(seed, DST_MAC, 32);
124
+ if (ciphertext.mac != (0, utils_3.hmac_sha3_256)(macKey, ciphertext.symmetricCiph)) {
125
+ return undefined;
126
+ }
127
+ const otp = (0, utils_3.kdf)(seed, DST_OTP, ciphertext.symmetricCiph.length);
128
+ const plaintext = (0, utils_3.xorBytes)(otp, ciphertext.symmetricCiph);
129
+ return plaintext;
130
+ }
131
+ //# sourceMappingURL=otp_hmac_boneh_franklin_bls12381_short_pk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otp_hmac_boneh_franklin_bls12381_short_pk.js","sourceRoot":"","sources":["../../src/ibe/otp_hmac_boneh_franklin_bls12381_short_pk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export * as Group from './group';
2
+ export * as ElGamal from './elgamal';
3
+ export * as Utils from './utils';
4
+ export * as WorkerConfig from './worker_config';
5
+ export { WorkerTask } from './worker_task';
6
+ export * as SilentSetupEncryption from './silent_setup_encryption';
7
+ export * as Enc from './enc';
8
+ export * as Sig from './sig';
9
+ export * as IBE from './ibe';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,qBAAqB,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.IBE = exports.Sig = exports.Enc = exports.SilentSetupEncryption = exports.WorkerTask = exports.WorkerConfig = exports.Utils = exports.ElGamal = exports.Group = void 0;
37
+ exports.Group = __importStar(require("./group"));
38
+ exports.ElGamal = __importStar(require("./elgamal"));
39
+ exports.Utils = __importStar(require("./utils"));
40
+ exports.WorkerConfig = __importStar(require("./worker_config"));
41
+ var worker_task_1 = require("./worker_task");
42
+ Object.defineProperty(exports, "WorkerTask", { enumerable: true, get: function () { return worker_task_1.WorkerTask; } });
43
+ exports.SilentSetupEncryption = __importStar(require("./silent_setup_encryption"));
44
+ exports.Enc = __importStar(require("./enc"));
45
+ exports.Sig = __importStar(require("./sig"));
46
+ exports.IBE = __importStar(require("./ibe"));
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiC;AACjC,qDAAqC;AACrC,iDAAiC;AACjC,gEAAgD;AAChD,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mFAAmE;AACnE,6CAA6B;AAC7B,6CAA6B;AAC7B,6CAA6B"}
@@ -0,0 +1,61 @@
1
+ import { Deserializer, Serializer } from "@aptos-labs/ts-sdk";
2
+ export declare class GF256 {
3
+ value: number;
4
+ constructor(value: number);
5
+ log(): number;
6
+ static exp(x: number): GF256;
7
+ add(other: GF256): GF256;
8
+ sub(other: GF256): GF256;
9
+ neg(): GF256;
10
+ mul(other: GF256): GF256;
11
+ div(other: GF256): GF256;
12
+ equals(other: GF256): boolean;
13
+ static zero(): GF256;
14
+ static one(): GF256;
15
+ }
16
+ export declare class Polynomial {
17
+ coefficients: GF256[];
18
+ /**
19
+ * Construct a new Polynomial over [GF256] from the given coefficients.
20
+ * The first coefficient is the constant term.
21
+ */
22
+ constructor(coefficients: GF256[]);
23
+ static fromBytes(bytes: Uint8Array): Polynomial;
24
+ degree(): number;
25
+ getCoefficient(index: number): GF256;
26
+ add(other: Polynomial): Polynomial;
27
+ mul(other: Polynomial): Polynomial;
28
+ /** The polynomial s * this. */
29
+ scale(s: GF256): Polynomial;
30
+ div(s: GF256): Polynomial;
31
+ /** The polynomial x + c. */
32
+ static monic_linear(c: GF256): Polynomial;
33
+ static zero(): Polynomial;
34
+ static one(): Polynomial;
35
+ /** Given a set of coordinates, interpolate a polynomial. */
36
+ static interpolate(coordinates: {
37
+ x: GF256;
38
+ y: GF256;
39
+ }[]): Polynomial;
40
+ /** Given a set of coordinates, interpolate a polynomial and evaluate it at x = 0. */
41
+ static combine(coordinates: {
42
+ x: GF256;
43
+ y: GF256;
44
+ }[]): GF256;
45
+ /** Evaluate the polynomial at x. */
46
+ evaluate(x: GF256): GF256;
47
+ equals(other: Polynomial): boolean;
48
+ }
49
+ /** Representation of a share of a secret. The index is a number between 1 and 255. */
50
+ export declare class Share {
51
+ index: number;
52
+ payload: Uint8Array;
53
+ constructor(index: number, payload: Uint8Array);
54
+ deserialize(deserializer: Deserializer): void;
55
+ static fromBytes(bytes: Uint8Array): Share;
56
+ serialize(serializer: Serializer): void;
57
+ toBytes(): Uint8Array;
58
+ }
59
+ export declare function split(secret: Uint8Array, threshold: number, total: number): Share[];
60
+ export declare function combine(shares: Share[]): Uint8Array;
61
+ //# sourceMappingURL=shamir_gf256.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shamir_gf256.d.ts","sourceRoot":"","sources":["../src/shamir_gf256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAa9D,qBAAa,KAAK;IACjB,KAAK,EAAE,MAAM,CAAC;gBAEF,KAAK,EAAE,MAAM;IAOzB,GAAG,IAAI,MAAM;IAOb,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK;IAI5B,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIxB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAKxB,GAAG,IAAI,KAAK;IAKZ,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAOxB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIxB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAI7B,MAAM,CAAC,IAAI,IAAI,KAAK;IAIpB,MAAM,CAAC,GAAG,IAAI,KAAK;CAGnB;AA0CD,qBAAa,UAAU;IACtB,YAAY,EAAE,KAAK,EAAE,CAAC;IAEtB;;;OAGG;gBACS,YAAY,EAAE,KAAK,EAAE;IAYjC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAI/C,MAAM,IAAI,MAAM;IAOhB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IAOpC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IASlC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAelC,+BAA+B;IAC/B,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU;IAI3B,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU;IAIzB,4BAA4B;IAC5B,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU;IAIzC,MAAM,CAAC,IAAI,IAAI,UAAU;IAIzB,MAAM,CAAC,GAAG,IAAI,UAAU;IAIxB,4DAA4D;IAC5D,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE;QAAE,CAAC,EAAE,KAAK,CAAC;QAAC,CAAC,EAAE,KAAK,CAAA;KAAE,EAAE,GAAG,UAAU;IAyBrE,qFAAqF;IACrF,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;QAAE,CAAC,EAAE,KAAK,CAAC;QAAC,CAAC,EAAE,KAAK,CAAA;KAAE,EAAE,GAAG,KAAK;IA8B5D,oCAAoC;IACpC,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK;IAMzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;CAMlC;AAKD,sFAAsF;AACtF,qBAAa,KAAK;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,CAAC;gBAER,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAK3C,WAAW,CAAC,YAAY,EAAE,YAAY;IAKtC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK;IAO1C,SAAS,CAAC,UAAU,EAAE,UAAU;IAKnC,OAAO,IAAI,UAAU;CAKrB;AA2BD,wBAAgB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAYnF;AAqBD,wBAAgB,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAenD"}
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Share = exports.Polynomial = exports.GF256 = void 0;
4
+ exports.split = split;
5
+ exports.combine = combine;
6
+ const ts_sdk_1 = require("@aptos-labs/ts-sdk");
7
+ function hasDuplicates(array) {
8
+ return new Set(array).size !== array.length;
9
+ }
10
+ function allEqual(array) {
11
+ if (array.length === 0) {
12
+ return true;
13
+ }
14
+ return array.every((item) => item === array[0]);
15
+ }
16
+ class GF256 {
17
+ value;
18
+ constructor(value) {
19
+ if (value < 0 || value >= GF256_SIZE) {
20
+ throw new Error(`Invalid value ${value} for GF256`);
21
+ }
22
+ this.value = value;
23
+ }
24
+ log() {
25
+ if (this.value === 0) {
26
+ throw new Error('Invalid value');
27
+ }
28
+ return LOG[this.value - 1];
29
+ }
30
+ static exp(x) {
31
+ return new GF256(EXP[x % (GF256_SIZE - 1)]);
32
+ }
33
+ add(other) {
34
+ return new GF256(this.value ^ other.value);
35
+ }
36
+ sub(other) {
37
+ // Addition is the same as subtraction in a binary field.
38
+ return this.add(other);
39
+ }
40
+ neg() {
41
+ // Negation doesn't change the value in a binary field.
42
+ return this;
43
+ }
44
+ mul(other) {
45
+ if (this.value === 0 || other.value === 0) {
46
+ return new GF256(0);
47
+ }
48
+ return GF256.exp(this.log() + other.log());
49
+ }
50
+ div(other) {
51
+ return this.mul(GF256.exp(GF256_SIZE - other.log() - 1));
52
+ }
53
+ equals(other) {
54
+ return this.value === other.value;
55
+ }
56
+ static zero() {
57
+ return new GF256(0);
58
+ }
59
+ static one() {
60
+ return new GF256(1);
61
+ }
62
+ }
63
+ exports.GF256 = GF256;
64
+ /// Table of Eᵢ = gⁱ where g = 0x03 generates the multiplicative group of the field.
65
+ const EXP = [
66
+ 0x01, 0x03, 0x05, 0x0f, 0x11, 0x33, 0x55, 0xff, 0x1a, 0x2e, 0x72, 0x96, 0xa1, 0xf8, 0x13, 0x35,
67
+ 0x5f, 0xe1, 0x38, 0x48, 0xd8, 0x73, 0x95, 0xa4, 0xf7, 0x02, 0x06, 0x0a, 0x1e, 0x22, 0x66, 0xaa,
68
+ 0xe5, 0x34, 0x5c, 0xe4, 0x37, 0x59, 0xeb, 0x26, 0x6a, 0xbe, 0xd9, 0x70, 0x90, 0xab, 0xe6, 0x31,
69
+ 0x53, 0xf5, 0x04, 0x0c, 0x14, 0x3c, 0x44, 0xcc, 0x4f, 0xd1, 0x68, 0xb8, 0xd3, 0x6e, 0xb2, 0xcd,
70
+ 0x4c, 0xd4, 0x67, 0xa9, 0xe0, 0x3b, 0x4d, 0xd7, 0x62, 0xa6, 0xf1, 0x08, 0x18, 0x28, 0x78, 0x88,
71
+ 0x83, 0x9e, 0xb9, 0xd0, 0x6b, 0xbd, 0xdc, 0x7f, 0x81, 0x98, 0xb3, 0xce, 0x49, 0xdb, 0x76, 0x9a,
72
+ 0xb5, 0xc4, 0x57, 0xf9, 0x10, 0x30, 0x50, 0xf0, 0x0b, 0x1d, 0x27, 0x69, 0xbb, 0xd6, 0x61, 0xa3,
73
+ 0xfe, 0x19, 0x2b, 0x7d, 0x87, 0x92, 0xad, 0xec, 0x2f, 0x71, 0x93, 0xae, 0xe9, 0x20, 0x60, 0xa0,
74
+ 0xfb, 0x16, 0x3a, 0x4e, 0xd2, 0x6d, 0xb7, 0xc2, 0x5d, 0xe7, 0x32, 0x56, 0xfa, 0x15, 0x3f, 0x41,
75
+ 0xc3, 0x5e, 0xe2, 0x3d, 0x47, 0xc9, 0x40, 0xc0, 0x5b, 0xed, 0x2c, 0x74, 0x9c, 0xbf, 0xda, 0x75,
76
+ 0x9f, 0xba, 0xd5, 0x64, 0xac, 0xef, 0x2a, 0x7e, 0x82, 0x9d, 0xbc, 0xdf, 0x7a, 0x8e, 0x89, 0x80,
77
+ 0x9b, 0xb6, 0xc1, 0x58, 0xe8, 0x23, 0x65, 0xaf, 0xea, 0x25, 0x6f, 0xb1, 0xc8, 0x43, 0xc5, 0x54,
78
+ 0xfc, 0x1f, 0x21, 0x63, 0xa5, 0xf4, 0x07, 0x09, 0x1b, 0x2d, 0x77, 0x99, 0xb0, 0xcb, 0x46, 0xca,
79
+ 0x45, 0xcf, 0x4a, 0xde, 0x79, 0x8b, 0x86, 0x91, 0xa8, 0xe3, 0x3e, 0x42, 0xc6, 0x51, 0xf3, 0x0e,
80
+ 0x12, 0x36, 0x5a, 0xee, 0x29, 0x7b, 0x8d, 0x8c, 0x8f, 0x8a, 0x85, 0x94, 0xa7, 0xf2, 0x0d, 0x17,
81
+ 0x39, 0x4b, 0xdd, 0x7c, 0x84, 0x97, 0xa2, 0xfd, 0x1c, 0x24, 0x6c, 0xb4, 0xc7, 0x52, 0xf6,
82
+ ];
83
+ /// Table of Lᵢ = LOG[i + 1] such that g^Lᵢ = i where g = 0x03.
84
+ const LOG = [
85
+ 0x00, 0x19, 0x01, 0x32, 0x02, 0x1a, 0xc6, 0x4b, 0xc7, 0x1b, 0x68, 0x33, 0xee, 0xdf, 0x03, 0x64,
86
+ 0x04, 0xe0, 0x0e, 0x34, 0x8d, 0x81, 0xef, 0x4c, 0x71, 0x08, 0xc8, 0xf8, 0x69, 0x1c, 0xc1, 0x7d,
87
+ 0xc2, 0x1d, 0xb5, 0xf9, 0xb9, 0x27, 0x6a, 0x4d, 0xe4, 0xa6, 0x72, 0x9a, 0xc9, 0x09, 0x78, 0x65,
88
+ 0x2f, 0x8a, 0x05, 0x21, 0x0f, 0xe1, 0x24, 0x12, 0xf0, 0x82, 0x45, 0x35, 0x93, 0xda, 0x8e, 0x96,
89
+ 0x8f, 0xdb, 0xbd, 0x36, 0xd0, 0xce, 0x94, 0x13, 0x5c, 0xd2, 0xf1, 0x40, 0x46, 0x83, 0x38, 0x66,
90
+ 0xdd, 0xfd, 0x30, 0xbf, 0x06, 0x8b, 0x62, 0xb3, 0x25, 0xe2, 0x98, 0x22, 0x88, 0x91, 0x10, 0x7e,
91
+ 0x6e, 0x48, 0xc3, 0xa3, 0xb6, 0x1e, 0x42, 0x3a, 0x6b, 0x28, 0x54, 0xfa, 0x85, 0x3d, 0xba, 0x2b,
92
+ 0x79, 0x0a, 0x15, 0x9b, 0x9f, 0x5e, 0xca, 0x4e, 0xd4, 0xac, 0xe5, 0xf3, 0x73, 0xa7, 0x57, 0xaf,
93
+ 0x58, 0xa8, 0x50, 0xf4, 0xea, 0xd6, 0x74, 0x4f, 0xae, 0xe9, 0xd5, 0xe7, 0xe6, 0xad, 0xe8, 0x2c,
94
+ 0xd7, 0x75, 0x7a, 0xeb, 0x16, 0x0b, 0xf5, 0x59, 0xcb, 0x5f, 0xb0, 0x9c, 0xa9, 0x51, 0xa0, 0x7f,
95
+ 0x0c, 0xf6, 0x6f, 0x17, 0xc4, 0x49, 0xec, 0xd8, 0x43, 0x1f, 0x2d, 0xa4, 0x76, 0x7b, 0xb7, 0xcc,
96
+ 0xbb, 0x3e, 0x5a, 0xfb, 0x60, 0xb1, 0x86, 0x3b, 0x52, 0xa1, 0x6c, 0xaa, 0x55, 0x29, 0x9d, 0x97,
97
+ 0xb2, 0x87, 0x90, 0x61, 0xbe, 0xdc, 0xfc, 0xbc, 0x95, 0xcf, 0xcd, 0x37, 0x3f, 0x5b, 0xd1, 0x53,
98
+ 0x39, 0x84, 0x3c, 0x41, 0xa2, 0x6d, 0x47, 0x14, 0x2a, 0x9e, 0x5d, 0x56, 0xf2, 0xd3, 0xab, 0x44,
99
+ 0x11, 0x92, 0xd9, 0x23, 0x20, 0x2e, 0x89, 0xb4, 0x7c, 0xb8, 0x26, 0x77, 0x99, 0xe3, 0xa5, 0x67,
100
+ 0x4a, 0xed, 0xde, 0xc5, 0x31, 0xfe, 0x18, 0x0d, 0x63, 0x8c, 0x80, 0xc0, 0xf7, 0x70, 0x07,
101
+ ];
102
+ class Polynomial {
103
+ coefficients;
104
+ /**
105
+ * Construct a new Polynomial over [GF256] from the given coefficients.
106
+ * The first coefficient is the constant term.
107
+ */
108
+ constructor(coefficients) {
109
+ this.coefficients = coefficients.slice();
110
+ // The highest degree coefficient is always non-zero.
111
+ while (this.coefficients.length > 0 &&
112
+ this.coefficients[this.coefficients.length - 1].value === 0) {
113
+ this.coefficients.pop();
114
+ }
115
+ }
116
+ static fromBytes(bytes) {
117
+ return new Polynomial(Array.from(bytes, (b) => new GF256(b)));
118
+ }
119
+ degree() {
120
+ if (this.coefficients.length === 0) {
121
+ return 0;
122
+ }
123
+ return this.coefficients.length - 1;
124
+ }
125
+ getCoefficient(index) {
126
+ if (index >= this.coefficients.length) {
127
+ return GF256.zero();
128
+ }
129
+ return this.coefficients[index];
130
+ }
131
+ add(other) {
132
+ const degree = Math.max(this.degree(), other.degree());
133
+ return new Polynomial(Array.from({ length: degree + 1 }, (_, i) => this.getCoefficient(i).add(other.getCoefficient(i))));
134
+ }
135
+ mul(other) {
136
+ const degree = this.degree() + other.degree();
137
+ return new Polynomial(Array.from({ length: degree + 1 }, (_, i) => {
138
+ let sum = GF256.zero();
139
+ for (let j = 0; j <= i; j++) {
140
+ if (j <= this.degree() && i - j <= other.degree()) {
141
+ sum = sum.add(this.getCoefficient(j).mul(other.getCoefficient(i - j)));
142
+ }
143
+ }
144
+ return sum;
145
+ }));
146
+ }
147
+ /** The polynomial s * this. */
148
+ scale(s) {
149
+ return new Polynomial(this.coefficients.map((c) => c.mul(s)));
150
+ }
151
+ div(s) {
152
+ return this.scale(new GF256(1).div(s));
153
+ }
154
+ /** The polynomial x + c. */
155
+ static monic_linear(c) {
156
+ return new Polynomial([c, GF256.one()]);
157
+ }
158
+ static zero() {
159
+ return new Polynomial([]);
160
+ }
161
+ static one() {
162
+ return new Polynomial([GF256.one()]);
163
+ }
164
+ /** Given a set of coordinates, interpolate a polynomial. */
165
+ static interpolate(coordinates) {
166
+ if (coordinates.length < 1) {
167
+ throw new Error('At least one coefficient is required');
168
+ }
169
+ if (hasDuplicates(coordinates.map(({ x }) => x.value))) {
170
+ throw new Error('Coefficients must have unique x values');
171
+ }
172
+ return coordinates.reduce((sum, { x: x_j, y: y_j }, j) => sum.add(coordinates
173
+ .filter((_, i) => i !== j)
174
+ .reduce((product, { x: x_i }) => product.mul(Polynomial.monic_linear(x_i.neg()).div(x_j.sub(x_i))), Polynomial.one())
175
+ .scale(y_j)), Polynomial.zero());
176
+ }
177
+ /** Given a set of coordinates, interpolate a polynomial and evaluate it at x = 0. */
178
+ static combine(coordinates) {
179
+ if (coordinates.length < 1) {
180
+ throw new Error('At least one coefficient is required');
181
+ }
182
+ // Check for duplicate x values more thoroughly
183
+ const xValues = coordinates.map(({ x }) => x.value);
184
+ if (hasDuplicates(xValues)) {
185
+ throw new Error(`Coefficients must have unique x values. Found duplicates: ${xValues.join(', ')}`);
186
+ }
187
+ const quotient = coordinates.reduce((sum, { x: x_j, y: y_j }, j) => {
188
+ const denominator = x_j.mul(coordinates
189
+ .filter((_, i) => i !== j)
190
+ .reduce((product, { x: x_i }) => {
191
+ const diff = x_i.sub(x_j);
192
+ if (diff.value === 0) {
193
+ throw new Error(`Duplicate x values detected: x_i=${x_i.value}, x_j=${x_j.value}`);
194
+ }
195
+ return product.mul(diff);
196
+ }, GF256.one()));
197
+ return sum.add(y_j.div(denominator));
198
+ }, GF256.zero());
199
+ const xProduct = coordinates.reduce((product, { x }) => product.mul(x), GF256.one());
200
+ return xProduct.mul(quotient);
201
+ }
202
+ /** Evaluate the polynomial at x. */
203
+ evaluate(x) {
204
+ return this.coefficients
205
+ .slice().reverse()
206
+ .reduce((sum, coefficient) => sum.mul(x).add(coefficient), GF256.zero());
207
+ }
208
+ equals(other) {
209
+ if (this.coefficients.length !== other.coefficients.length) {
210
+ return false;
211
+ }
212
+ return this.coefficients.every((c, i) => c.equals(other.getCoefficient(i)));
213
+ }
214
+ }
215
+ exports.Polynomial = Polynomial;
216
+ const GF256_SIZE = 256;
217
+ /** Representation of a share of a secret. The index is a number between 1 and 255. */
218
+ class Share {
219
+ index;
220
+ payload;
221
+ constructor(index, payload) {
222
+ this.index = index;
223
+ this.payload = payload;
224
+ }
225
+ deserialize(deserializer) {
226
+ this.index = deserializer.deserializeU8();
227
+ this.payload = deserializer.deserializeBytes();
228
+ }
229
+ static fromBytes(bytes) {
230
+ const deserializer = new ts_sdk_1.Deserializer(bytes);
231
+ const share = new Share(0, new Uint8Array());
232
+ share.deserialize(deserializer);
233
+ return share;
234
+ }
235
+ serialize(serializer) {
236
+ serializer.serializeU8(this.index);
237
+ serializer.serializeBytes(this.payload);
238
+ }
239
+ toBytes() {
240
+ const serializer = new ts_sdk_1.Serializer();
241
+ this.serialize(serializer);
242
+ return serializer.toUint8Array();
243
+ }
244
+ }
245
+ exports.Share = Share;
246
+ ;
247
+ function toInternalShare(share) {
248
+ return {
249
+ index: new GF256(share.index),
250
+ payload: Array.from(share.payload, (byte) => new GF256(byte)),
251
+ };
252
+ }
253
+ function toShare(internalShare) {
254
+ return new Share(internalShare.index.value, new Uint8Array(internalShare.payload.map((byte) => byte.value)));
255
+ }
256
+ function samplePolynomial(constant, degree) {
257
+ const randomCoefficients = new Uint8Array(degree);
258
+ crypto.getRandomValues(randomCoefficients);
259
+ // The resulting polynomial has degree + 1 coefficients.
260
+ return Polynomial.fromBytes(new Uint8Array([constant.value, ...randomCoefficients]));
261
+ }
262
+ function split(secret, threshold, total) {
263
+ if (threshold > total || threshold < 1 || total > GF256_SIZE) {
264
+ throw new Error(`Invalid threshold ${threshold} or total ${total}`);
265
+ }
266
+ const polynomials = Array.from(secret, (s) => samplePolynomial(new GF256(s), threshold - 1));
267
+ return Array.from({ length: total }, (_, i) => {
268
+ // Indexes start at 1 because 0 is reserved for the constant term (which is also the secret).
269
+ const index = new GF256(i + 1);
270
+ const payload = polynomials.map((p) => p.evaluate(index));
271
+ return toShare({ index, payload });
272
+ });
273
+ }
274
+ function validateShares(shares) {
275
+ if (shares.length < 1) {
276
+ throw new Error('At least one share is required');
277
+ }
278
+ if (!allEqual(shares.map(({ payload }) => payload.length))) {
279
+ throw new Error('All shares must have the same length');
280
+ }
281
+ if (hasDuplicates(shares.map(({ index }) => index))) {
282
+ throw new Error('Shares must have unique indices');
283
+ }
284
+ const internalShares = shares.map(toInternalShare);
285
+ const length = internalShares[0].payload.length;
286
+ return { internalShares, length };
287
+ }
288
+ function combine(shares) {
289
+ const { internalShares, length } = validateShares(shares);
290
+ return new Uint8Array(Array.from({ length }, (_, i) => Polynomial.combine(internalShares.map(({ index, payload }) => ({
291
+ x: index,
292
+ y: payload[i],
293
+ }))).value));
294
+ }
295
+ //# sourceMappingURL=shamir_gf256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shamir_gf256.js","sourceRoot":"","sources":["../src/shamir_gf256.ts"],"names":[],"mappings":"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AAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACxF,CAAC;AAEF,+DAA+D;AAC/D,MAAM,GAAG,GAAa;IACrB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9F,IAAI,EAAE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"}