@bitgo-beta/abstract-eth 1.2.3-alpha.384 → 1.2.3-alpha.385

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 (43) hide show
  1. package/dist/src/lib/messages/eip712/eip712Message.d.ts +6 -0
  2. package/dist/src/lib/messages/eip712/eip712Message.d.ts.map +1 -0
  3. package/dist/src/lib/messages/eip712/eip712Message.js +27 -0
  4. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts +7 -0
  5. package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/messages/eip712/eip712MessageBuilder.js +15 -0
  7. package/dist/src/lib/messages/eip712/index.d.ts +3 -0
  8. package/dist/src/lib/messages/eip712/index.d.ts.map +1 -0
  9. package/dist/src/lib/messages/eip712/index.js +19 -0
  10. package/dist/src/lib/messages/index.d.ts +1 -0
  11. package/dist/src/lib/messages/index.d.ts.map +1 -1
  12. package/dist/src/lib/messages/index.js +2 -1
  13. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -1
  14. package/dist/src/lib/messages/messageBuilderFactory.js +4 -1
  15. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts +3 -0
  16. package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts.map +1 -0
  17. package/dist/test/unit/messages/abstractEthMessageBuilderTests.js +110 -0
  18. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts +43 -0
  19. package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts.map +1 -0
  20. package/dist/test/unit/messages/abstractEthMessageTestTypes.js +3 -0
  21. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts +3 -0
  22. package/dist/test/unit/messages/abstractEthMessagesTests.d.ts.map +1 -0
  23. package/dist/test/unit/messages/abstractEthMessagesTests.js +129 -0
  24. package/dist/test/unit/messages/eip191/eip191Message.js +7 -129
  25. package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +9 -109
  26. package/dist/test/unit/messages/eip191/fixtures.d.ts +109 -0
  27. package/dist/test/unit/messages/eip191/fixtures.d.ts.map +1 -0
  28. package/dist/test/unit/messages/eip191/fixtures.js +63 -0
  29. package/dist/test/unit/messages/eip712/eip712Message.d.ts +2 -0
  30. package/dist/test/unit/messages/eip712/eip712Message.d.ts.map +1 -0
  31. package/dist/test/unit/messages/eip712/eip712Message.js +15 -0
  32. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts +2 -0
  33. package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
  34. package/dist/test/unit/messages/eip712/eip712MessageBuilder.js +16 -0
  35. package/dist/test/unit/messages/eip712/fixtures.d.ts +76 -0
  36. package/dist/test/unit/messages/eip712/fixtures.d.ts.map +1 -0
  37. package/dist/test/unit/messages/eip712/fixtures.js +120 -0
  38. package/dist/test/unit/messages/messageBuilderFactory.js +25 -17
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +7 -7
  41. package/dist/test/unit/messages/fixtures.d.ts +0 -24
  42. package/dist/test/unit/messages/fixtures.d.ts.map +0 -1
  43. package/dist/test/unit/messages/fixtures.js +0 -28
@@ -1,137 +1,15 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  require("should");
7
- const sinon_1 = __importDefault(require("sinon"));
8
4
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
- const fixtures_1 = require("../fixtures");
5
+ const fixtures_1 = require("./fixtures");
10
6
  const src_1 = require("../../../../src");
