@ledgerhq/hw-app-exchange 0.16.0 → 0.17.0-nightly.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 (42) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/package.json +6 -6
  3. package/lib/Exchange.integ.test.d.ts +0 -2
  4. package/lib/Exchange.integ.test.d.ts.map +0 -1
  5. package/lib/Exchange.integ.test.js +0 -458
  6. package/lib/Exchange.integ.test.js.map +0 -1
  7. package/lib/Exchange.test.d.ts +0 -2
  8. package/lib/Exchange.test.d.ts.map +0 -1
  9. package/lib/Exchange.test.js +0 -341
  10. package/lib/Exchange.test.js.map +0 -1
  11. package/lib/ReturnCode.test.d.ts +0 -2
  12. package/lib/ReturnCode.test.d.ts.map +0 -1
  13. package/lib/ReturnCode.test.js +0 -21
  14. package/lib/ReturnCode.test.js.map +0 -1
  15. package/lib/SellUtils.test.d.ts +0 -2
  16. package/lib/SellUtils.test.d.ts.map +0 -1
  17. package/lib/SellUtils.test.js +0 -32
  18. package/lib/SellUtils.test.js.map +0 -1
  19. package/lib/SwapUtils.test.d.ts +0 -2
  20. package/lib/SwapUtils.test.d.ts.map +0 -1
  21. package/lib/SwapUtils.test.js +0 -34
  22. package/lib/SwapUtils.test.js.map +0 -1
  23. package/lib-es/Exchange.integ.test.d.ts +0 -2
  24. package/lib-es/Exchange.integ.test.d.ts.map +0 -1
  25. package/lib-es/Exchange.integ.test.js +0 -453
  26. package/lib-es/Exchange.integ.test.js.map +0 -1
  27. package/lib-es/Exchange.test.d.ts +0 -2
  28. package/lib-es/Exchange.test.d.ts.map +0 -1
  29. package/lib-es/Exchange.test.js +0 -313
  30. package/lib-es/Exchange.test.js.map +0 -1
  31. package/lib-es/ReturnCode.test.d.ts +0 -2
  32. package/lib-es/ReturnCode.test.d.ts.map +0 -1
  33. package/lib-es/ReturnCode.test.js +0 -19
  34. package/lib-es/ReturnCode.test.js.map +0 -1
  35. package/lib-es/SellUtils.test.d.ts +0 -2
  36. package/lib-es/SellUtils.test.d.ts.map +0 -1
  37. package/lib-es/SellUtils.test.js +0 -30
  38. package/lib-es/SellUtils.test.js.map +0 -1
  39. package/lib-es/SwapUtils.test.d.ts +0 -2
  40. package/lib-es/SwapUtils.test.d.ts.map +0 -1
  41. package/lib-es/SwapUtils.test.js +0 -32
  42. package/lib-es/SwapUtils.test.js.map +0 -1