7
+ const abstractEthMessagesTests_1 = require("../abstractEthMessagesTests");
11
8
  describe('EIP191 Message', () => {
12
- const sandbox = sinon_1.default.createSandbox();
13
- afterEach(() => {
14
- sandbox.restore();
15
- });
16
- it('should initialize with the correct type', () => {
17
- const message = new src_1.EIP191Message({
18
- coinConfig: fixtures_1.fixtures.coin,
19
- payload: fixtures_1.fixtures.messages.validMessage,
20
- });
21
- message.getType().should.equal(sdk_core_1.MessageStandardType.EIP191);
22
- });
23
- it('should generate the correct signable payload with Ethereum prefix', async () => {
24
- const message = new src_1.EIP191Message({
25
- coinConfig: fixtures_1.fixtures.coin,
26
- payload: fixtures_1.fixtures.messages.validMessage,
27
- });
28
- const signablePayload = await message.getSignablePayload();
29
- // Message is prefixed with "\u0019Ethereum Signed Message:\n<length><message>"
30
- const expectedPrefix = `\u0019Ethereum Signed Message:\n${fixtures_1.fixtures.messages.validMessage.length}`;
31
- const expectedPayload = Buffer.from(expectedPrefix.concat(fixtures_1.fixtures.messages.validMessage)).toString('hex');
32
- signablePayload.should.equal(expectedPayload);
33
- });
34
- it('should handle empty messages correctly', async () => {
35
- const message = new src_1.EIP191Message({
36
- coinConfig: fixtures_1.fixtures.coin,
37
- payload: fixtures_1.fixtures.messages.emptyMessage,
38
- });
39
- const signablePayload = await message.getSignablePayload();
40
- // Empty message has length 0
41
- const expectedPrefix = `\u0019Ethereum Signed Message:\n0`;
42
- const expectedPayload = Buffer.from(expectedPrefix.concat('')).toString('hex');
43
- signablePayload.should.equal(expectedPayload);
44
- });
45
- it('should handle messages with special characters', async () => {
46
- const message = new src_1.EIP191Message({
47
- coinConfig: fixtures_1.fixtures.coin,
48
- payload: fixtures_1.fixtures.messages.specialCharsMessage,
49
- });
50
- const signablePayload = await message.getSignablePayload();
51
- const expectedPrefix = `\u0019Ethereum Signed Message:\n${fixtures_1.fixtures.messages.specialCharsMessage.length}`;
52
- const expectedPayload = Buffer.from(expectedPrefix.concat(fixtures_1.fixtures.messages.specialCharsMessage)).toString('hex');
53
- signablePayload.should.equal(expectedPayload);
54
- });
55
- it('should maintain signatures and signers correctly', () => {
56
- const message = new src_1.EIP191Message({
57
- coinConfig: fixtures_1.fixtures.coin,
58
- payload: fixtures_1.fixtures.messages.validMessage,
59
- signatures: [fixtures_1.fixtures.eip191.signature],
60
- signers: [fixtures_1.fixtures.eip191.signer],
61
- });
62
- message.getSignatures().should.containEql(fixtures_1.fixtures.eip191.signature);
63
- message.getSigners().should.containEql(fixtures_1.fixtures.eip191.signer);
64
- // Test adding new ones
65
- message.addSignature({
66
- publicKey: { pub: 'pub1' },
67
- signature: Buffer.from('new-signature'),
68
- });
69
- message.addSigner('new-signer');
70
- message.getSignatures().should.containEql({
71
- publicKey: { pub: 'pub1' },
72
- signature: Buffer.from('new-signature'),
73
- });
74
- message.getSigners().should.containEql('new-signer');
75
- // Test replacing all
76
- message.setSignatures([
77
- {
78
- publicKey: { pub: 'pub2' },
79
- signature: Buffer.from('replaced-signature'),
80
- },
81
- ]);
82
- message.setSigners(['replaced-signer']);
83
- message.getSignatures().should.deepEqual([
84
- {
85
- publicKey: { pub: 'pub2' },
86
- signature: Buffer.from('replaced-signature'),
87
- },
88
- ]);
89
- message.getSigners().should.deepEqual(['replaced-signer']);
90
- });
91
- it('should store and retrieve metadata correctly', () => {
92
- const message = new src_1.EIP191Message({
93
- coinConfig: fixtures_1.fixtures.coin,
94
- payload: fixtures_1.fixtures.messages.validMessage,
95
- metadata: fixtures_1.fixtures.eip191.metadata,
96
- });
97
- message.getMetadata().should.deepEqual(fixtures_1.fixtures.eip191.metadata);
98
- });
99
- describe('Broadcast Format', () => {
100
- it('should convert to broadcast format correctly', async () => {
101
- const message = new src_1.EIP191Message({
102
- coinConfig: fixtures_1.fixtures.coin,
103
- payload: fixtures_1.fixtures.messages.validMessage,
104
- signatures: [fixtures_1.fixtures.eip191.signature],
105
- signers: [fixtures_1.fixtures.eip191.signer],
106
- metadata: fixtures_1.fixtures.eip191.metadata,
107
- });
108
- const broadcastFormat = await message.toBroadcastFormat();
109
- const expectedSerializedSignatures = (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]);
110
- broadcastFormat.type.should.equal(sdk_core_1.MessageStandardType.EIP191);
111
- broadcastFormat.payload.should.equal(fixtures_1.fixtures.messages.validMessage);
112
- broadcastFormat.serializedSignatures?.should.deepEqual(expectedSerializedSignatures);
113
- broadcastFormat.signers?.should.deepEqual([fixtures_1.fixtures.eip191.signer]);
114
- broadcastFormat.metadata.should.deepEqual(fixtures_1.fixtures.eip191.metadata);
115
- broadcastFormat.signablePayload.should.equal('MTk0NTc0Njg2NTcyNjU3NTZkMjA1MzY5Njc2ZTY1NjQyMDRkNjU3MzczNjE2NzY1M2EwYTMxMzM0ODY1NmM2YzZmMmMyMDc3NmY3MjZjNjQyMQ==');
116
- });
117
- it('should convert to broadcast string correctly', async () => {
118
- const message = new src_1.EIP191Message({
119
- coinConfig: fixtures_1.fixtures.coin,
120
- payload: fixtures_1.fixtures.messages.validMessage,
121
- signatures: [fixtures_1.fixtures.eip191.signature],
122
- signers: [fixtures_1.fixtures.eip191.signer],
123
- metadata: fixtures_1.fixtures.eip191.metadata,
124
- });
125
- const broadcastHex = await message.toBroadcastString();
126
- const broadcastString = Buffer.from(broadcastHex, 'hex').toString();
127
- const parsedBroadcast = JSON.parse(broadcastString);
128
- const expectedSerializedSignatures = (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]);
129
- parsedBroadcast.type.should.equal(sdk_core_1.MessageStandardType.EIP191);
130
- parsedBroadcast.payload.should.equal(fixtures_1.fixtures.messages.validMessage);
131
- parsedBroadcast.serializedSignatures.should.deepEqual(expectedSerializedSignatures);
132
- parsedBroadcast.signers.should.deepEqual([fixtures_1.fixtures.eip191.signer]);
133
- parsedBroadcast.metadata.should.deepEqual(fixtures_1.fixtures.eip191.metadata);
134
- });
9
+ (0, abstractEthMessagesTests_1.testEthMessageSigning)({
10
+ messageType: sdk_core_1.MessageStandardType.EIP191,
11
+ messageClass: src_1.EIP191Message,
12
+ ...fixtures_1.fixtures,
135
13
  });
136
14
  });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwMTkxTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9tZXNzYWdlcy9laXAxOTEvZWlwMTkxTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtCQUFnQjtBQUNoQixrREFBMEI7QUFDMUIsbURBQWdGO0FBQ2hGLDBDQUF1QztBQUN2Qyx5Q0FBZ0Q7QUFFaEQsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFFdEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBYSxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxtQkFBUSxDQUFDLElBQUk7WUFDekIsT0FBTyxFQUFFLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVk7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBYSxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxtQkFBUSxDQUFDLElBQUk7WUFDekIsT0FBTyxFQUFFLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVk7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzRCwrRUFBK0U7UUFDL0UsTUFBTSxjQUFjLEdBQUcsbUNB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QUMsS0FBSyxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JFLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDcEYsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNuRSxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUJBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IE1lc3NhZ2VTdGFuZGFyZFR5cGUsIHNlcmlhbGl6ZVNpZ25hdHVyZXMgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBmaXh0dXJlcyB9IGZyb20gJy4uL2ZpeHR1cmVzJztcbmltcG9ydCB7IEVJUDE5MU1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnRUlQMTkxIE1lc3NhZ2UnLCAoKSA9PiB7XG4gIGNvbnN0IHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIHdpdGggdGhlIGNvcnJlY3QgdHlwZScsICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgIHBheWxvYWQ6IGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSxcbiAgICB9KTtcblxuICAgIG1lc3NhZ2UuZ2V0VHlwZSgpLnNob3VsZC5lcXVhbChNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgc2lnbmFibGUgcGF5bG9hZCB3aXRoIEV0aGVyZXVtIHByZWZpeCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgIHBheWxvYWQ6IGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IGF3YWl0IG1lc3NhZ2UuZ2V0U2lnbmFibGVQYXlsb2FkKCk7XG4gICAgLy8gTWVzc2FnZSBpcyBwcmVmaXhlZCB3aXRoIFwiXFx1MDAxOUV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOlxcbjxsZW5ndGg+PG1lc3NhZ2U+XCJcbiAgICBjb25zdCBleHBlY3RlZFByZWZpeCA9IGBcXHUwMDE5RXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6XFxuJHtmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UubGVuZ3RofWA7XG4gICAgY29uc3QgZXhwZWN0ZWRQYXlsb2FkID0gQnVmZmVyLmZyb20oZXhwZWN0ZWRQcmVmaXguY29uY2F0KGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSkpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHNpZ25hYmxlUGF5bG9hZC5zaG91bGQuZXF1YWwoZXhwZWN0ZWRQYXlsb2FkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgbWVzc2FnZXMgY29ycmVjdGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgRUlQMTkxTWVzc2FnZSh7XG4gICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMuZW1wdHlNZXNzYWdlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2lnbmFibGVQYXlsb2FkID0gYXdhaXQgbWVzc2FnZS5nZXRTaWduYWJsZVBheWxvYWQoKTtcbiAgICAvLyBFbXB0eSBtZXNzYWdlIGhhcyBsZW5ndGggMFxuICAgIGNvbnN0IGV4cGVjdGVkUHJlZml4ID0gYFxcdTAwMTlFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTpcXG4wYDtcbiAgICBjb25zdCBleHBlY3RlZFBheWxvYWQgPSBCdWZmZXIuZnJvbShleHBlY3RlZFByZWZpeC5jb25jYXQoJycpKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICBzaWduYWJsZVBheWxvYWQuc2hvdWxkLmVxdWFsKGV4cGVjdGVkUGF5bG9hZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIG1lc3NhZ2VzIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgRUlQMTkxTWVzc2FnZSh7XG4gICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMuc3BlY2lhbENoYXJzTWVzc2FnZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IGF3YWl0IG1lc3NhZ2UuZ2V0U2lnbmFibGVQYXlsb2FkKCk7XG4gICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBgXFx1MDAxOUV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOlxcbiR7Zml4dHVyZXMubWVzc2FnZXMuc3BlY2lhbENoYXJzTWVzc2FnZS5sZW5ndGh9YDtcbiAgICBjb25zdCBleHBlY3RlZFBheWxvYWQgPSBCdWZmZXIuZnJvbShleHBlY3RlZFByZWZpeC5jb25jYXQoZml4dHVyZXMubWVzc2FnZXMuc3BlY2lhbENoYXJzTWVzc2FnZSkpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHNpZ25hYmxlUGF5bG9hZC5zaG91bGQuZXF1YWwoZXhwZWN0ZWRQYXlsb2FkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBtYWludGFpbiBzaWduYXR1cmVzIGFuZCBzaWduZXJzIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgIHBheWxvYWQ6IGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSxcbiAgICAgIHNpZ25hdHVyZXM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSxcbiAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICB9KTtcblxuICAgIG1lc3NhZ2UuZ2V0U2lnbmF0dXJlcygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmUpO1xuICAgIG1lc3NhZ2UuZ2V0U2lnbmVycygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduZXIpO1xuXG4gICAgLy8gVGVzdCBhZGRpbmcgbmV3IG9uZXNcbiAgICBtZXNzYWdlLmFkZFNpZ25hdHVyZSh7XG4gICAgICBwdWJsaWNLZXk6IHsgcHViOiAncHViMScgfSxcbiAgICAgIHNpZ25hdHVyZTogQnVmZmVyLmZyb20oJ25ldy1zaWduYXR1cmUnKSxcbiAgICB9KTtcbiAgICBtZXNzYWdlLmFkZFNpZ25lcignbmV3LXNpZ25lcicpO1xuXG4gICAgbWVzc2FnZS5nZXRTaWduYXR1cmVzKCkuc2hvdWxkLmNvbnRhaW5FcWwoe1xuICAgICAgcHVibGljS2V5OiB7IHB1YjogJ3B1YjEnIH0sXG4gICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCduZXctc2lnbmF0dXJlJyksXG4gICAgfSk7XG4gICAgbWVzc2FnZS5nZXRTaWduZXJzKCkuc2hvdWxkLmNvbnRhaW5FcWwoJ25ldy1zaWduZXInKTtcblxuICAgIC8vIFRlc3QgcmVwbGFjaW5nIGFsbFxuICAgIG1lc3NhZ2Uuc2V0U2lnbmF0dXJlcyhbXG4gICAgICB7XG4gICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWIyJyB9LFxuICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdyZXBsYWNlZC1zaWduYXR1cmUnKSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgbWVzc2FnZS5zZXRTaWduZXJzKFsncmVwbGFjZWQtc2lnbmVyJ10pO1xuXG4gICAgbWVzc2FnZS5nZXRTaWduYXR1cmVzKCkuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICB7XG4gICAgICAgIHB1YmxpY0tleTogeyBwdWI6ICdwdWIyJyB9LFxuICAgICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKCdyZXBsYWNlZC1zaWduYXR1cmUnKSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgbWVzc2FnZS5nZXRTaWduZXJzKCkuc2hvdWxkLmRlZXBFcXVhbChbJ3JlcGxhY2VkLXNpZ25lciddKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgRUlQMTkxTWVzc2FnZSh7XG4gICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlLFxuICAgICAgbWV0YWRhdGE6IGZpeHR1cmVzLmVpcDE5MS5tZXRhZGF0YSxcbiAgICB9KTtcblxuICAgIG1lc3NhZ2UuZ2V0TWV0YWRhdGEoKSEuc2hvdWxkLmRlZXBFcXVhbChmaXh0dXJlcy5laXAxOTEubWV0YWRhdGEpO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnJvYWRjYXN0IEZvcm1hdCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgdG8gYnJvYWRjYXN0IGZvcm1hdCBjb3JyZWN0bHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gbmV3IEVJUDE5MU1lc3NhZ2Uoe1xuICAgICAgICBjb2luQ29uZmlnOiBmaXh0dXJlcy5jb2luLFxuICAgICAgICBwYXlsb2FkOiBmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSxcbiAgICAgICAgc2lnbmVyczogW2ZpeHR1cmVzLmVpcDE5MS5zaWduZXJdLFxuICAgICAgICBtZXRhZGF0YTogZml4dHVyZXMuZWlwMTkxLm1ldGFkYXRhLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGJyb2FkY2FzdEZvcm1hdCA9IGF3YWl0IG1lc3NhZ2UudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRTZXJpYWxpemVkU2lnbmF0dXJlcyA9IHNlcmlhbGl6ZVNpZ25hdHVyZXMoW2ZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmVdKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC50eXBlLnNob3VsZC5lcXVhbChNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSk7XG4gICAgICBicm9hZGNhc3RGb3JtYXQucGF5bG9hZC5zaG91bGQuZXF1YWwoZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC5zZXJpYWxpemVkU2lnbmF0dXJlcz8uc2hvdWxkLmRlZXBFcXVhbChleHBlY3RlZFNlcmlhbGl6ZWRTaWduYXR1cmVzKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC5zaWduZXJzPy5zaG91bGQuZGVlcEVxdWFsKFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSk7XG4gICAgICBicm9hZGNhc3RGb3JtYXQubWV0YWRhdGEhLnNob3VsZC5kZWVwRXF1YWwoZml4dHVyZXMuZWlwMTkxLm1ldGFkYXRhKTtcbiAgICAgIGJyb2FkY2FzdEZvcm1hdC5zaWduYWJsZVBheWxvYWQhLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ01UazBOVGMwTmpnMk5UY3lOalUzTlRaa01qQTFNelk1TmpjMlpUWTFOalF5TURSa05qVTNNemN6TmpFMk56WTFNMkV3WVRNeE16TTBPRFkxTm1NMll6Wm1NbU15TURjM05tWTNNalpqTmpReU1RPT0nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IHRvIGJyb2FkY2FzdCBzdHJpbmcgY29ycmVjdGx5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBFSVAxOTFNZXNzYWdlKHtcbiAgICAgICAgY29pbkNvbmZpZzogZml4dHVyZXMuY29pbixcbiAgICAgICAgcGF5bG9hZDogZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlLFxuICAgICAgICBzaWduYXR1cmVzOiBbZml4dHVyZXMuZWlwMTkxLnNpZ25hdHVyZV0sXG4gICAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICAgICAgbWV0YWRhdGE6IGZpeHR1cmVzLmVpcDE5MS5tZXRhZGF0YSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBicm9hZGNhc3RIZXggPSBhd2FpdCBtZXNzYWdlLnRvQnJvYWRjYXN0U3RyaW5nKCk7XG4gICAgICBjb25zdCBicm9hZGNhc3RTdHJpbmcgPSBCdWZmZXIuZnJvbShicm9hZGNhc3RIZXgsICdoZXgnKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgcGFyc2VkQnJvYWRjYXN0ID0gSlNPTi5wYXJzZShicm9hZGNhc3RTdHJpbmcpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRTZXJpYWxpemVkU2lnbmF0dXJlcyA9IHNlcmlhbGl6ZVNpZ25hdHVyZXMoW2ZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmVdKTtcblxuICAgICAgcGFyc2VkQnJvYWRjYXN0LnR5cGUuc2hvdWxkLmVxdWFsKE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxKTtcbiAgICAgIHBhcnNlZEJyb2FkY2FzdC5wYXlsb2FkLnNob3VsZC5lcXVhbChmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UpO1xuICAgICAgcGFyc2VkQnJvYWRjYXN0LnNlcmlhbGl6ZWRTaWduYXR1cmVzLnNob3VsZC5kZWVwRXF1YWwoZXhwZWN0ZWRTZXJpYWxpemVkU2lnbmF0dXJlcyk7XG4gICAgICBwYXJzZWRCcm9hZGNhc3Quc2lnbmVycy5zaG91bGQuZGVlcEVxdWFsKFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSk7XG4gICAgICBwYXJzZWRCcm9hZGNhc3QubWV0YWRhdGEuc2hvdWxkLmRlZXBFcXVhbChmaXh0dXJlcy5laXAxOTEubWV0YWRhdGEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwMTkxTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9tZXNzYWdlcy9laXAxOTEvZWlwMTkxTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQixtREFBMkQ7QUFDM0QseUNBQXNDO0FBQ3RDLHlDQUFnRDtBQUNoRCwwRUFBb0U7QUFFcEUsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFBLGdEQUFxQixFQUFDO1FBQ3BCLFdBQVcsRUFBRSw4QkFBbUIsQ0FBQyxNQUFNO1FBQ3ZDLFlBQVksRUFBRSxtQkFBYTtRQUMzQixHQUFHLG1CQUFRO0tBQ1osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBNZXNzYWdlU3RhbmRhcmRUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZml4dHVyZXMgfSBmcm9tICcuL2ZpeHR1cmVzJztcbmltcG9ydCB7IEVJUDE5MU1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgdGVzdEV0aE1lc3NhZ2VTaWduaW5nIH0gZnJvbSAnLi4vYWJzdHJhY3RFdGhNZXNzYWdlc1Rlc3RzJztcblxuZGVzY3JpYmUoJ0VJUDE5MSBNZXNzYWdlJywgKCkgPT4ge1xuICB0ZXN0RXRoTWVzc2FnZVNpZ25pbmcoe1xuICAgIG1lc3NhZ2VUeXBlOiBNZXNzYWdlU3RhbmRhcmRUeXBlLkVJUDE5MSxcbiAgICBtZXNzYWdlQ2xhc3M6IEVJUDE5MU1lc3NhZ2UsXG4gICAgLi4uZml4dHVyZXMsXG4gIH0pO1xufSk7XG4iXX0=
@@ -1,116 +1,16 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  require("should");
7
- const sinon_1 = __importDefault(require("sinon"));
8
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
- const fixtures_1 = require("../fixtures");
4
+ const abstractEthMessageBuilderTests_1 = require("../abstractEthMessageBuilderTests");
10
5
  const src_1 = require("../../../../src");
6
+ const fixtures_1 = require("./fixtures");
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
8
  describe('EIP191 Message Builder', () => {
12
- const sandbox = sinon_1.default.createSandbox();
13
- afterEach(() => {
14
- sandbox.restore();
15
- });
16
- describe('constructor', () => {
17
- it('should initialize with the correct message type', () => {
18
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
19
- // Test the builder's private property indirectly through build()
20
- builder.should.be.instanceof(src_1.Eip191MessageBuilder);
21
- });
22
- });
23
- describe('build method', () => {
24
- it('should build a valid EIP191 message', async () => {
25
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
26
- builder.setPayload(fixtures_1.fixtures.messages.validMessage).setMetadata({ customData: 'test data' });
27
- const message = await builder.build();
28
- message.should.be.instanceof(src_1.EIP191Message);
29
- message.getType().should.equal(sdk_core_1.MessageStandardType.EIP191);
30
- message.getPayload().should.equal(fixtures_1.fixtures.messages.validMessage);
31
- message.getMetadata().should.have.property('customData', 'test data');
32
- message.getMetadata().should.have.property('encoding', 'utf8');
33
- });
34
- it('should throw an error when building without setting payload', async () => {
35
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
36
- await builder.build().should.be.rejectedWith('Message payload must be set before building the message');
37
- });
38
- it('should include signers when building a message', async () => {
39
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
40
- builder.setPayload(fixtures_1.fixtures.messages.validMessage);
41
- builder.addSigner(fixtures_1.fixtures.eip191.signer);
42
- const message = await builder.build();
43
- message.getSigners().should.containEql(fixtures_1.fixtures.eip191.signer);
44
- });
45
- it('should include signatures when building a message', async () => {
46
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
47
- builder.setPayload(fixtures_1.fixtures.messages.validMessage);
48
- builder.addSignature(fixtures_1.fixtures.eip191.signature);
49
- const message = await builder.build();
50
- message.getSignatures().should.containEql(fixtures_1.fixtures.eip191.signature);
51
- });
52
- it('should override metadata.encoding with utf8', async () => {
53
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
54
- builder.setPayload(fixtures_1.fixtures.messages.validMessage);
55
- builder.setMetadata({ encoding: 'hex', customData: 'test data' });
56
- const message = await builder.build();
57
- message.getMetadata().should.have.property('encoding', 'utf8');
58
- message.getMetadata().should.have.property('customData', 'test data');
59
- });
60
- });
61
- describe('fromBroadcastFormat method', () => {
62
- it('should reconstruct a message from broadcast format', async () => {
63
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
64
- const broadcastMessage = {
65
- type: sdk_core_1.MessageStandardType.EIP191,
66
- payload: fixtures_1.fixtures.messages.validMessage,
67
- serializedSignatures: (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]),
68
- signers: [fixtures_1.fixtures.eip191.signer],
69
- metadata: fixtures_1.fixtures.eip191.metadata,
70
- };
71
- const message = await builder.fromBroadcastFormat(broadcastMessage);
72
- message.should.be.instanceof(src_1.EIP191Message);
73
- message.getType().should.equal(sdk_core_1.MessageStandardType.EIP191);
74
- message.getPayload().should.equal(fixtures_1.fixtures.messages.validMessage);
75
- message.getSignatures().should.containEql(fixtures_1.fixtures.eip191.signature);
76
- message.getSigners().should.containEql(fixtures_1.fixtures.eip191.signer);
77
- message.getMetadata().should.have.property('encoding', 'utf8');
78
- message.getMetadata().should.have.property('customData', 'test data');
79
- });
80
- it('should throw an error for incorrect message type', async () => {
81
- const builder = new src_1.Eip191MessageBuilder(fixtures_1.fixtures.coin);
82
- const broadcastMessage = {
83
- type: sdk_core_1.MessageStandardType.UNKNOWN,
84
- payload: fixtures_1.fixtures.messages.validMessage,
85
- serializedSignatures: (0, sdk_core_1.serializeSignatures)([fixtures_1.fixtures.eip191.signature]),
86
- signers: [fixtures_1.fixtures.eip191.signer],
87
- metadata: {},
88
- };
89
- await builder
90
- .fromBroadcastFormat(broadcastMessage)
91
- .should.be.rejectedWith(`Invalid message type, expected ${sdk_core_1.MessageStandardType.EIP191}`);
92
- });
93
- });
94
- describe('fromBroadcastString', function () {
95
- it('should parse broadcastable string and return correct builder type', async function () {
96
- const broadcastHex = '7b2274797065223a22454950313931222c227061796c6f6164223a2253544152203130303020746f20616464725f746573743171727139366830726a68743275366e336667776d7939307837676d6c38686475657774326e6d72327536636d6b707771743477373839776b346534387a6a73616b673237647533683730776d656a756b34386b783465343368767a737566736876362033316136626162353061383462383433396164636662373836626232303230663638303765366538666461363239623432343131306663376262316336623862222c2273657269616c697a65645369676e617475726573223a5b7b227075626c69634b6579223a22222c227369676e6174757265223a2274386c6e725a4b7a757264566c777343355a66422f4b314b5533516d4b5a3970343671576a3155795744307046464577584e6d754f327a4845644e3164372b2b414e5653796f5a3869547737375073546462334b3878773d227d5d2c227369676e657273223a5b22307866613061376634613064396535343463353761656361346533326233623130343862363333636466225d2c226d65746164617461223a7b22656e636f64696e67223a2275746638227d2c227369676e61626c655061796c6f6164223a224d546b304e5463304e6a67324e5463794e6a55334e545a6b4d6a41314d7a59354e6a63325a5459314e6a51794d44526b4e6a55334d7a637a4e6a45324e7a59314d32457759544d784d7a677a4e6a557a4e5451304d5455794d6a417a4d544d774d7a417a4d4449774e7a51325a6a49774e6a45324e4459304e7a49315a6a63304e6a55334d7a63304d7a45334d5463794e7a457a4f544d324e6a677a4d4463794e6d45324f4463304d7a49334e544d324e6d557a4d7a59324e6a63334e7a5a6b4e7a6b7a4f544d774e7a677a4e7a59334e6d5132597a4d344e6a67324e4463314e6a55334e7a63304d7a49325a545a6b4e7a497a4d6a63314d7a59324d7a5a6b4e6d49334d4463334e7a45334e444d304e7a637a4e7a4d344d7a6b334e7a5a694d7a51324e544d304d7a673359545a684e7a4d324d545a694e6a637a4d6a4d334e6a51334e544d7a4e6a677a4e7a4d774e7a63325a4459314e6d45334e545a694d7a517a4f445a694e7a677a4e4459314d7a517a4d7a59344e7a59335954637a4e7a55324e6a637a4e6a67334e6a4d324d6a417a4d7a4d784e6a457a4e6a59794e6a45324d6a4d314d7a41324d544d344d7a51324d6a4d344d7a517a4d7a4d354e6a45324e44597a4e6a59324d6a4d334d7a677a4e6a59794e6a497a4d6a4d774d7a497a4d4459324d7a597a4f444d774d7a63324e544d324e6a557a4f4459324e6a51324d544d324d7a497a4f5459794d7a517a4d6a4d304d7a457a4d544d774e6a59324d7a4d334e6a49324d6a4d784e6a4d7a4e6a59794d7a67324d673d3d227d';
97
- const coinConfig = { name: 'eth' };
98
- const factory = new src_1.MessageBuilderFactory(coinConfig);
99
- const builder = factory.fromBroadcastString(broadcastHex);
100
- const message = await builder.build();
101
- const payload = message.getPayload();
102
- const payloadParts = payload.split(' ');
103
- const address = message.getSigners()[0];
104
- address.should.equal('0xfa0a7f4a0d9e544c57aeca4e32b3b1048b633cdf');
105
- const destinationAddress = payloadParts[3];
106
- destinationAddress.should.equal('addr_test1qrq96h0rjht2u6n3fgwmy90x7gml8hduewt2nmr2u6cmkpwqt4w789wk4e48zjsakg27du3h70wmejuk48kx4e43hvzsufshv6');
107
- const amount = Number(payloadParts[1]);
108
- amount.should.equal(1000);
109
- const signature = message.getSignatures()[0].signature.toString('hex');
110
- signature.should.equal('b7c967ad92b3bab755970b02e597c1fcad4a537426299f69e3aa968f5532583d291451305cd9ae3b6cc711d37577bfbe00d552ca867c893c3becfb1375bdcaf31c');
111
- const publicKeyHex = message.getSignatures()[0].publicKey.pub;
112
- publicKeyHex.should.equal('');
113
- });
9
+ (0, abstractEthMessageBuilderTests_1.testEthMessageBuilding)({
10
+ messageType: sdk_core_1.MessageStandardType.EIP191,
11
+ messageBuilderClass: src_1.Eip191MessageBuilder,
12
+ messageClass: src_1.EIP191Message,
13
+ test: fixtures_1.fixtures.messageBuilderTest,
114
14
  });
115
15
  });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwMTkxTWVzc2FnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvbWVzc2FnZXMvZWlwMTkxL2VpcDE5MU1lc3NhZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLGtEQUEwQjtBQUMxQixtREFBc0c7QUFDdEcsMENBQXVDO0FBQ3ZDLHlDQUE2RjtBQUc3RixRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUV0QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDM0IsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLDBCQUFvQixDQUFDLG1CQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsaUVBQWlFO1lBQ2pFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQywwQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUM1QixFQUFFLENBQUMscUNBQXFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBb0IsQ0FBQyxtQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhELE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFF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T0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDOUQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IEJyb2FkY2FzdGFibGVNZXNzYWdlLCBNZXNzYWdlU3RhbmRhcmRUeXBlLCBzZXJpYWxpemVTaWduYXR1cmVzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZml4dHVyZXMgfSBmcm9tICcuLi9maXh0dXJlcyc7XG5pbXBvcnQgeyBFSVAxOTFNZXNzYWdlLCBFaXAxOTFNZXNzYWdlQnVpbGRlciwgTWVzc2FnZUJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmRlc2NyaWJlKCdFSVAxOTEgTWVzc2FnZSBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb25zdHJ1Y3RvcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgd2l0aCB0aGUgY29ycmVjdCBtZXNzYWdlIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IEVpcDE5MU1lc3NhZ2VCdWlsZGVyKGZpeHR1cmVzLmNvaW4pO1xuICAgICAgLy8gVGVzdCB0aGUgYnVpbGRlcidzIHByaXZhdGUgcHJvcGVydHkgaW5kaXJlY3RseSB0aHJvdWdoIGJ1aWxkKClcbiAgICAgIGJ1aWxkZXIuc2hvdWxkLmJlLmluc3RhbmNlb2YoRWlwMTkxTWVzc2FnZUJ1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB2YWxpZCBFSVAxOTEgbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgRWlwMTkxTWVzc2FnZUJ1aWxkZXIoZml4dHVyZXMuY29pbik7XG5cbiAgICAgIGJ1aWxkZXIuc2V0UGF5bG9hZChmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UpLnNldE1ldGFkYXRhKHsgY3VzdG9tRGF0YTogJ3Rlc3QgZGF0YScgfSk7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIG1lc3NhZ2Uuc2hvdWxkLmJlLmluc3RhbmNlb2YoRUlQMTkxTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldFR5cGUoKS5zaG91bGQuZXF1YWwoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgICAgbWVzc2FnZS5nZXRQYXlsb2FkKCkuc2hvdWxkLmVxdWFsKGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldE1ldGFkYXRhKCkhLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjdXN0b21EYXRhJywgJ3Rlc3QgZGF0YScpO1xuICAgICAgbWVzc2FnZS5nZXRNZXRhZGF0YSgpIS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZW5jb2RpbmcnLCAndXRmOCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgc2V0dGluZyBwYXlsb2FkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBFaXAxOTFNZXNzYWdlQnVpbGRlcihmaXh0dXJlcy5jb2luKTtcblxuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ01lc3NhZ2UgcGF5bG9hZCBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIG1lc3NhZ2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5jbHVkZSBzaWduZXJzIHdoZW4gYnVpbGRpbmcgYSBtZXNzYWdlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBFaXAxOTFNZXNzYWdlQnVpbGRlcihmaXh0dXJlcy5jb2luKTtcblxuICAgICAgYnVpbGRlci5zZXRQYXlsb2FkKGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25lcihmaXh0dXJlcy5laXAxOTEuc2lnbmVyKTtcblxuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgbWVzc2FnZS5nZXRTaWduZXJzKCkuc2hvdWxkLmNvbnRhaW5FcWwoZml4dHVyZXMuZWlwMTkxLnNpZ25lcik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGluY2x1ZGUgc2lnbmF0dXJlcyB3aGVuIGJ1aWxkaW5nIGEgbWVzc2FnZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgRWlwMTkxTWVzc2FnZUJ1aWxkZXIoZml4dHVyZXMuY29pbik7XG5cbiAgICAgIGJ1aWxkZXIuc2V0UGF5bG9hZChmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoZml4dHVyZXMuZWlwMTkxLnNpZ25hdHVyZSk7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIG1lc3NhZ2UuZ2V0U2lnbmF0dXJlcygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduYXR1cmUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBvdmVycmlkZSBtZXRhZGF0YS5lbmNvZGluZyB3aXRoIHV0ZjgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IEVpcDE5MU1lc3NhZ2VCdWlsZGVyKGZpeHR1cmVzLmNvaW4pO1xuXG4gICAgICBidWlsZGVyLnNldFBheWxvYWQoZml4dHVyZXMubWVzc2FnZXMudmFsaWRNZXNzYWdlKTtcbiAgICAgIGJ1aWxkZXIuc2V0TWV0YWRhdGEoeyBlbmNvZGluZzogJ2hleCcsIGN1c3RvbURhdGE6ICd0ZXN0IGRhdGEnIH0pO1xuXG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBtZXNzYWdlLmdldE1ldGFkYXRhKCkhLnNob3VsZC5oYXZlLnByb3BlcnR5KCdlbmNvZGluZycsICd1dGY4Jyk7XG4gICAgICBtZXNzYWdlLmdldE1ldGFkYXRhKCkhLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjdXN0b21EYXRhJywgJ3Rlc3QgZGF0YScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJvbUJyb2FkY2FzdEZvcm1hdCBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWNvbnN0cnVjdCBhIG1lc3NhZ2UgZnJvbSBicm9hZGNhc3QgZm9ybWF0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBFaXAxOTFNZXNzYWdlQnVpbGRlcihmaXh0dXJlcy5jb2luKTtcblxuICAgICAgY29uc3QgYnJvYWRjYXN0TWVzc2FnZTogQnJvYWRjYXN0YWJsZU1lc3NhZ2UgPSB7XG4gICAgICAgIHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxLFxuICAgICAgICBwYXlsb2FkOiBmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UsXG4gICAgICAgIHNlcmlhbGl6ZWRTaWduYXR1cmVzOiBzZXJpYWxpemVTaWduYXR1cmVzKFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSksXG4gICAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICAgICAgbWV0YWRhdGE6IGZpeHR1cmVzLmVpcDE5MS5tZXRhZGF0YSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmZyb21Ccm9hZGNhc3RGb3JtYXQoYnJvYWRjYXN0TWVzc2FnZSk7XG5cbiAgICAgIG1lc3NhZ2Uuc2hvdWxkLmJlLmluc3RhbmNlb2YoRUlQMTkxTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldFR5cGUoKS5zaG91bGQuZXF1YWwoTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEpO1xuICAgICAgbWVzc2FnZS5nZXRQYXlsb2FkKCkuc2hvdWxkLmVxdWFsKGZpeHR1cmVzLm1lc3NhZ2VzLnZhbGlkTWVzc2FnZSk7XG4gICAgICBtZXNzYWdlLmdldFNpZ25hdHVyZXMoKS5zaG91bGQuY29udGFpbkVxbChmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlKTtcbiAgICAgIG1lc3NhZ2UuZ2V0U2lnbmVycygpLnNob3VsZC5jb250YWluRXFsKGZpeHR1cmVzLmVpcDE5MS5zaWduZXIpO1xuICAgICAgbWVzc2FnZS5nZXRNZXRhZGF0YSgpIS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZW5jb2RpbmcnLCAndXRmOCcpO1xuICAgICAgbWVzc2FnZS5nZXRNZXRhZGF0YSgpIS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnY3VzdG9tRGF0YScsICd0ZXN0IGRhdGEnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgZm9yIGluY29ycmVjdCBtZXNzYWdlIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IEVpcDE5MU1lc3NhZ2VCdWlsZGVyKGZpeHR1cmVzLmNvaW4pO1xuXG4gICAgICBjb25zdCBicm9hZGNhc3RNZXNzYWdlOiBCcm9hZGNhc3RhYmxlTWVzc2FnZSA9IHtcbiAgICAgICAgdHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZS5VTktOT1dOLFxuICAgICAgICBwYXlsb2FkOiBmaXh0dXJlcy5tZXNzYWdlcy52YWxpZE1lc3NhZ2UsXG4gICAgICAgIHNlcmlhbGl6ZWRTaWduYXR1cmVzOiBzZXJpYWxpemVTaWduYXR1cmVzKFtmaXh0dXJlcy5laXAxOTEuc2lnbmF0dXJlXSksXG4gICAgICAgIHNpZ25lcnM6IFtmaXh0dXJlcy5laXAxOTEuc2lnbmVyXSxcbiAgICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgYnVpbGRlclxuICAgICAgICAuZnJvbUJyb2FkY2FzdEZvcm1hdChicm9hZGNhc3RNZXNzYWdlKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChgSW52YWxpZCBtZXNzYWdlIHR5cGUsIGV4cGVjdGVkICR7TWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTF9YCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmcm9tQnJvYWRjYXN0U3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcGFyc2UgYnJvYWRjYXN0YWJsZSBzdHJpbmcgYW5kIHJldHVybiBjb3JyZWN0IGJ1aWxkZXIgdHlwZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJyb2FkY2FzdEhleCA9XG4gICAgICAgICc3YjIyNzQ3OTcwNjUyMjNhMjI0NTQ5NTAzMTM5MzEyMjJjMjI3MDYxNzk2YzZmNjE2NDIyM2EyMjUzNTQ0MTUyMjAzMTMwMzAzMDIwNzQ2ZjIwNjE2NDY0NzI1Zjc0NjU3Mzc0MzE3MTcyNzEzOTM2NjgzMDcyNmE2ODc0MzI3NTM2NmUzMzY2Njc3NzZkNzkzOTMwNzgzNzY3NmQ2YzM4Njg2NDc1NjU3Nzc0MzI2ZTZkNzIzMjc1MzY2MzZkNmI3MDc3NzE3NDM0NzczNzM4Mzk3NzZiMzQ2NTM0Mzg3YTZhNzM2MTZiNjczMjM3NjQ3NTMzNjgzNzMwNzc2ZDY1NmE3NTZiMzQzODZiNzgzNDY1MzQzMzY4NzY3YTczNzU2NjczNjg3NjM2MjAzMzMxNjEzNjYyNjE2MjM1MzA2MTM4MzQ2MjM4MzQzMzM5NjE2NDYzNjY2MjM3MzgzNjYyNjIzMjMwMzIzMDY2MzYzODMwMzc2NTM2NjUzODY2NjQ2MTM2MzIzOTYyMzQzMjM0MzEzMTMwNjY2MzM3NjI2MjMxNjMzNjYyMzg2MjIyMmMyMjczNjU3MjY5NjE2YzY5N2E2NTY0NTM2OTY3NmU2MTc0NzU3MjY1NzMyMjNhNWI3YjIyNzA3NTYyNmM2OTYzNGI2NTc5MjIzYTIyMjIyYzIyNzM2OTY3NmU2MTc0NzU3MjY1MjIzYTIyNzQzODZjNmU3MjVhNGI3YTc1NzI2NDU2NmM3NzczNDMzNTVhNjY0MjJmNGIzMTRiNTUzMzUxNmQ0YjVhMzk3MDM0MzY3MTU3NmEzMTU1Nzk1NzQ0MzA3MDQ2NDY0NTc3NTg0ZTZkNzU0ZjMyN2E0ODQ1NjQ0ZTMxNjQzNzJiMmI0MTRlNTY1Mzc5NmY1YTM4Njk1NDc3MzczNzUwNzM1NDY0NjIzMzRiMzg3ODc3M2QyMjdkNWQyYzIyNzM2OTY3NmU2NTcyNzMyMjNhNWIyMjMwNzg2NjYxMzA2MTM3NjYzNDYxMzA2NDM5NjUzNTM0MzQ2MzM1Mzc2MTY1NjM2MTM0NjUzMzMyNjIzMzYyMzEzMDM0Mzg2MjM2MzMzMzYzNjQ2NjIyNWQyYzIyNmQ2NTc0NjE2NDYxNzQ2MTIyM2E3YjIyNjU2ZTYzNmY2NDY5NmU2NzIyM2EyMjc1NzQ2NjM4MjI3ZDJjMjI3MzY5Njc2ZTYxNjI2YzY1NTA2MTc5NmM2ZjYxNjQyMjNhMjI0ZDU0NmIzMDRlNTQ2MzMwNGU2YTY3MzI0ZTU0NjM3OTRlNmE1NTMzNGU1NDVhNmI0ZDZhNDEzMTRkN2E1OTM1NGU2YTYzMzI1YTU0NTkzMTRlNmE1MTc5NGQ0NDUyNmI0ZTZhNTUzMzRkN2E2MzdhNGU2YTQ1MzI0ZTdhNTkzMTRkMzI0NTc3NTk1NDRkNzg0ZDdhNjc3YTRlNmE1NTdhNGU1NDUxMzA0ZDU0NTU3OTRkNmE0MTdhNGQ1NDRkNzc0ZDdhNDE3YTRkNDQ0OTc3NGU3YTUxMzI1YTZhNDk3NzRlNmE0NTMyNGU0NDU5MzA0ZTdhNDkzMTVhNmE2MzMwNGU2YTU1MzM0ZDdhNjMzMDRkN2E0NTMzNGQ1NDYzNzk0ZTdhNDU3YTRmNTQ0ZDMyNGU2YTY3N2E0ZDQ0NjM3OTRlNmQ0NTMyNGY0NDYzMzA0ZDdhNDkzMzRlNTQ0ZDMyNGU2ZDU1N2E0ZDdhNTkzMjRlNmE2MzMzNGU3YTVhNmI0ZTdhNmI3YTRmNTQ0ZDc3NGU3YTY3N2E0ZTdhNTkzMzRlNmQ1MTMyNTk3YTRkMzQ0ZTZhNjczMjRlNDQ2MzMxNGU2YTU1MzM0ZTdhNjMzMDRkN2E0OTMyNWE1NDVhNmI0ZTdhNDk3YTRkNmE2MzMxNGQ3YTU5MzI0ZDdhNWE2YjRlNmQ0OTMzNGQ0NDYzMzM0ZTdhNDUzMzRlNDQ0ZDMwNGU3YTYzN2E0ZTdhNGQzNDRkN2E2YjMzNGU3YTVhNjk0ZDdhNTEzMjRlNTQ0ZDMwNGQ3YTY3MzM1OTU0NWE2ODRlN2E0ZDMyNGQ1NDVhNjk0ZTZhNjM3YTRkNmE0ZDMzNGU2YTUxMzM0ZTU0NGQ3YTRlNmE2NzdhNGU3YTRkNzc0ZTdhNjMzMjVhNDQ1OTMxNGU2ZDQ1MzM0ZTU0NWE2OTRkN2E1MTdhNGY0NDVhNjk0ZTdhNjc3YTRlNDQ1OTMxNGQ3YTUxN2E0ZDdhNTkzNDRlN2E1OTMzNTk1NDYzN2E0ZTdhNTUzMjRlNmE2MzdhNGU2YTY3MzM0ZTZhNGQzMjRkNmE0MTdhNGQ3YTRkNzg0ZTZhNDU3YTRlNmE1OTc5NGU2YTQ1MzI0ZDZhNGQzMTRkN2E0MTMyNGQ1NDRkMzQ0ZDdhNTEzMjRkNmE0ZDM0NGQ3YTUxN2E0ZDdhNGQzNTRlNmE0NTMyNGU0NDU5N2E0ZTZhNTkzMjRkNmE0ZDMzNGQ3YTY3N2E0ZTZhNTk3OTRlNmE0OTdhNGQ2YTRkNzc0ZDdhNDk3YTRkNDQ1OTMyNGQ3YTU5N2E0ZjQ0NGQ3NzRkN2E2MzMyNGU1NDRkMzI0ZTZhNTU3YTRmNDQ1OTMyNGU2YTUxMzI0ZDU0NGQzMjRkN2E0OTdhNGY1NDU5Nzk0ZDdhNTE3YTRkNmE0ZDMwNGQ3YTQ1N2E0ZDU0NGQ3NzRlNmE1OTMyNGQ3YTRkMzM0ZTZhNDkzMjRkNmE0ZDc4NGU2YTRkN2E0ZTZhNTk3OTRkN2E2NzMyNGQ2NzNkM2QyMjdkJztcbiAgICAgIGNvbnN0IGNvaW5Db25maWcgPSB7IG5hbWU6ICdldGgnIH0gYXMgQmFzZUNvaW47XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb21Ccm9hZGNhc3RTdHJpbmcoYnJvYWRjYXN0SGV4KTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHBheWxvYWQgPSBtZXNzYWdlLmdldFBheWxvYWQoKTtcbiAgICAgIGNvbnN0IHBheWxvYWRQYXJ0cyA9IHBheWxvYWQuc3BsaXQoJyAnKTtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBtZXNzYWdlLmdldFNpZ25lcnMoKVswXTtcbiAgICAgIGFkZHJlc3Muc2hvdWxkLmVxdWFsKCcweGZhMGE3ZjRhMGQ5ZTU0NGM1N2FlY2E0ZTMyYjNiMTA0OGI2MzNjZGYnKTtcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IHBheWxvYWRQYXJ0c1szXTtcbiAgICAgIGRlc3RpbmF0aW9uQWRkcmVzcy5zaG91bGQuZXF1YWwoXG4gICAgICAgICdhZGRyX3Rlc3QxcXJxOTZoMHJqaHQydTZuM2Znd215OTB4N2dtbDhoZHVld3Qybm1yMnU2Y21rcHdxdDR3Nzg5d2s0ZTQ4empzYWtnMjdkdTNoNzB3bWVqdWs0OGt4NGU0M2h2enN1ZnNodjYnXG4gICAgICApO1xuICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKHBheWxvYWRQYXJ0c1sxXSk7XG4gICAgICBhbW91bnQuc2hvdWxkLmVxdWFsKDEwMDApO1xuXG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBtZXNzYWdlLmdldFNpZ25hdHVyZXMoKVswXS5zaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgc2lnbmF0dXJlLnNob3VsZC5lcXVhbChcbiAgICAgICAgJ2I3Yzk2N2FkOTJiM2JhYjc1NTk3MGIwMmU1OTdjMWZjYWQ0YTUzNzQyNjI5OWY2OWUzYWE5NjhmNTUzMjU4M2QyOTE0NTEzMDVjZDlhZTNiNmNjNzExZDM3NTc3YmZiZTAwZDU1MmNhODY3Yzg5M2MzYmVjZmIxMzc1YmRjYWYzMWMnXG4gICAgICApO1xuICAgICAgY29uc3QgcHVibGljS2V5SGV4ID0gbWVzc2FnZS5nZXRTaWduYXR1cmVzKClbMF0ucHVibGljS2V5LnB1YjtcbiAgICAgIHB1YmxpY0tleUhleC5zaG91bGQuZXF1YWwoJycpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwMTkxTWVzc2FnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvbWVzc2FnZXMvZWlwMTkxL2VpcDE5MU1lc3NhZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWdCO0FBQ2hCLHNGQUEyRTtBQUMzRSx5Q0FBc0U7QUFDdEUseUNBQXNDO0FBQ3RDLG1EQUEyRDtBQUUzRCxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLElBQUEsdURBQXNCLEVBQUM7UUFDckIsV0FBVyxFQUFFLDhCQUFtQixDQUFDLE1BQU07UUFDdkMsbUJBQW1CLEVBQUUsMEJBQW9CO1FBQ3pDLFlBQVksRUFBRSxtQkFBYTtRQUMzQixJQUFJLEVBQUUsbUJBQVEsQ0FBQyxrQkFBa0I7S0FDbEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyB0ZXN0RXRoTWVzc2FnZUJ1aWxkaW5nIH0gZnJvbSAnLi4vYWJzdHJhY3RFdGhNZXNzYWdlQnVpbGRlclRlc3RzJztcbmltcG9ydCB7IEVJUDE5MU1lc3NhZ2UsIEVpcDE5MU1lc3NhZ2VCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IGZpeHR1cmVzIH0gZnJvbSAnLi9maXh0dXJlcyc7XG5pbXBvcnQgeyBNZXNzYWdlU3RhbmRhcmRUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5kZXNjcmliZSgnRUlQMTkxIE1lc3NhZ2UgQnVpbGRlcicsICgpID0+IHtcbiAgdGVzdEV0aE1lc3NhZ2VCdWlsZGluZyh7XG4gICAgbWVzc2FnZVR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxLFxuICAgIG1lc3NhZ2VCdWlsZGVyQ2xhc3M6IEVpcDE5MU1lc3NhZ2VCdWlsZGVyLFxuICAgIG1lc3NhZ2VDbGFzczogRUlQMTkxTWVzc2FnZSxcbiAgICB0ZXN0OiBmaXh0dXJlcy5tZXNzYWdlQnVpbGRlclRlc3QsXG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,109 @@
1
+ export declare const fixtures: {
2
+ tests: {
3
+ validMessage: {
4
+ input: {
5
+ payload: string;
6
+ metadata: {
7
+ encoding: string;
8
+ customData: string;
9
+ };
10
+ signature: {
11
+ publicKey: {
12
+ pub: string;
13
+ };
14
+ signature: Buffer<ArrayBuffer>;
15
+ };
16
+ signer: string;
17
+ };
18
+ expected: {
19
+ expectedSignableHex: string;
20
+ expectedSignableBase64: string;
21
+ };
22
+ };
23
+ empty: {
24
+ input: {
25
+ payload: string;
26
+ };
27
+ expected: {
28
+ expectedSignableHex: string;
29
+ };
30
+ };
31
+ specialChars: {
32
+ input: {
33
+ payload: string;
34
+ };
35
+ expected: {
36
+ expectedSignableHex: string;
37
+ };
38
+ };
39
+ longMessage: {
40
+ input: {
41
+ payload: string;
42
+ };
43
+ expected: {
44
+ expectedSignableHex: string;
45
+ };
46
+ };
47
+ midnight: {
48
+ input: {
49
+ payload: string;
50
+ metadata: {
51
+ encoding: string;
52
+ customData: string;
53
+ };
54
+ signature: {
55
+ publicKey: {
56
+ pub: string;
57
+ };
58
+ signature: Buffer<ArrayBuffer>;
59
+ };
60
+ signer: string;
61
+ };
62
+ expected: {
63
+ expectedSignableHex: string;
64
+ };
65
+ broadcastHex: string;
66
+ };
67
+ };
68
+ signedTest: {
69
+ input: {
70
+ payload: string;
71
+ metadata: {
72
+ encoding: string;
73
+ customData: string;
74
+ };
75
+ signature: {
76
+ publicKey: {
77
+ pub: string;
78
+ };
79
+ signature: Buffer<ArrayBuffer>;
80
+ };
81
+ signer: string;
82
+ };
83
+ expected: {
84
+ expectedSignableHex: string;
85
+ expectedSignableBase64: string;
86
+ };
87
+ };
88
+ messageBuilderTest: {
89
+ input: {
90
+ payload: string;
91
+ metadata: {
92
+ encoding: string;
93
+ customData: string;
94
+ };
95
+ signature: {
96
+ publicKey: {
97
+ pub: string;
98
+ };
99
+ signature: Buffer<ArrayBuffer>;
100
+ };
101
+ signer: string;
102
+ };
103
+ expected: {
104
+ expectedSignableHex: string;
105
+ };
106
+ broadcastHex: string;
107
+ };
108
+ };
109
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../../test/unit/messages/eip191/fixtures.ts"],"names":[],"mappings":"AAuEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpB,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fixtures = void 0;
4
+ const validMessage = {
5
+ input: {
6
+ payload: 'Hello, world!',
7
+ metadata: {
8
+ encoding: 'utf8',
9
+ customData: 'test data',
10
+ },
11
+ signature: {
12
+ publicKey: { pub: '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf' },
13
+ signature: Buffer.from('5d99b6f7f6d1f73d1a26497f2b1c89b24c0993913f86e9a2d02cd69887d9c94f3c880358579d811b21dd1b7fd9bb01c1d81d10e69f0384e675c32b39643be8921b', 'hex'),
14
+ },
15
+ signer: '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
16
+ },
17
+ expected: {
18
+ expectedSignableHex: '19457468657265756d205369676e6564204d6573736167653a0a313348656c6c6f2c20776f726c6421',
19
+ expectedSignableBase64: 'MTk0NTc0Njg2NTcyNjU3NTZkMjA1MzY5Njc2ZTY1NjQyMDRkNjU3MzczNjE2NzY1M2EwYTMxMzM0ODY1NmM2YzZmMmMyMDc3NmY3MjZjNjQyMQ==',
20
+ },
21
+ };
22
+ const empty = {
23
+ input: { payload: '' },
24
+ expected: { expectedSignableHex: '19457468657265756d205369676e6564204d6573736167653a0a30' },
25
+ };
26
+ const specialChars = {
27
+ input: { payload: '!@#$%^&*()' },
28
+ expected: { expectedSignableHex: '19457468657265756d205369676e6564204d6573736167653a0a313021402324255e262a2829' },
29
+ };
30
+ const longMessage = {
31
+ input: {
32
+ payload: 'This is a very long message that contains multiple lines and special characters. ' +
33
+ 'It is designed to test the EIP-191 message format with a more complex payload.',
34
+ },
35
+ expected: {
36
+ expectedSignableHex: '19457468657265756d205369676e6564204d6573736167653a0a3135395468697320697320612076657279206c6f6e67206d657373616765207468617420636f6e7461696e73206d756c7469706c65206c696e657320616e64207370656369616c20636861726163746572732e2049742069732064657369676e656420746f207465737420746865204549502d313931206d65737361676520666f726d617420776974682061206d6f726520636f6d706c6578207061796c6f61642e',
37
+ },
38
+ };
39
+ const midnight = {
40
+ input: {
41
+ payload: 'STAR 1000 to addr_test1qrq96h0rjht2u6n3fgwmy90x7gml8hduewt2nmr2u6cmkpwqt4w789wk4e48zjsakg27du3h70wmejuk48kx4e43hvzsufshv6 ' +
42
+ '31a6bab50a84b8439adcfb786bb2020f6807e6e8fda629b424110fc7bb1c6b8b',
43
+ metadata: {
44
+ encoding: 'utf8',
45
+ customData: 'test data',
46
+ },
47
+ signature: {
48
+ publicKey: { pub: '' },
49
+ signature: Buffer.from('b7c967ad92b3bab755970b02e597c1fcad4a537426299f69e3aa968f5532583d291451305cd9ae3b6cc711d37577bfbe00d552ca867c893c3becfb1375bdcaf31c', 'hex'),
50
+ },
51
+ signer: '0xfa0a7f4a0d9e544c57aeca4e32b3b1048b633cdf',
52
+ },
53
+ expected: {
54
+ expectedSignableHex: '19457468657265756d205369676e6564204d6573736167653a0a31383653544152203130303020746f20616464725f746573743171727139366830726a68743275366e336667776d7939307837676d6c38686475657774326e6d72327536636d6b707771743477373839776b346534387a6a73616b673237647533683730776d656a756b34386b783465343368767a737566736876362033316136626162353061383462383433396164636662373836626232303230663638303765366538666461363239623432343131306663376262316336623862',
55
+ },
56
+ broadcastHex: '7b2274797065223a22454950313931222c227061796c6f6164223a2253544152203130303020746f20616464725f746573743171727139366830726a68743275366e336667776d7939307837676d6c38686475657774326e6d72327536636d6b707771743477373839776b346534387a6a73616b673237647533683730776d656a756b34386b783465343368767a737566736876362033316136626162353061383462383433396164636662373836626232303230663638303765366538666461363239623432343131306663376262316336623862222c2273657269616c697a65645369676e617475726573223a5b7b227075626c69634b6579223a22222c227369676e6174757265223a2274386c6e725a4b7a757264566c777343355a66422f4b314b5533516d4b5a3970343671576a3155795744307046464577584e6d754f327a4845644e3164372b2b414e5653796f5a3869547737375073546462334b3878773d227d5d2c227369676e657273223a5b22307866613061376634613064396535343463353761656361346533326233623130343862363333636466225d2c226d65746164617461223a7b22656e636f64696e67223a2275746638227d2c227369676e61626c655061796c6f6164223a224d546b304e5463304e6a67324e5463794e6a55334e545a6b4d6a41314d7a59354e6a63325a5459314e6a51794d44526b4e6a55334d7a637a4e6a45324e7a59314d32457759544d784d7a677a4e6a557a4e5451304d5455794d6a417a4d544d774d7a417a4d4449774e7a51325a6a49774e6a45324e4459304e7a49315a6a63304e6a55334d7a63304d7a45334d5463794e7a457a4f544d324e6a677a4d4463794e6d45324f4463304d7a49334e544d324e6d557a4d7a59324e6a63334e7a5a6b4e7a6b7a4f544d774e7a677a4e7a59334e6d5132597a4d344e6a67324e4463314e6a55334e7a63304d7a49325a545a6b4e7a497a4d6a63314d7a59324d7a5a6b4e6d49334d4463334e7a45334e444d304e7a637a4e7a4d344d7a6b334e7a5a694d7a51324e544d304d7a673359545a684e7a4d324d545a694e6a637a4d6a4d334e6a51334e544d7a4e6a677a4e7a4d774e7a63325a4459314e6d45334e545a694d7a517a4f445a694e7a677a4e4459314d7a517a4d7a59344e7a59335954637a4e7a55324e6a637a4e6a67334e6a4d324d6a417a4d7a4d784e6a457a4e6a59794e6a45324d6a4d314d7a41324d544d344d7a51324d6a4d344d7a517a4d7a4d354e6a45324e44597a4e6a59324d6a4d334d7a677a4e6a59794e6a497a4d6a4d774d7a497a4d4459324d7a597a4f444d774d7a63324e544d324e6a557a4f4459324e6a51324d544d324d7a497a4f5459794d7a517a4d6a4d304d7a457a4d544d774e6a59324d7a4d334e6a49324d6a4d784e6a4d7a4e6a59794d7a67324d673d3d227d',
57
+ };
58
+ exports.fixtures = {
59
+ tests: { validMessage, empty, specialChars, longMessage, midnight },
60
+ signedTest: validMessage,
61
+ messageBuilderTest: midnight,
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvbWVzc2FnZXMvZWlwMTkxL2ZpeHR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sWUFBWSxHQUFHO0lBQ25CLEtBQUssRUFBRTtRQUNMLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFVBQVUsRUFBRSxXQUFXO1NBQ3hCO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLDRDQUE0QyxFQUFFO1lBQ2hFLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUNwQixvSUFBb0ksRUFDcEksS0FBSyxDQUNOO1NBQ0Y7UUFDRCxNQUFNLEVBQUUsNENBQTRDO0tBQ3JEO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsbUJBQW1CLEVBQUUsb0ZBQW9GO1FBQ3pHLHNCQUFzQixFQUNwQixrSEFBa0g7S0FDckg7Q0FDRixDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUc7SUFDWixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0lBQ3RCLFFBQVEsRUFBRSxFQUFFLG1CQUFtQixFQUFFLHdEQUF3RCxFQUFFO0NBQzVGLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRztJQUNuQixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0lBQ2hDLFFBQVEsRUFBRSxFQUFFLG1CQUFtQixFQUFFLDhFQUE4RSxFQUFFO0NBQ2xILENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRztJQUNsQixLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQ0wsbUZBQW1GO1lBQ25GLGdGQUFnRjtLQUNuRjtJQUNELFFBQVEsRUFBRTtRQUNSLG1CQUFtQixFQUNqQiwwWEFBMFg7S0FDN1g7Q0FDRixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUc7SUFDZixLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQ0wsNEhBQTRIO1lBQzVILGtFQUFrRTtRQUNwRSxRQUFRLEVBQUU7WUFDUixRQUFRLEVBQUUsTUFBTTtZQUNoQixVQUFVLEVBQUUsV0FBVztTQUN4QjtRQUNELFNBQVMsRUFBRTtZQUNULFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDdEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLG9JQUFvSSxFQUNwSSxLQUFLLENBQ047U0FDRjtRQUNELE1BQU0sRUFBRSw0Q0FBNEM7S0FDckQ7SUFDRCxRQUFRLEVBQUU7UUFDUixtQkFBbUIsRUFDakIsZ2JBQWdiO0tBQ25iO0lBQ0QsWUFBWSxFQUNWLDhpRUFBOGlFO0NBQ2pqRSxDQUFDO0FBRVcsUUFBQSxRQUFRLEdBQUc7SUFDdEIsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtJQUNuRSxVQUFVLEVBQUUsWUFBWTtJQUN4QixrQkFBa0IsRUFBRSxRQUFRO0NBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB2YWxpZE1lc3NhZ2UgPSB7XG4gIGlucHV0OiB7XG4gICAgcGF5bG9hZDogJ0hlbGxvLCB3b3JsZCEnLFxuICAgIG1ldGFkYXRhOiB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgY3VzdG9tRGF0YTogJ3Rlc3QgZGF0YScsXG4gICAgfSxcbiAgICBzaWduYXR1cmU6IHtcbiAgICAgIHB1YmxpY0tleTogeyBwdWI6ICcweDdFNUY0NTUyMDkxQTY5MTI1ZDVEZkNiN2I4QzI2NTkwMjkzOTVCZGYnIH0sXG4gICAgICBzaWduYXR1cmU6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAnNWQ5OWI2ZjdmNmQxZjczZDFhMjY0OTdmMmIxYzg5YjI0YzA5OTM5MTNmODZlOWEyZDAyY2Q2OTg4N2Q5Yzk0ZjNjODgwMzU4NTc5ZDgxMWIyMWRkMWI3ZmQ5YmIwMWMxZDgxZDEwZTY5ZjAzODRlNjc1YzMyYjM5NjQzYmU4OTIxYicsXG4gICAgICAgICdoZXgnXG4gICAgICApLFxuICAgIH0sXG4gICAgc2lnbmVyOiAnMHg3RTVGNDU1MjA5MUE2OTEyNWQ1RGZDYjdiOEMyNjU5MDI5Mzk1QmRmJyxcbiAgfSxcbiAgZXhwZWN0ZWQ6IHtcbiAgICBleHBlY3RlZFNpZ25hYmxlSGV4OiAnMTk0NTc0Njg2NTcyNjU3NTZkMjA1MzY5Njc2ZTY1NjQyMDRkNjU3MzczNjE2NzY1M2EwYTMxMzM0ODY1NmM2YzZmMmMyMDc3NmY3MjZjNjQyMScsXG4gICAgZXhwZWN0ZWRTaWduYWJsZUJhc2U2NDpcbiAgICAgICdNVGswTlRjME5qZzJOVGN5TmpVM05UWmtNakExTXpZNU5qYzJaVFkxTmpReU1EUmtOalUzTXpjek5qRTJOelkxTTJFd1lUTXhNek0wT0RZMU5tTTJZelptTW1NeU1EYzNObVkzTWpaak5qUXlNUT09JyxcbiAgfSxcbn07XG5cbmNvbnN0IGVtcHR5ID0ge1xuICBpbnB1dDogeyBwYXlsb2FkOiAnJyB9LFxuICBleHBlY3RlZDogeyBleHBlY3RlZFNpZ25hYmxlSGV4OiAnMTk0NTc0Njg2NTcyNjU3NTZkMjA1MzY5Njc2ZTY1NjQyMDRkNjU3MzczNjE2NzY1M2EwYTMwJyB9LFxufTtcblxuY29uc3Qgc3BlY2lhbENoYXJzID0ge1xuICBpbnB1dDogeyBwYXlsb2FkOiAnIUAjJCVeJiooKScgfSxcbiAgZXhwZWN0ZWQ6IHsgZXhwZWN0ZWRTaWduYWJsZUhleDogJzE5NDU3NDY4NjU3MjY1NzU2ZDIwNTM2OTY3NmU2NTY0MjA0ZDY1NzM3MzYxNjc2NTNhMGEzMTMwMjE0MDIzMjQyNTVlMjYyYTI4MjknIH0sXG59O1xuXG5jb25zdCBsb25nTWVzc2FnZSA9IHtcbiAgaW5wdXQ6IHtcbiAgICBwYXlsb2FkOlxuICAgICAgJ1RoaXMgaXMgYSB2ZXJ5IGxvbmcgbWVzc2FnZSB0aGF0IGNvbnRhaW5zIG11bHRpcGxlIGxpbmVzIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMuICcgK1xuICAgICAgJ0l0IGlzIGRlc2lnbmVkIHRvIHRlc3QgdGhlIEVJUC0xOTEgbWVzc2FnZSBmb3JtYXQgd2l0aCBhIG1vcmUgY29tcGxleCBwYXlsb2FkLicsXG4gIH0sXG4gIGV4cGVjdGVkOiB7XG4gICAgZXhwZWN0ZWRTaWduYWJsZUhleDpcbiAgICAgICcxOTQ1NzQ2ODY1NzI2NTc1NmQyMDUzNjk2NzZlNjU2NDIwNGQ2NTczNzM2MTY3NjUzYTBhMzEzNTM5NTQ2ODY5NzMyMDY5NzMyMDYxMjA3NjY1NzI3OTIwNmM2ZjZlNjcyMDZkNjU3MzczNjE2NzY1MjA3NDY4NjE3NDIwNjM2ZjZlNzQ2MTY5NmU3MzIwNmQ3NTZjNzQ2OTcwNmM2NTIwNmM2OTZlNjU3MzIwNjE2ZTY0MjA3MzcwNjU2MzY5NjE2YzIwNjM2ODYxNzI2MTYzNzQ2NTcyNzMyZTIwNDk3NDIwNjk3MzIwNjQ2NTczNjk2NzZlNjU2NDIwNzQ2ZjIwNzQ2NTczNzQyMDc0Njg2NTIwNDU0OTUwMmQzMTM5MzEyMDZkNjU3MzczNjE2NzY1MjA2NjZmNzI2ZDYxNzQyMDc3Njk3NDY4MjA2MTIwNmQ2ZjcyNjUyMDYzNmY2ZDcwNmM2NTc4MjA3MDYxNzk2YzZmNjE2NDJlJyxcbiAgfSxcbn07XG5cbmNvbnN0IG1pZG5pZ2h0ID0ge1xuICBpbnB1dDoge1xuICAgIHBheWxvYWQ6XG4gICAgICAnU1RBUiAxMDAwIHRvIGFkZHJfdGVzdDFxcnE5NmgwcmpodDJ1Nm4zZmd3bXk5MHg3Z21sOGhkdWV3dDJubXIydTZjbWtwd3F0NHc3ODl3azRlNDh6anNha2cyN2R1M2g3MHdtZWp1azQ4a3g0ZTQzaHZ6c3Vmc2h2NiAnICtcbiAgICAgICczMWE2YmFiNTBhODRiODQzOWFkY2ZiNzg2YmIyMDIwZjY4MDdlNmU4ZmRhNjI5YjQyNDExMGZjN2JiMWM2YjhiJyxcbiAgICBtZXRhZGF0YToge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIGN1c3RvbURhdGE6ICd0ZXN0IGRhdGEnLFxuICAgIH0sXG4gICAgc2lnbmF0dXJlOiB7XG4gICAgICBwdWJsaWNLZXk6IHsgcHViOiAnJyB9LFxuICAgICAgc2lnbmF0dXJlOiBCdWZmZXIuZnJvbShcbiAgICAgICAgJ2I3Yzk2N2FkOTJiM2JhYjc1NTk3MGIwMmU1OTdjMWZjYWQ0YTUzNzQyNjI5OWY2OWUzYWE5NjhmNTUzMjU4M2QyOTE0NTEzMDVjZDlhZTNiNmNjNzExZDM3NTc3YmZiZTAwZDU1MmNhODY3Yzg5M2MzYmVjZmIxMzc1YmRjYWYzMWMnLFxuICAgICAgICAnaGV4J1xuICAgICAgKSxcbiAgICB9LFxuICAgIHNpZ25lcjogJzB4ZmEwYTdmNGEwZDllNTQ0YzU3YWVjYTRlMzJiM2IxMDQ4YjYzM2NkZicsXG4gIH0sXG4gIGV4cGVjdGVkOiB7XG4gICAgZXhwZWN0ZWRTaWduYWJsZUhleDpcbiAgICAgICcxOTQ1NzQ2ODY1NzI2NTc1NmQyMDUzNjk2NzZlNjU2NDIwNGQ2NTczNzM2MTY3NjUzYTBhMzEzODM2NTM1NDQxNTIyMDMxMzAzMDMwMjA3NDZmMjA2MTY0NjQ3MjVmNzQ2NTczNzQzMTcxNzI3MTM5MzY2ODMwNzI2YTY4NzQzMjc1MzY2ZTMzNjY2Nzc3NmQ3OTM5MzA3ODM3Njc2ZDZjMzg2ODY0NzU2NTc3NzQzMjZlNmQ3MjMyNzUzNjYzNmQ2YjcwNzc3MTc0MzQ3NzM3MzgzOTc3NmIzNDY1MzQzODdhNmE3MzYxNmI2NzMyMzc2NDc1MzM2ODM3MzA3NzZkNjU2YTc1NmIzNDM4NmI3ODM0NjUzNDMzNjg3NjdhNzM3NTY2NzM2ODc2MzYyMDMzMzE2MTM2NjI2MTYyMzUzMDYxMzgzNDYyMzgzNDMzMzk2MTY0NjM2NjYyMzczODM2NjI2MjMyMzAzMjMwNjYzNjM4MzAzNzY1MzY2NTM4NjY2NDYxMzYzMjM5NjIzNDMyMzQzMTMxMzA2NjYzMzc2MjYyMzE2MzM2NjIzODYyJyxcbiAgfSxcbiAgYnJvYWRjYXN0SGV4OlxuICAgICc3YjIyNzQ3OTcwNjUyMjNhMjI0NTQ5NTAzMTM5MzEyMjJjMjI3MDYxNzk2YzZmNjE2NDIyM2EyMjUzNTQ0MTUyMjAzMTMwMzAzMDIwNzQ2ZjIwNjE2NDY0NzI1Zjc0NjU3Mzc0MzE3MTcyNzEzOTM2NjgzMDcyNmE2ODc0MzI3NTM2NmUzMzY2Njc3NzZkNzkzOTMwNzgzNzY3NmQ2YzM4Njg2NDc1NjU3Nzc0MzI2ZTZkNzIzMjc1MzY2MzZkNmI3MDc3NzE3NDM0NzczNzM4Mzk3NzZiMzQ2NTM0Mzg3YTZhNzM2MTZiNjczMjM3NjQ3NTMzNjgzNzMwNzc2ZDY1NmE3NTZiMzQzODZiNzgzNDY1MzQzMzY4NzY3YTczNzU2NjczNjg3NjM2MjAzMzMxNjEzNjYyNjE2MjM1MzA2MTM4MzQ2MjM4MzQzMzM5NjE2NDYzNjY2MjM3MzgzNjYyNjIzMjMwMzIzMDY2MzYzODMwMzc2NTM2NjUzODY2NjQ2MTM2MzIzOTYyMzQzMjM0MzEzMTMwNjY2MzM3NjI2MjMxNjMzNjYyMzg2MjIyMmMyMjczNjU3MjY5NjE2YzY5N2E2NTY0NTM2OTY3NmU2MTc0NzU3MjY1NzMyMjNhNWI3YjIyNzA3NTYyNmM2OTYzNGI2NTc5MjIzYTIyMjIyYzIyNzM2OTY3NmU2MTc0NzU3MjY1MjIzYTIyNzQzODZjNmU3MjVhNGI3YTc1NzI2NDU2NmM3NzczNDMzNTVhNjY0MjJmNGIzMTRiNTUzMzUxNmQ0YjVhMzk3MDM0MzY3MTU3NmEzMTU1Nzk1NzQ0MzA3MDQ2NDY0NTc3NTg0ZTZkNzU0ZjMyN2E0ODQ1NjQ0ZTMxNjQzNzJiMmI0MTRlNTY1Mzc5NmY1YTM4Njk1NDc3MzczNzUwNzM1NDY0NjIzMzRiMzg3ODc3M2QyMjdkNWQyYzIyNzM2OTY3NmU2NTcyNzMyMjNhNWIyMjMwNzg2NjYxMzA2MTM3NjYzNDYxMzA2NDM5NjUzNTM0MzQ2MzM1Mzc2MTY1NjM2MTM0NjUzMzMyNjIzMzYyMzEzMDM0Mzg2MjM2MzMzMzYzNjQ2NjIyNWQyYzIyNmQ2NTc0NjE2NDYxNzQ2MTIyM2E3YjIyNjU2ZTYzNmY2NDY5NmU2NzIyM2EyMjc1NzQ2NjM4MjI3ZDJjMjI3MzY5Njc2ZTYxNjI2YzY1NTA2MTc5NmM2ZjYxNjQyMjNhMjI0ZDU0NmIzMDRlNTQ2MzMwNGU2YTY3MzI0ZTU0NjM3OTRlNmE1NTMzNGU1NDVhNmI0ZDZhNDEzMTRkN2E1OTM1NGU2YTYzMzI1YTU0NTkzMTRlNmE1MTc5NGQ0NDUyNmI0ZTZhNTUzMzRkN2E2MzdhNGU2YTQ1MzI0ZTdhNTkzMTRkMzI0NTc3NTk1NDRkNzg0ZDdhNjc3YTRlNmE1NTdhNGU1NDUxMzA0ZDU0NTU3OTRkNmE0MTdhNGQ1NDRkNzc0ZDdhNDE3YTRkNDQ0OTc3NGU3YTUxMzI1YTZhNDk3NzRlNmE0NTMyNGU0NDU5MzA0ZTdhNDkzMTVhNmE2MzMwNGU2YTU1MzM0ZDdhNjMzMDRkN2E0NTMzNGQ1NDYzNzk0ZTdhNDU3YTRmNTQ0ZDMyNGU2YTY3N2E0ZDQ0NjM3OTRlNmQ0NTMyNGY0NDYzMzA0ZDdhNDkzMzRlNTQ0ZDMyNGU2ZDU1N2E0ZDdhNTkzMjRlNmE2MzMzNGU3YTVhNmI0ZTdhNmI3YTRmNTQ0ZDc3NGU3YTY3N2E0ZTdhNTkzMzRlNmQ1MTMyNTk3YTRkMzQ0ZTZhNjczMjRlNDQ2MzMxNGU2YTU1MzM0ZTdhNjMzMDRkN2E0OTMyNWE1NDVhNmI0ZTdhNDk3YTRkNmE2MzMxNGQ3YTU5MzI0ZDdhNWE2YjRlNmQ0OTMzNGQ0NDYzMzM0ZTdhNDUzMzRlNDQ0ZDMwNGU3YTYzN2E0ZTdhNGQzNDRkN2E2YjMzNGU3YTVhNjk0ZDdhNTEzMjRlNTQ0ZDMwNGQ3YTY3MzM1OTU0NWE2ODRlN2E0ZDMyNGQ1NDVhNjk0ZTZhNjM3YTRkNmE0ZDMzNGU2YTUxMzM0ZTU0NGQ3YTRlNmE2NzdhNGU3YTRkNzc0ZTdhNjMzMjVhNDQ1OTMxNGU2ZDQ1MzM0ZTU0NWE2OTRkN2E1MTdhNGY0NDVhNjk0ZTdhNjc3YTRlNDQ1OTMxNGQ3YTUxN2E0ZDdhNTkzNDRlN2E1OTMzNTk1NDYzN2E0ZTdhNTUzMjRlNmE2MzdhNGU2YTY3MzM0ZTZhNGQzMjRkNmE0MTdhNGQ3YTRkNzg0ZTZhNDU3YTRlNmE1OTc5NGU2YTQ1MzI0ZDZhNGQzMTRkN2E0MTMyNGQ1NDRkMzQ0ZDdhNTEzMjRkNmE0ZDM0NGQ3YTUxN2E0ZDdhNGQzNTRlNmE0NTMyNGU0NDU5N2E0ZTZhNTkzMjRkNmE0ZDMzNGQ3YTY3N2E0ZTZhNTk3OTRlNmE0OTdhNGQ2YTRkNzc0ZDdhNDk3YTRkNDQ1OTMyNGQ3YTU5N2E0ZjQ0NGQ3NzRkN2E2MzMyNGU1NDRkMzI0ZTZhNTU3YTRmNDQ1OTMyNGU2YTUxMzI0ZDU0NGQzMjRkN2E0OTdhNGY1NDU5Nzk0ZDdhNTE3YTRkNmE0ZDMwNGQ3YTQ1N2E0ZDU0NGQ3NzRlNmE1OTMyNGQ3YTRkMzM0ZTZhNDkzMjRkNmE0ZDc4NGU2YTRkN2E0ZTZhNTk3OTRkN2E2NzMyNGQ2NzNkM2QyMjdkJyxcbn07XG5cbmV4cG9ydCBjb25zdCBmaXh0dXJlcyA9IHtcbiAgdGVzdHM6IHsgdmFsaWRNZXNzYWdlLCBlbXB0eSwgc3BlY2lhbENoYXJzLCBsb25nTWVzc2FnZSwgbWlkbmlnaHQgfSxcbiAgc2lnbmVkVGVzdDogdmFsaWRNZXNzYWdlLFxuICBtZXNzYWdlQnVpbGRlclRlc3Q6IG1pZG5pZ2h0LFxufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=eip712Message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip712Message.d.ts","sourceRoot":"","sources":["../../../../../test/unit/messages/eip712/eip712Message.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("should");
4
+ const src_1 = require("../../../../src/");
5
+ const fixtures_1 = require("./fixtures");
6
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
7
+ const abstractEthMessagesTests_1 = require("../abstractEthMessagesTests");
8
+ describe('EIP712 Message', () => {
9
+ (0, abstractEthMessagesTests_1.testEthMessageSigning)({
10
+ messageType: sdk_core_1.MessageStandardType.EIP712,
11
+ messageClass: src_1.EIP712Message,
12
+ ...fixtures_1.fixtures,
13
+ });
14
+ });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9tZXNzYWdlcy9laXA3MTIvZWlwNzEyTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQiwwQ0FBaUQ7QUFDakQseUNBQXNDO0FBQ3RDLG1EQUEyRDtBQUMzRCwwRUFBb0U7QUFFcEUsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFBLGdEQUFxQixFQUFDO1FBQ3BCLFdBQVcsRUFBRSw4QkFBbUIsQ0FBQyxNQUFNO1FBQ3ZDLFlBQVksRUFBRSxtQkFBYTtRQUMzQixHQUFHLG1CQUFRO0tBQ1osQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBFSVA3MTJNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjLyc7XG5pbXBvcnQgeyBmaXh0dXJlcyB9IGZyb20gJy4vZml4dHVyZXMnO1xuaW1wb3J0IHsgTWVzc2FnZVN0YW5kYXJkVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IHRlc3RFdGhNZXNzYWdlU2lnbmluZyB9IGZyb20gJy4uL2Fic3RyYWN0RXRoTWVzc2FnZXNUZXN0cyc7XG5cbmRlc2NyaWJlKCdFSVA3MTIgTWVzc2FnZScsICgpID0+IHtcbiAgdGVzdEV0aE1lc3NhZ2VTaWduaW5nKHtcbiAgICBtZXNzYWdlVHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVA3MTIsXG4gICAgbWVzc2FnZUNsYXNzOiBFSVA3MTJNZXNzYWdlLFxuICAgIC4uLmZpeHR1cmVzLFxuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=eip712MessageBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip712MessageBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/messages/eip712/eip712MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("should");
4
+ const src_1 = require("../../../../src");
5
+ const fixtures_1 = require("./fixtures");
6
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
7
+ const abstractEthMessageBuilderTests_1 = require("../abstractEthMessageBuilderTests");
8
+ describe('EIP712 Message Builder', () => {
9
+ (0, abstractEthMessageBuilderTests_1.testEthMessageBuilding)({
10
+ messageType: sdk_core_1.MessageStandardType.EIP712,
11
+ messageBuilderClass: src_1.Eip712MessageBuilder,
12
+ messageClass: src_1.EIP712Message,
13
+ test: fixtures_1.fixtures.messageBuilderTest,
14
+ });
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyTWVzc2FnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvbWVzc2FnZXMvZWlwNzEyL2VpcDcxMk1lc3NhZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWdCO0FBQ2hCLHlDQUFzRTtBQUN0RSx5Q0FBc0M7QUFDdEMsbURBQTJEO0FBQzNELHNGQUEyRTtBQUUzRSxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLElBQUEsdURBQXNCLEVBQUM7UUFDckIsV0FBVyxFQUFFLDhCQUFtQixDQUFDLE1BQU07UUFDdkMsbUJBQW1CLEVBQUUsMEJBQW9CO1FBQ3pDLFlBQVksRUFBRSxtQkFBYTtRQUMzQixJQUFJLEVBQUUsbUJBQVEsQ0FBQyxrQkFBa0I7S0FDbEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBFSVA3MTJNZXNzYWdlLCBFaXA3MTJNZXNzYWdlQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBmaXh0dXJlcyB9IGZyb20gJy4vZml4dHVyZXMnO1xuaW1wb3J0IHsgTWVzc2FnZVN0YW5kYXJkVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IHRlc3RFdGhNZXNzYWdlQnVpbGRpbmcgfSBmcm9tICcuLi9hYnN0cmFjdEV0aE1lc3NhZ2VCdWlsZGVyVGVzdHMnO1xuXG5kZXNjcmliZSgnRUlQNzEyIE1lc3NhZ2UgQnVpbGRlcicsICgpID0+IHtcbiAgdGVzdEV0aE1lc3NhZ2VCdWlsZGluZyh7XG4gICAgbWVzc2FnZVR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQNzEyLFxuICAgIG1lc3NhZ2VCdWlsZGVyQ2xhc3M6IEVpcDcxMk1lc3NhZ2VCdWlsZGVyLFxuICAgIG1lc3NhZ2VDbGFzczogRUlQNzEyTWVzc2FnZSxcbiAgICB0ZXN0OiBmaXh0dXJlcy5tZXNzYWdlQnVpbGRlclRlc3QsXG4gIH0pO1xufSk7XG4iXX0=