@@ -1,341 +0,0 @@
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const hw_transport_mocker_1 = require("@ledgerhq/hw-transport-mocker");
30
- const Exchange_1 = __importStar(require("./Exchange"));
31
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
32
- describe("Constructor", () => {
33
- [2 /* ExchangeTypes.Fund */, 1 /* ExchangeTypes.Sell */, 0 /* ExchangeTypes.Swap */].forEach(exchangeType => {
34
- it(`Exchange (value of ${exchangeType}) init with default rate types of fixed`, async () => {
35
- const transport = await (0, hw_transport_mocker_1.openTransportReplayer)(hw_transport_mocker_1.RecordStore.fromString(""));
36
- const exchange = new Exchange_1.default(transport, exchangeType);
37
- expect(exchange.transactionRate).toBe(0 /* RateTypes.Fixed */);
38
- });
39
- [0 /* RateTypes.Fixed */, 1 /* RateTypes.Floating */].forEach(rateType => {
40
- it(`Exchange (value of ${exchangeType}) init with rate types of value ${rateType}`, async () => {
41
- const transport = await (0, hw_transport_mocker_1.openTransportReplayer)(hw_transport_mocker_1.RecordStore.fromString(""));
42
- const exchange = new Exchange_1.default(transport, exchangeType, rateType);
43
- expect(exchange.transactionRate).toBe(rateType);
44
- });
45
- });
46
- });
47
- });
48
- describe("startNewTransaction", () => {
49
- const recordStore = new hw_transport_mocker_1.RecordStore();
50
- const mockTransport = new hw_transport_mocker_1.MockTransport(Buffer.from([0, 0x90, 0x00]));
51
- const transport = (0, hw_transport_mocker_1.createTransportRecorder)(mockTransport, recordStore);
52
- beforeEach(() => {
53
- recordStore.clearStore();
54
- });
55
- it("sends a correct sequence of APDU when Swap", async () => {
56
- // Given
57
- const mockNonceResponse = "2ac38f187c"; // Response of length 10
58
- mockTransport.setNewResponse(Buffer.concat([
59
- Buffer.from(mockNonceResponse),
60
- Buffer.from([0x90, 0x00]), // StatusCodes.OK
61
- ]));
62
- const exchange = new Exchange_1.default(new transport(mockTransport), 0 /* ExchangeTypes.Swap */);
63
- // When
64
- const result = await exchange.startNewTransaction();
65
- // Then
66
- const expectCommand = Buffer.from([
67
- 0xe0,
68
- 0x03, // Start Exchance
69
- 0 /* RateTypes.Fixed */,
70
- 0 /* ExchangeTypes.Swap */,
71
- 0x00, // Data
72
- ]).toString("hex");
73
- expect(recordStore.queue[0][0]).toBe(expectCommand);
74
- expect(result).toEqual(mockNonceResponse);
75
- });
76
- it.each([
77
- { name: "Sell", type: 1 /* ExchangeTypes.Sell */ },
78
- { name: "Fund", type: 2 /* ExchangeTypes.Fund */ },
79
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
80
- ])("returns a base64 nonce when $name", async ({ name, type }) => {
81
- // Given
82
- const mockNonceResponse = "2ac38f187c2ac38f187c2ac38f187c7c"; // Response of length 10
83
- mockTransport.setNewResponse(Buffer.concat([
84
- Buffer.from(mockNonceResponse),
85
- Buffer.from([0x90, 0x00]), // StatusCodes.OK
86
- ]));
87
- const exchange = new Exchange_1.default(new transport(mockTransport), type);
88
- // When
89
- const result = await exchange.startNewTransaction();
90
- // Then
91
- const expectCommand = Buffer.from([
92
- 0xe0,
93
- 0x03, // Start Exchance
94
- 0 /* RateTypes.Fixed */,
95
- type,
96
- 0x00, // Data
97
- ]).toString("hex");
98
- const expectedNonce = btoa(mockNonceResponse);
99
- expect(recordStore.queue[0][0]).toBe(expectCommand);
100
- expect(result).toEqual(expectedNonce);
101
- });
102
- it.each([
103
- { name: "Swap NG", type: 3 /* ExchangeTypes.SwapNg */ },
104
- { name: "Sell NG", type: 4 /* ExchangeTypes.SellNg */ },
105
- { name: "Fund NG", type: 5 /* ExchangeTypes.FundNg */ },
106
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
107
- ])("returns a 32 bytes nonce when $name", async ({ name, type }) => {
108
- // Given
109
- const mockNonceResponse = Buffer.from("2ac38f187c2ac38f187c2ac38f187c7c"); // Response of 32 bytes
110
- mockTransport.setNewResponse(Buffer.concat([
111
- mockNonceResponse,
112
- Buffer.from([0x90, 0x00]), // StatusCodes.OK
113
- ]));
114
- const exchange = new Exchange_1.default(new transport(mockTransport), 3 /* ExchangeTypes.SwapNg */);
115
- // When
116
- const result = await exchange.startNewTransaction();
117
- // Then
118
- const expectCommand = Buffer.from([
119
- 0xe0,
120
- 0x03, // Start Exchance
121
- 0 /* RateTypes.Fixed */,
122
- 3 /* ExchangeTypes.SwapNg */,
123
- 0x00, // Data
124
- ]).toString("hex");
125
- expect(recordStore.queue[0][0]).toBe(expectCommand);
126
- expect(result).toEqual(mockNonceResponse.toString("hex"));
127
- });
128
- it("throws an error if status is not ok", async () => {
129
- // Given
130
- const mockResponse = "2ac38f187c"; // Response of length 10
131
- mockTransport.setNewResponse(Buffer.concat([Buffer.from(mockResponse), Buffer.from([0x6a, 0x80])]));
132
- const exchange = new Exchange_1.default(new transport(mockTransport), 0 /* ExchangeTypes.Swap */);
133
- // When & Then
134
- await expect(exchange.startNewTransaction()).rejects.toThrowError();
135
- });
136
- });
137
- describe("setPartnerKey", () => {
138
- const recordStore = new hw_transport_mocker_1.RecordStore();
139
- const mockTransport = new hw_transport_mocker_1.MockTransport(Buffer.from([0, 0x90, 0x00]));
140
- const transport = (0, hw_transport_mocker_1.createTransportRecorder)(mockTransport, recordStore);
141
- beforeEach(() => {
142
- recordStore.clearStore();
143
- });
144
- it("sends legacy info", async () => {
145
- // Given
146
- const exchange = new Exchange_1.default(new transport(mockTransport), 0 /* ExchangeTypes.Swap */);
147
- const info = {
148
- name: "LTX",
149
- curve: "WHATEVER",
150
- publicKey: Buffer.from("1234567890abcdef", "hex"),
151
- };
152
- // <OVERALL_LENGTH><DATA_SIZE><DATA>
153
- // <DATA> = <NAME_SIZE><NAME><PUBKEY>
154
- const hexEncodedInfoExpected = "0c034c54581234567890abcdef";
155
- // When
156
- await exchange.setPartnerKey(info);
157
- // Then
158
- const expectCommand = Buffer.from([0xe0, 0x04, 0 /* RateTypes.Fixed */, 0 /* ExchangeTypes.Swap */]).toString("hex");
159
- expect(recordStore.queue[0][0]).toBe(expectCommand + hexEncodedInfoExpected);
160
- });
161
- it("sends NG info", async () => {
162
- // Given
163
- const exchange = (0, Exchange_1.createExchange)(new transport(mockTransport), 3 /* ExchangeTypes.SwapNg */);
164
- const info = {
165
- name: "LTX",
166
- curve: "secp256k1",
167
- publicKey: Buffer.from("1234567890abcdef", "hex"),
168
- };
169
- // <OVERALL_LENGTH><DATA_SIZE><DATA>
170
- // <DATA> = <NAME_SIZE><NAME><CURVE><PUBKEY>
171
- const hexEncodedInfoExpected = "0d034c5458001234567890abcdef";
172
- // When
173
- await exchange.setPartnerKey(info);
174
- // Then
175
- const expectCommand = Buffer.from([0xe0, 0x04, 0 /* RateTypes.Fixed */, 3 /* ExchangeTypes.SwapNg */]).toString("hex");
176
- expect(recordStore.queue[0][0]).toBe(expectCommand + hexEncodedInfoExpected);
177
- });
178
- });
179
- describe("processTransaction", () => {
180
- const recordStore = new hw_transport_mocker_1.RecordStore();
181
- const mockTransport = new hw_transport_mocker_1.MockTransport(Buffer.from([0, 0x90, 0x00]));
182
- const transport = (0, hw_transport_mocker_1.createTransportRecorder)(mockTransport, recordStore);
183
- beforeEach(() => {
184
- recordStore.clearStore();
185
- });
186
- it("sends legacy info", async () => {
187
- // Given
188
- const exchange = new Exchange_1.default(new transport(mockTransport), 0 /* ExchangeTypes.Swap */);
189
- const tx = Buffer.from("1234567890abcdef", "hex");
190
- const fee = new bignumber_js_1.default("10");
191
- // <OVERALL_LENGTH><TX_LENGTH><TX><FEE_LENGTH><FEE>
192
- const hexEncodedInfoExpected = "0b081234567890abcdef010a";
193
- // When
194
- await exchange.processTransaction(tx, fee);
195
- // Then
196
- const expectCommand = Buffer.from([0xe0, 0x06, 0 /* RateTypes.Fixed */, 0 /* ExchangeTypes.Swap */]).toString("hex");
197
- expect(recordStore.queue[0][0]).toBe(expectCommand + hexEncodedInfoExpected);
198
- });
199
- it("sends NG info", async () => {
200
- // Given
201
- const exchange = (0, Exchange_1.createExchange)(new transport(mockTransport), 3 /* ExchangeTypes.SwapNg */);
202
- const tx = Buffer.from("1234567890abcdef", "hex");
203
- const fee = new bignumber_js_1.default("10");
204
- // <OVERALL_LENGTH><ENC_TX_FORMAT><TX_LENGTH><TX><FEE_LENGTH><FEE>
205
- const hexEncodedInfoExpected = "0d" + "00" + "0008" + "1234567890abcdef" + "01" + "0a";
206
- // When
207
- await exchange.processTransaction(tx, fee, "raw");
208
- // Then
209
- const expectCommand = Buffer.from([0xe0, 0x06, 0 /* RateTypes.Fixed */, 3 /* ExchangeTypes.SwapNg */]).toString("hex");
210
- expect(recordStore.queue[0][0]).toBe(expectCommand + hexEncodedInfoExpected);
211
- });
212
- it("sends NG info of larger than 255 bytes", async () => {
213
- // Given
214
- const exchange = (0, Exchange_1.createExchange)(new transport(mockTransport), 3 /* ExchangeTypes.SwapNg */);
215
- const value = Array(200).fill("abc").join("");
216
- const tx = Buffer.from(value, "hex");
217
- const fee = new bignumber_js_1.default("10");
218
- // <ENC_TX_FORMAT><TX_LENGTH><TX><FEE_LENGTH><FEE>
219
- const hexEncodedInfoExpected = "00" + "012c" + value + "01" + "0a";
220
- // When
221
- await exchange.processTransaction(tx, fee, "raw");
222
- // Then
223
- let expectCommand = Buffer.from([
224
- 0xe0,
225
- 0x06,
226
- 0 /* RateTypes.Fixed */,
227
- 3 /* ExchangeTypes.SwapNg */ | (0x02 << 4),
228
- ]).toString("hex");
229
- const dataLength = "ff";
230
- expect(recordStore.queue[0][0]).toBe(expectCommand + dataLength + hexEncodedInfoExpected.substring(0, 255 * 2));
231
- expectCommand = Buffer.from([
232
- 0xe0,
233
- 0x06,
234
- 0 /* RateTypes.Fixed */,
235
- 3 /* ExchangeTypes.SwapNg */ | (0x01 << 4),
236
- ]).toString("hex");
237
- const remainingDataLength = (hexEncodedInfoExpected.length - 255 * 2) / 2;
238
- expect(recordStore.queue[1][0]).toBe(expectCommand +
239
- remainingDataLength.toString(16) +
240
- hexEncodedInfoExpected.substring(255 * 2, hexEncodedInfoExpected.length));
241
- });
242
- });
243
- describe("checkTransactionSignature", () => {
244
- const recordStore = new hw_transport_mocker_1.RecordStore();
245
- const mockTransport = new hw_transport_mocker_1.MockTransport(Buffer.from([0, 0x90, 0x00]));
246
- const transport = (0, hw_transport_mocker_1.createTransportRecorder)(mockTransport, recordStore);
247
- beforeEach(() => {
248
- recordStore.clearStore();
249
- });
250
- it("sends legacy info", async () => {
251
- // Given
252
- const exchange = new Exchange_1.default(new transport(mockTransport), 0 /* ExchangeTypes.Swap */);
253
- const txSig = Buffer.from("1234567890abcdef", "hex");
254
- const hexEncodedInfoExpected = "081234567890abcdef";
255
- // When
256
- await exchange.checkTransactionSignature(txSig);
257
- // Then
258
- const expectCommand = Buffer.from([0xe0, 0x07, 0 /* RateTypes.Fixed */, 0 /* ExchangeTypes.Swap */]).toString("hex");
259
- expect(recordStore.queue[0][0]).toBe(expectCommand + hexEncodedInfoExpected);
260
- });
261
- it("sends NG info", async () => {
262
- // Given
263
- const exchange = (0, Exchange_1.createExchange)(new transport(mockTransport), 3 /* ExchangeTypes.SwapNg */);
264
- const txSig = Buffer.from("1234567890abcdef", "hex");
265
- const hexEncodedInfoExpected = "0a01011234567890abcdef";
266
- // When
267
- await exchange.checkTransactionSignature(txSig);
268
- // Then
269
- const expectCommand = Buffer.from([0xe0, 0x07, 0 /* RateTypes.Fixed */, 3 /* ExchangeTypes.SwapNg */]).toString("hex");
270
- expect(recordStore.queue[0][0]).toBe(expectCommand + hexEncodedInfoExpected);
271
- });
272
- });
273
- describe("sendPKICertificate", () => {
274
- const recordStore = new hw_transport_mocker_1.RecordStore();
275
- const mockTransport = new hw_transport_mocker_1.MockTransport(Buffer.from([0, 0x90, 0x00]));
276
- const transport = (0, hw_transport_mocker_1.createTransportRecorder)(mockTransport, recordStore);
277
- beforeEach(() => {
278
- recordStore.clearStore();
279
- });
280
- it("returns a new Challenge value", async () => {
281
- // Given
282
- const descriptor = "010203";
283
- const signature = "0a0b0c0d0e0f1a1b1c1d1e1f";
284
- const signatureLengthInHex = "0c";
285
- const exchange = (0, Exchange_1.createExchange)(new transport(mockTransport), 3 /* ExchangeTypes.SwapNg */);
286
- // When
287
- await exchange.sendPKICertificate(Buffer.from(descriptor, "hex"), Buffer.from(signature, "hex"));
288
- // Then
289
- const expectCommand = Buffer.from([0xe0, 0x0e, 0 /* RateTypes.Fixed */, 3 /* ExchangeTypes.SwapNg */]).toString("hex");
290
- const certSeparator = "15";
291
- const data = descriptor + certSeparator + signatureLengthInHex + signature;
292
- const dataLengthInHex = "11";
293
- expect(recordStore.queue[0][0]).toBe(expectCommand + dataLengthInHex + data);
294
- });
295
- });
296
- describe("getChallenge", () => {
297
- const recordStore = new hw_transport_mocker_1.RecordStore();
298
- const mockTransport = new hw_transport_mocker_1.MockTransport(Buffer.from([0, 0x90, 0x00]));
299
- const transport = (0, hw_transport_mocker_1.createTransportRecorder)(mockTransport, recordStore);
300
- it("returns a new Challenge value", async () => {
301
- // Given
302
- const mockNonceResponse = Buffer.from([0xff, 0xff, 0xff, 0xff]); // Response of 32 bytes
303
- mockTransport.setNewResponse(Buffer.concat([
304
- mockNonceResponse,
305
- Buffer.from([0x90, 0x00]), // StatusCodes.OK
306
- ]));
307
- const exchange = (0, Exchange_1.createExchange)(new transport(mockTransport), 3 /* ExchangeTypes.SwapNg */);
308
- // When
309
- const result = await exchange.getChallenge();
310
- // Then
311
- const expectCommand = Buffer.from([
312
- 0xe0,
313
- 0x10,
314
- 0 /* RateTypes.Fixed */,
315
- 3 /* ExchangeTypes.SwapNg */,
316
- 0x00, // Data
317
- ]).toString("hex");
318
- expect(recordStore.queue[0][0]).toBe(expectCommand);
319
- expect(result).toEqual(4_294_967_295);
320
- });
321
- });
322
- describe("sendTrustedDescriptor", () => {
323
- const recordStore = new hw_transport_mocker_1.RecordStore();
324
- const mockTransport = new hw_transport_mocker_1.MockTransport(Buffer.from([0, 0x90, 0x00]));
325
- const transport = (0, hw_transport_mocker_1.createTransportRecorder)(mockTransport, recordStore);
326
- beforeEach(() => {
327
- recordStore.clearStore();
328
- });
329
- it("sends the expected command", async () => {
330
- // Given
331
- const descriptor = Buffer.from([0x00, 0x0a, 0xff]);
332
- const descriptorLengthInHex = "03";
333
- const exchange = new Exchange_1.default(new transport(mockTransport), 0 /* ExchangeTypes.Swap */);
334
- // When
335
- await exchange.sendTrustedDescriptor(descriptor);
336
- // Then
337
- const expectCommand = Buffer.from([0xe0, 0x11, 0 /* RateTypes.Fixed */, 0 /* ExchangeTypes.Swap */]).toString("hex");
338
- expect(recordStore.queue[0][0]).toBe(expectCommand + descriptorLengthInHex + descriptor.toString("hex"));
339
- });
340
- });
341
- //# sourceMappingURL=Exchange.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Exchange.test.js","sourceRoot":"","sources":["../src/Exchange.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uEAKuC;AACvC,uDAAgF;AAChF,gEAAqC;AAErC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,oFAA4D,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QAClF,EAAE,CAAC,sBAAsB,YAAY,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,SAAS,GAAG,MAAM,IAAA,2CAAqB,EAAC,iCAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,yBAAiB,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,qDAAqC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACvD,EAAE,CAAC,sBAAsB,YAAY,mCAAmC,QAAQ,EAAE,EAAE,KAAK,IAAI,EAAE;gBAC7F,MAAM,SAAS,GAAG,MAAM,IAAA,2CAAqB,EAAC,iCAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1E,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACjE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,WAAW,GAAG,IAAI,iCAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,mCAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEtE,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,QAAQ;QACR,MAAM,iBAAiB,GAAG,YAAY,CAAC,CAAC,wBAAwB;QAChE,aAAa,CAAC,cAAc,CAC1B,MAAM,CAAC,MAAM,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,iBAAiB;SAC7C,CAAC,CACH,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,6BAAqB,CAAC;QAEhF,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAEpD,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAChC,IAAI;YACJ,IAAI,EAAE,iBAAiB;;;YAGvB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,4BAAoB,EAAE;QAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,4BAAoB,EAAE;QAC1C,6DAA6D;KAC9D,CAAC,CAAC,mCAAmC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/D,QAAQ;QACR,MAAM,iBAAiB,GAAG,kCAAkC,CAAC,CAAC,wBAAwB;QACtF,aAAa,CAAC,cAAc,CAC1B,MAAM,CAAC,MAAM,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,iBAAiB;SAC7C,CAAC,CACH,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAEpD,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAChC,IAAI;YACJ,IAAI,EAAE,iBAAiB;;YAEvB,IAAI;YACJ,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,8BAAsB,EAAE;QAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,8BAAsB,EAAE;QAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,8BAAsB,EAAE;QAC/C,6DAA6D;KAC9D,CAAC,CAAC,qCAAqC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACjE,QAAQ;QACR,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC,uBAAuB;QAClG,aAAa,CAAC,cAAc,CAC1B,MAAM,CAAC,MAAM,CAAC;YACZ,iBAAiB;YACjB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,iBAAiB;SAC7C,CAAC,CACH,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,+BAAuB,CAAC;QAElF,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAEpD,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAChC,IAAI;YACJ,IAAI,EAAE,iBAAiB;;;YAGvB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,QAAQ;QACR,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,wBAAwB;QAC3D,aAAa,CAAC,cAAc,CAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,6BAAqB,CAAC;QAEhF,cAAc;QACd,MAAM,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,WAAW,GAAG,IAAI,iCAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,mCAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEtE,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,6BAAqB,CAAC;QAChF,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;SAClD,CAAC;QACF,oCAAoC;QACpC,uCAAuC;QACvC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;QAE5D,OAAO;QACP,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEnC,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,sDAAsC,CAAC,CAAC,QAAQ,CAC3F,KAAK,CACN,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,+BAAuB,CAAC;QACpF,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;SAClD,CAAC;QACF,oCAAoC;QACpC,8CAA8C;QAC9C,MAAM,sBAAsB,GAAG,8BAA8B,CAAC;QAE9D,OAAO;QACP,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEnC,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,wDAAwC,CAAC,CAAC,QAAQ,CAC7F,KAAK,CACN,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,WAAW,GAAG,IAAI,iCAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,mCAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEtE,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,6BAAqB,CAAC;QAEhF,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,CAAC;QAChC,mDAAmD;QACnD,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;QAE1D,OAAO;QACP,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAE3C,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,sDAAsC,CAAC,CAAC,QAAQ,CAC3F,KAAK,CACN,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,+BAAuB,CAAC;QAEpF,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,CAAC;QAChC,kEAAkE;QAClE,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;QAEvF,OAAO;QACP,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAElD,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,wDAAwC,CAAC,CAAC,QAAQ,CAC7F,KAAK,CACN,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,+BAAuB,CAAC;QAEpF,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,CAAC;QAChC,kDAAkD;QAClD,MAAM,sBAAsB,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;QAEnE,OAAO;QACP,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAElD,OAAO;QACP,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9B,IAAI;YACJ,IAAI;;YAEJ,+BAAuB,CAAC,IAAI,IAAI,CAAC,CAAC;SACnC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClC,aAAa,GAAG,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAC1E,CAAC;QACF,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1B,IAAI;YACJ,IAAI;;YAEJ,+BAAuB,CAAC,IAAI,IAAI,CAAC,CAAC;SACnC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,mBAAmB,GAAG,CAAC,sBAAsB,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1E,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClC,aAAa;YACX,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,sBAAsB,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAC3E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,MAAM,WAAW,GAAG,IAAI,iCAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,mCAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEtE,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,6BAAqB,CAAC;QAEhF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;QAEpD,OAAO;QACP,MAAM,QAAQ,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,sDAAsC,CAAC,CAAC,QAAQ,CAC3F,KAAK,CACN,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,QAAQ;QACR,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,+BAAuB,CAAC;QAEpF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;QAExD,OAAO;QACP,MAAM,QAAQ,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,wDAAwC,CAAC,CAAC,QAAQ,CAC7F,KAAK,CACN,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,WAAW,GAAG,IAAI,iCAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,mCAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEtE,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,QAAQ;QACR,MAAM,UAAU,GAAG,QAAQ,CAAC;QAC5B,MAAM,SAAS,GAAG,0BAA0B,CAAC;QAC7C,MAAM,oBAAoB,GAAG,IAAI,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,+BAAuB,CAAC;QAEpF,OAAO;QACP,MAAM,QAAQ,CAAC,kBAAkB,CAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAC9B,CAAC;QAEF,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,wDAAwC,CAAC,CAAC,QAAQ,CAC7F,KAAK,CACN,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,UAAU,GAAG,aAAa,GAAG,oBAAoB,GAAG,SAAS,CAAC;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,eAAe,GAAG,IAAI,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,WAAW,GAAG,IAAI,iCAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,mCAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEtE,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,QAAQ;QACR,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB;QACxF,aAAa,CAAC,cAAc,CAC1B,MAAM,CAAC,MAAM,CAAC;YACZ,iBAAiB;YACjB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,iBAAiB;SAC7C,CAAC,CACH,CAAC;QACF,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,IAAI,SAAS,CAAC,aAAa,CAAC,+BAAuB,CAAC;QAEpF,OAAO;QACP,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE7C,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAChC,IAAI;YACJ,IAAI;;;YAGJ,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,WAAW,GAAG,IAAI,iCAAW,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,mCAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAA,6CAAuB,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEtE,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,QAAQ;QACR,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,qBAAqB,GAAG,IAAI,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,6BAAqB,CAAC;QAEhF,OAAO;QACP,MAAM,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAEjD,OAAO;QACP,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,sDAAsC,CAAC,CAAC,QAAQ,CAC3F,KAAK,CACN,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClC,aAAa,GAAG,qBAAqB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CACnE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ReturnCode.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReturnCode.test.d.ts","sourceRoot":"","sources":["../src/ReturnCode.test.ts"],"names":[],"mappings":""}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ReturnCode_1 = require("./ReturnCode");
4
- describe("getExchageErrorMessage", () => {
5
- it("returns the related message", () => {
6
- // When
7
- const result = (0, ReturnCode_1.getExchangeErrorMessage)(0x6a80);
8
- // Then
9
- expect(result).toStrictEqual({
10
- errorMessage: "Incorrect command data",
11
- errorName: "incorrectCommandData",
12
- });
13
- });
14
- it("returns undefined if the value is unknown", () => {
15
- // When
16
- const result = (0, ReturnCode_1.getExchangeErrorMessage)(0x6a77);
17
- // Then
18
- expect(result).toStrictEqual({ errorMessage: undefined, errorName: undefined });
19
- });
20
- });
21
- //# sourceMappingURL=ReturnCode.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReturnCode.test.js","sourceRoot":"","sources":["../src/ReturnCode.test.ts"],"names":[],"mappings":";;AAAA,6CAAuD;AAEvD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,OAAO;QACP,MAAM,MAAM,GAAG,IAAA,oCAAuB,EAAC,MAAM,CAAC,CAAC;QAE/C,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YAC3B,YAAY,EAAE,wBAAwB;YACtC,SAAS,EAAE,sBAAsB;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,OAAO;QACP,MAAM,MAAM,GAAG,IAAA,oCAAuB,EAAC,MAAM,CAAC,CAAC;QAE/C,OAAO;QACP,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SellUtils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SellUtils.test.d.ts","sourceRoot":"","sources":["../src/SellUtils.test.ts"],"names":[],"mappings":""}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const SellUtils_1 = require("./SellUtils"); // Ensure the correct path
4
- describe("decodeSellPayload function", () => {
5
- test("should decode NewSellResponse correctly with hex payload", async () => {
6
- const binaryPayload = "0a1467756d6d792e70776e6e407961686f6f2e636f6d12034254431a030789422223324d764a5050765265756e6d767031716b51576d466a345336697741555058323437472a0345555232060a025bc910023a204da2d85ce5e18b5329fc7b2d43590c224e9cea2d43590c224e9cea2d43590c2242083537393034303534";
7
- const decodedPayload = await (0, SellUtils_1.decodeSellPayload)(binaryPayload);
8
- expect(decodedPayload).toBeDefined();
9
- expect(decodedPayload).toHaveProperty("traderEmail", "gummy.pwnn@yahoo.com");
10
- expect(decodedPayload).toHaveProperty("inCurrency", "BTC");
11
- expect(decodedPayload).toHaveProperty("inAmount");
12
- expect(decodedPayload).toHaveProperty("inAddress", "2MvJPPvReunmvp1qkQWmFj4S6iwAUPX247G");
13
- expect(decodedPayload).toHaveProperty("outCurrency", "EUR");
14
- expect(decodedPayload).toHaveProperty("outAmount");
15
- expect(decodedPayload).toHaveProperty("deviceTransactionId");
16
- expect(decodedPayload).toHaveProperty("inExtraId", "57904054");
17
- });
18
- test("should decode NewSellResponse correctly with base64 payload", async () => {
19
- const binaryPayload = "0a1467756d6d792e70776e6e407961686f6f2e636f6d12034254431a030789422223324d764a5050765265756e6d767031716b51576d466a345336697741555058323437472a0345555232060a025bc910023a204da2d85ce5e18b5329fc7b2d43590c224e9cea2d43590c224e9cea2d43590c2242083537393034303534";
20
- const decodedPayload = await (0, SellUtils_1.decodeSellPayload)(binaryPayload);
21
- expect(decodedPayload).toBeDefined();
22
- expect(decodedPayload).toHaveProperty("traderEmail", "gummy.pwnn@yahoo.com");
23
- expect(decodedPayload).toHaveProperty("inCurrency", "BTC");
24
- expect(decodedPayload).toHaveProperty("inAmount");
25
- expect(decodedPayload).toHaveProperty("inAddress", "2MvJPPvReunmvp1qkQWmFj4S6iwAUPX247G");
26
- expect(decodedPayload).toHaveProperty("outCurrency", "EUR");
27
- expect(decodedPayload).toHaveProperty("outAmount");
28
- expect(decodedPayload).toHaveProperty("deviceTransactionId");
29
- expect(decodedPayload).toHaveProperty("inExtraId", "57904054");
30
- });
31
- });
32
- //# sourceMappingURL=SellUtils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SellUtils.test.js","sourceRoot":"","sources":["../src/SellUtils.test.ts"],"names":[],"mappings":";;AAAA,2CAAgD,CAAC,0BAA0B;AAE3E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,aAAa,GACjB,8PAA8P,CAAC;QACjQ,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAiB,EAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QAC7E,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,qCAAqC,CAAC,CAAC;QAC1F,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,aAAa,GACjB,8PAA8P,CAAC;QACjQ,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAiB,EAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QAC7E,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,qCAAqC,CAAC,CAAC;QAC1F,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SwapUtils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwapUtils.test.d.ts","sourceRoot":"","sources":["../src/SwapUtils.test.ts"],"names":[],"mappings":""}
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const SwapUtils_1 = require("./SwapUtils"); // Asegúrate de proporcionar la ruta correcta
4
- describe("decodePayloadProtobuf function", () => {
5
- test("should decode NewTransactionResponse correctly with hex payload", async () => {
6
- const binaryPayload = "0a2a3078393736633339353463356462626633396135393135313064623332643266386363323235323830371a2a3078636361454263423338373661373561623945393639373530353861413735343633373733303239632a2a626331717164796b647738753336796864736c657477737976347865393573333735716a6a7934676b303a0345544842034254434a10000000000000000001118f178fb48000521000000000000000000000000000080e355a0a5552554f4b5149424f42";
7
- const decodedPayload = await (0, SwapUtils_1.decodePayloadProtobuf)(binaryPayload);
8
- expect(decodedPayload).toBeDefined();
9
- expect(decodedPayload).toHaveProperty("payinAddress", "0x976c3954c5dbbf39a591510db32d2f8cc2252807");
10
- expect(decodedPayload).toHaveProperty("payoutAddress", "bc1qqdykdw8u36yhdsletwsyv4xe95s375qjjy4gk0");
11
- expect(decodedPayload).toHaveProperty("refundAddress", "0xccaEBcB3876a75ab9E96975058aA75463773029c");
12
- expect(decodedPayload).toHaveProperty("currencyFrom", "ETH");
13
- expect(decodedPayload).toHaveProperty("currencyTo", "BTC");
14
- expect(decodedPayload).toHaveProperty("deviceTransactionId", "URUOKQIBOB");
15
- expect(decodedPayload).toHaveProperty("deviceTransactionIdNg", undefined);
16
- expect(decodedPayload).toHaveProperty("amountToProvider", BigInt(77000000000000000));
17
- expect(decodedPayload).toHaveProperty("amountToWallet", BigInt(527925));
18
- });
19
- test("should decode NewTransactionResponse correctly with base64 payload", async () => {
20
- const binaryPayload = "CioweEZBRDhjMTA4MGNiQTUwRkRlQzY1RTk0ODUzNEE5YjM4ZGQyNTM2NmYaKjB4RkI0MjRBYUJjMmU0Q2EyZjQ0NzUwMDMwMkREOUVjNjRDRjBlMjZDZSoqYmMxcXo0a3EyOGt2cDM3cHU3cGNxZGQ0dGo1ZnNxODdwcGdlMngzcnE5OgNFVEhCA0JUQ0oQAAAAAAAAAAAA0fcjCjnAAFIQAAAAAAAAAAAAAAAAAARNkFoAYiAIHOswy_grHVflNJ6xgxHiVltXXWqEGSRbKgM1hpV3VQ";
21
- const decodedPayload = await (0, SwapUtils_1.decodePayloadProtobuf)(binaryPayload);
22
- expect(decodedPayload).toBeDefined();
23
- expect(decodedPayload).toHaveProperty("payinAddress", "0xFAD8c1080cbA50FDeC65E948534A9b38dd25366f");
24
- expect(decodedPayload).toHaveProperty("payoutAddress", "bc1qz4kq28kvp37pu7pcqdd4tj5fsq87ppge2x3rq9");
25
- expect(decodedPayload).toHaveProperty("refundAddress", "0xFB424AaBc2e4Ca2f447500302DD9Ec64CF0e26Ce");
26
- expect(decodedPayload).toHaveProperty("currencyFrom", "ETH");
27
- expect(decodedPayload).toHaveProperty("currencyTo", "BTC");
28
- expect(decodedPayload).toHaveProperty("deviceTransactionId", "");
29
- expect(decodedPayload).toHaveProperty("deviceTransactionIdNg", "081ceb30cbf82b1d57e5349eb18311e2565b575d6a8419245b2a033586957755");
30
- expect(decodedPayload).toHaveProperty("amountToProvider", BigInt(5.91e16));
31
- expect(decodedPayload).toHaveProperty("amountToWallet", BigInt(2.82e5));
32
- });
33
- });
34
- //# sourceMappingURL=SwapUtils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwapUtils.test.js","sourceRoot":"","sources":["../src/SwapUtils.test.ts"],"names":[],"mappings":";;AAAA,2CAAoD,CAAC,6CAA6C;AAElG,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,aAAa,GACjB,8XAA8X,CAAC;QACjY,MAAM,cAAc,GAAG,MAAM,IAAA,iCAAqB,EAAC,aAAa,CAAC,CAAC;QAClE,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CACnC,cAAc,EACd,4CAA4C,CAC7C,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CACnC,eAAe,EACf,4CAA4C,CAC7C,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CACnC,eAAe,EACf,4CAA4C,CAC7C,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;QAC3E,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAC1E,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,aAAa,GACjB,gSAAgS,CAAC;QACnS,MAAM,cAAc,GAAG,MAAM,IAAA,iCAAqB,EAAC,aAAa,CAAC,CAAC;QAClE,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CACnC,cAAc,EACd,4CAA4C,CAC7C,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CACnC,eAAe,EACf,4CAA4C,CAC7C,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CACnC,eAAe,EACf,4CAA4C,CAC7C,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CACnC,uBAAuB,EACvB,kEAAkE,CACnE,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Exchange.integ.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Exchange.integ.test.d.ts","sourceRoot":"","sources":["../src/Exchange.integ.test.ts"],"names":[],"mappings":""}