@bitgo-beta/abstract-eth 1.0.2-beta.2195 → 1.0.2-beta.2196
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.
- package/dist/src/lib/iface.d.ts +22 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/transactionBuilder.d.ts +52 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +138 -1
- package/dist/src/lib/utils.d.ts +15 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +36 -1
- package/dist/src/lib/zamaUtils.d.ts +69 -0
- package/dist/src/lib/zamaUtils.d.ts.map +1 -1
- package/dist/src/lib/zamaUtils.js +136 -2
- package/dist/test/unit/transactionBuilder/finalizeUnwrapERC7984.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/finalizeUnwrapERC7984.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/finalizeUnwrapERC7984.js +127 -0
- package/dist/test/unit/transactionBuilder/index.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -1
- package/dist/test/unit/transactionBuilder/index.js +3 -1
- package/dist/test/unit/transactionBuilder/unwrapERC7984.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/unwrapERC7984.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unwrapERC7984.js +134 -0
- package/dist/test/unit/zamaUtils.js +88 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runFinalizeUnwrapERC7984Tests = runFinalizeUnwrapERC7984Tests;
|
|
7
|
+
/**
|
|
8
|
+
* TransactionBuilder tests for FinalizeUnwrapERC7984 transaction type.
|
|
9
|
+
*/
|
|
10
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
11
|
+
const should_1 = __importDefault(require("should"));
|
|
12
|
+
const src_1 = require("../../../src");
|
|
13
|
+
const zamaUtils_1 = require("../../../src/lib/zamaUtils");
|
|
14
|
+
const utils_1 = require("../../../src/lib/utils");
|
|
15
|
+
const WRAPPER_ADDRESS = '0x2debbe0487ef921df4457f9e36ed05be2df1ac75'; // hteth:cusdt
|
|
16
|
+
const REQUEST_ID = '0x' + '11'.repeat(32);
|
|
17
|
+
const CLEARTEXT_AMOUNT = '1000000';
|
|
18
|
+
const DECRYPTION_PROOF = '0x' + 'ee'.repeat(64);
|
|
19
|
+
const TEST_PRV_KEY = 'FAC4D04AA0025ECF200D74BC9B5E4616E4B8338B69B61362AAAD49F76E68EF28';
|
|
20
|
+
function runFinalizeUnwrapERC7984Tests(coinName, getBuilder) {
|
|
21
|
+
describe(`${coinName} transaction builder — FinalizeUnwrapERC7984`, () => {
|
|
22
|
+
let txBuilder;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
txBuilder = getBuilder(coinName);
|
|
25
|
+
txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
|
|
26
|
+
txBuilder.counter(1);
|
|
27
|
+
});
|
|
28
|
+
describe('classifyTransaction', () => {
|
|
29
|
+
it('should classify finalizeUnwrap(...) as FinalizeUnwrapERC7984', () => {
|
|
30
|
+
const calldata = (0, zamaUtils_1.buildFinalizeUnwrapCalldata)(REQUEST_ID, CLEARTEXT_AMOUNT, DECRYPTION_PROOF);
|
|
31
|
+
should_1.default.equal((0, utils_1.classifyTransaction)(calldata), sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
32
|
+
});
|
|
33
|
+
it('should NOT classify approve as FinalizeUnwrapERC7984', () => {
|
|
34
|
+
should_1.default.equal((0, utils_1.classifyTransaction)('0x095ea7b3' + '00'.repeat(64)), sdk_core_1.TransactionType.ContractCall);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('build from scratch', () => {
|
|
38
|
+
it('should build a FinalizeUnwrapERC7984 transaction', async () => {
|
|
39
|
+
txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
40
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
41
|
+
txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
|
|
42
|
+
txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
|
|
43
|
+
txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
|
|
44
|
+
const tx = await txBuilder.build();
|
|
45
|
+
const json = tx.toJson();
|
|
46
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
47
|
+
json.to.toLowerCase().should.equal(WRAPPER_ADDRESS.toLowerCase());
|
|
48
|
+
json.data.should.startWith(zamaUtils_1.finalizeUnwrapMethodId);
|
|
49
|
+
json.value.should.equal('0');
|
|
50
|
+
const decoded = (0, zamaUtils_1.decodeFinalizeUnwrapCalldata)(json.data);
|
|
51
|
+
decoded.requestId.should.equal(REQUEST_ID);
|
|
52
|
+
decoded.cleartextAmount.should.equal(CLEARTEXT_AMOUNT);
|
|
53
|
+
decoded.decryptionProof.should.equal(DECRYPTION_PROOF);
|
|
54
|
+
});
|
|
55
|
+
it('should build with EIP-1559 fee model', async () => {
|
|
56
|
+
const builder = getBuilder(coinName);
|
|
57
|
+
builder.fee({
|
|
58
|
+
fee: '30000000000',
|
|
59
|
+
eip1559: {
|
|
60
|
+
maxFeePerGas: '30000000000',
|
|
61
|
+
maxPriorityFeePerGas: '1000000000',
|
|
62
|
+
},
|
|
63
|
+
gasLimit: '200000',
|
|
64
|
+
});
|
|
65
|
+
builder.counter(1);
|
|
66
|
+
builder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
67
|
+
builder.contract(WRAPPER_ADDRESS);
|
|
68
|
+
builder.finalizeUnwrapRequestId(REQUEST_ID);
|
|
69
|
+
builder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
|
|
70
|
+
builder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
|
|
71
|
+
const tx = await builder.build();
|
|
72
|
+
const json = tx.toJson();
|
|
73
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
74
|
+
json._type.should.equal(src_1.ETHTransactionType.EIP1559);
|
|
75
|
+
json.data.should.startWith(zamaUtils_1.finalizeUnwrapMethodId);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('signing and round-trip', () => {
|
|
79
|
+
it('should produce a signed transaction with v, r, s and from fields', async () => {
|
|
80
|
+
txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
81
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
82
|
+
txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
|
|
83
|
+
txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
|
|
84
|
+
txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
|
|
85
|
+
txBuilder.sign({ key: TEST_PRV_KEY });
|
|
86
|
+
const tx = await txBuilder.build();
|
|
87
|
+
const json = tx.toJson();
|
|
88
|
+
should_1.default.exist(json.v);
|
|
89
|
+
should_1.default.exist(json.r);
|
|
90
|
+
should_1.default.exist(json.s);
|
|
91
|
+
should_1.default.exist(json.from);
|
|
92
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
93
|
+
});
|
|
94
|
+
it('should serialize and deserialize to the same transaction', async () => {
|
|
95
|
+
txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
96
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
97
|
+
txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
|
|
98
|
+
txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
|
|
99
|
+
txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
|
|
100
|
+
const originalTx = await txBuilder.build();
|
|
101
|
+
const rawHex = originalTx.toBroadcastFormat();
|
|
102
|
+
const rebuiltBuilder = getBuilder(coinName);
|
|
103
|
+
rebuiltBuilder.from(rawHex);
|
|
104
|
+
const rebuiltTx = await rebuiltBuilder.build();
|
|
105
|
+
rebuiltTx.toBroadcastFormat().should.equal(rawHex);
|
|
106
|
+
should_1.default.equal(rebuiltTx.type, sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe('validation', () => {
|
|
110
|
+
it('should reject missing finalizeUnwrapRequestId', async () => {
|
|
111
|
+
txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
112
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
113
|
+
txBuilder.finalizeUnwrapCleartextAmount(CLEARTEXT_AMOUNT);
|
|
114
|
+
txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
|
|
115
|
+
await txBuilder.build().should.be.rejectedWith(/missing finalizeUnwrapRequestId/);
|
|
116
|
+
});
|
|
117
|
+
it('should reject missing finalizeUnwrapCleartextAmount', async () => {
|
|
118
|
+
txBuilder.type(sdk_core_1.TransactionType.FinalizeUnwrapERC7984);
|
|
119
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
120
|
+
txBuilder.finalizeUnwrapRequestId(REQUEST_ID);
|
|
121
|
+
txBuilder.finalizeUnwrapDecryptionProof(DECRYPTION_PROOF);
|
|
122
|
+
await txBuilder.build().should.be.rejectedWith(/missing finalizeUnwrapCleartextAmount/);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYWxpemVVbndyYXBFUkM3OTg0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9maW5hbGl6ZVVud3JhcEVSQzc5ODQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFtQkEsc0VBZ0lDO0FBbkpEOztHQUVHO0FBQ0gsbURBQXVEO0FBQ3ZELG9EQUE0QjtBQUM1QixzQ0FBc0U7QUFDdEUsMERBSW9DO0FBQ3BDLGtEQUE2RDtBQUU3RCxNQUFNLGVBQWUsR0FBRyw0Q0FBNEMsQ0FBQyxDQUFDLGNBQWM7QUFDcEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxrRUFBa0UsQ0FBQztBQUV4RixTQUFnQiw2QkFBNkIsQ0FDM0MsUUFBZ0IsRUFDaEIsVUFBZ0Q7SUFFaEQsUUFBUSxDQUFDLEdBQUcsUUFBUSw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdkUsSUFBSSxTQUE2QixDQUFDO1FBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1lBQ25DLEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxHQUFHLEVBQUU7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Ii8qKlxuICogVHJhbnNhY3Rpb25CdWlsZGVyIHRlc3RzIGZvciBGaW5hbGl6ZVVud3JhcEVSQzc5ODQgdHJhbnNhY3Rpb24gdHlwZS5cbiAqL1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgRVRIVHJhbnNhY3Rpb25UeXBlLCBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgYnVpbGRGaW5hbGl6ZVVud3JhcENhbGxkYXRhLFxuICBkZWNvZGVGaW5hbGl6ZVVud3JhcENhbGxkYXRhLFxuICBmaW5hbGl6ZVVud3JhcE1ldGhvZElkLFxufSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3phbWFVdGlscyc7XG5pbXBvcnQgeyBjbGFzc2lmeVRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmNvbnN0IFdSQVBQRVJfQUREUkVTUyA9ICcweDJkZWJiZTA0ODdlZjkyMWRmNDQ1N2Y5ZTM2ZWQwNWJlMmRmMWFjNzUnOyAvLyBodGV0aDpjdXNkdFxuY29uc3QgUkVRVUVTVF9JRCA9ICcweCcgKyAnMTEnLnJlcGVhdCgzMik7XG5jb25zdCBDTEVBUlRFWFRfQU1PVU5UID0gJzEwMDAwMDAnO1xuY29uc3QgREVDUllQVElPTl9QUk9PRiA9ICcweCcgKyAnZWUnLnJlcGVhdCg2NCk7XG5jb25zdCBURVNUX1BSVl9LRVkgPSAnRkFDNEQwNEFBMDAyNUVDRjIwMEQ3NEJDOUI1RTQ2MTZFNEI4MzM4QjY5QjYxMzYyQUFBRDQ5Rjc2RTY4RUYyOCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5GaW5hbGl6ZVVud3JhcEVSQzc5ODRUZXN0cyhcbiAgY29pbk5hbWU6IHN0cmluZyxcbiAgZ2V0QnVpbGRlcjogKGNvaW46IHN0cmluZykgPT4gVHJhbnNhY3Rpb25CdWlsZGVyXG4pOiB2b2lkIHtcbiAgZGVzY3JpYmUoYCR7Y29pbk5hbWV9IHRyYW5zYWN0aW9uIGJ1aWxkZXIg4oCUIEZpbmFsaXplVW53cmFwRVJDNzk4NGAsICgpID0+IHtcbiAgICBsZXQgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwMDAwMDAwMDAnLCBnYXNMaW1pdDogJzIwMDAwMCcgfSk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjbGFzc2lmeVRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBjbGFzc2lmeSBmaW5hbGl6ZVVud3JhcCguLi4pIGFzIEZpbmFsaXplVW53cmFwRVJDNzk4NCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZEZpbmFsaXplVW53cmFwQ2FsbGRhdGEoUkVRVUVTVF9JRCwgQ0xFQVJURVhUX0FNT1VOVCwgREVDUllQVElPTl9QUk9PRik7XG4gICAgICAgIHNob3VsZC5lcXVhbChjbGFzc2lmeVRyYW5zYWN0aW9uKGNhbGxkYXRhKSwgVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBOT1QgY2xhc3NpZnkgYXBwcm92ZSBhcyBGaW5hbGl6ZVVud3JhcEVSQzc5ODQnLCAoKSA9PiB7XG4gICAgICAgIHNob3VsZC5lcXVhbChjbGFzc2lmeVRyYW5zYWN0aW9uKCcweDA5NWVhN2IzJyArICcwMCcucmVwZWF0KDY0KSksIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnYnVpbGQgZnJvbSBzY3JhdGNoJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBidWlsZCBhIEZpbmFsaXplVW53cmFwRVJDNzk4NCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBSZXF1ZXN0SWQoUkVRVUVTVF9JRCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcENsZWFydGV4dEFtb3VudChDTEVBUlRFWFRfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwRGVjcnlwdGlvblByb29mKERFQ1JZUFRJT05fUFJPT0YpO1xuXG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIGpzb24udG8udG9Mb3dlckNhc2UoKS5zaG91bGQuZXF1YWwoV1JBUFBFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBqc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChmaW5hbGl6ZVVud3JhcE1ldGhvZElkKTtcbiAgICAgICAganNvbi52YWx1ZS5zaG91bGQuZXF1YWwoJzAnKTtcblxuICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlRmluYWxpemVVbndyYXBDYWxsZGF0YShqc29uLmRhdGEpO1xuICAgICAgICBkZWNvZGVkLnJlcXVlc3RJZC5zaG91bGQuZXF1YWwoUkVRVUVTVF9JRCk7XG4gICAgICAgIGRlY29kZWQuY2xlYXJ0ZXh0QW1vdW50LnNob3VsZC5lcXVhbChDTEVBUlRFWFRfQU1PVU5UKTtcbiAgICAgICAgZGVjb2RlZC5kZWNyeXB0aW9uUHJvb2Yuc2hvdWxkLmVxdWFsKERFQ1JZUFRJT05fUFJPT0YpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgYnVpbGQgd2l0aCBFSVAtMTU1OSBmZWUgbW9kZWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBnZXRCdWlsZGVyKGNvaW5OYW1lKTtcbiAgICAgICAgYnVpbGRlci5mZWUoe1xuICAgICAgICAgIGZlZTogJzMwMDAwMDAwMDAwJyxcbiAgICAgICAgICBlaXAxNTU5OiB7XG4gICAgICAgICAgICBtYXhGZWVQZXJHYXM6ICczMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhczogJzEwMDAwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2FzTGltaXQ6ICcyMDAwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgYnVpbGRlci5jb3VudGVyKDEpO1xuICAgICAgICBidWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIGJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgYnVpbGRlci5maW5hbGl6ZVVud3JhcFJlcXVlc3RJZChSRVFVRVNUX0lEKTtcbiAgICAgICAgYnVpbGRlci5maW5hbGl6ZVVud3JhcENsZWFydGV4dEFtb3VudChDTEVBUlRFWFRfQU1PVU5UKTtcbiAgICAgICAgYnVpbGRlci5maW5hbGl6ZVVud3JhcERlY3J5cHRpb25Qcm9vZihERUNSWVBUSU9OX1BST09GKTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuRmluYWxpemVVbndyYXBFUkM3OTg0KTtcbiAgICAgICAganNvbi5fdHlwZS5zaG91bGQuZXF1YWwoRVRIVHJhbnNhY3Rpb25UeXBlLkVJUDE1NTkpO1xuICAgICAgICBqc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChmaW5hbGl6ZVVud3JhcE1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NpZ25pbmcgYW5kIHJvdW5kLXRyaXAnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHByb2R1Y2UgYSBzaWduZWQgdHJhbnNhY3Rpb24gd2l0aCB2LCByLCBzIGFuZCBmcm9tIGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBSZXF1ZXN0SWQoUkVRVUVTVF9JRCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcENsZWFydGV4dEFtb3VudChDTEVBUlRFWFRfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwRGVjcnlwdGlvblByb29mKERFQ1JZUFRJT05fUFJPT0YpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogVEVTVF9QUlZfS0VZIH0pO1xuXG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgICBzaG91bGQuZXhpc3QoanNvbi52KTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24ucik7XG4gICAgICAgIHNob3VsZC5leGlzdChqc29uLnMpO1xuICAgICAgICBzaG91bGQuZXhpc3QoanNvbi5mcm9tKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5GaW5hbGl6ZVVud3JhcEVSQzc5ODQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSB0byB0aGUgc2FtZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBSZXF1ZXN0SWQoUkVRVUVTVF9JRCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcENsZWFydGV4dEFtb3VudChDTEVBUlRFWFRfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwRGVjcnlwdGlvblByb29mKERFQ1JZUFRJT05fUFJPT0YpO1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZ2V0QnVpbGRlcihjb2luTmFtZSk7XG4gICAgICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcbiAgICAgICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgICByZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwocmF3SGV4KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuRmluYWxpemVVbndyYXBFUkM3OTg0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBtaXNzaW5nIGZpbmFsaXplVW53cmFwUmVxdWVzdElkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuRmluYWxpemVVbndyYXBFUkM3OTg0KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KFdSQVBQRVJfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcENsZWFydGV4dEFtb3VudChDTEVBUlRFWFRfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLmZpbmFsaXplVW53cmFwRGVjcnlwdGlvblByb29mKERFQ1JZUFRJT05fUFJPT0YpO1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9taXNzaW5nIGZpbmFsaXplVW53cmFwUmVxdWVzdElkLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgbWlzc2luZyBmaW5hbGl6ZVVud3JhcENsZWFydGV4dEFtb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkZpbmFsaXplVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIuZmluYWxpemVVbndyYXBSZXF1ZXN0SWQoUkVRVUVTVF9JRCk7XG4gICAgICAgIHR4QnVpbGRlci5maW5hbGl6ZVVud3JhcERlY3J5cHRpb25Qcm9vZihERUNSWVBUSU9OX1BST09GKTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbWlzc2luZyBmaW5hbGl6ZVVud3JhcENsZWFydGV4dEFtb3VudC8pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC"}
|
|
@@ -21,4 +21,6 @@ __exportStar(require("./flushNft"), exports);
|
|
|
21
21
|
__exportStar(require("./decryptionDelegation"), exports);
|
|
22
22
|
__exportStar(require("./flushERC7984"), exports);
|
|
23
23
|
__exportStar(require("./wrapERC7984"), exports);
|
|
24
|
-
|
|
24
|
+
__exportStar(require("./unwrapERC7984"), exports);
|
|
25
|
+
__exportStar(require("./finalizeUnwrapERC7984"), exports);
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0M7QUFDeEMseUNBQXVCO0FBQ3ZCLHlEQUF1QztBQUN2Qyw2Q0FBMkI7QUFDM0IseURBQXVDO0FBQ3ZDLGlEQUErQjtBQUMvQixnREFBOEI7QUFDOUIsa0RBQWdDO0FBQ2hDLDBEQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRkcmVzc0luaXRpYWxpemF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2VuZCc7XG5leHBvcnQgKiBmcm9tICcuL3dhbGxldEluaXRpYWxpemF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZmx1c2hOZnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNyeXB0aW9uRGVsZWdhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2ZsdXNoRVJDNzk4NCc7XG5leHBvcnQgKiBmcm9tICcuL3dyYXBFUkM3OTg0JztcbmV4cG9ydCAqIGZyb20gJy4vdW53cmFwRVJDNzk4NCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbmFsaXplVW53cmFwRVJDNzk4NCc7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwrapERC7984.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/unwrapERC7984.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUtE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAoI9G"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runUnwrapERC7984Tests = runUnwrapERC7984Tests;
|
|
7
|
+
/**
|
|
8
|
+
* TransactionBuilder tests for UnwrapERC7984 transaction type.
|
|
9
|
+
*/
|
|
10
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
11
|
+
const should_1 = __importDefault(require("should"));
|
|
12
|
+
const src_1 = require("../../../src");
|
|
13
|
+
const zamaUtils_1 = require("../../../src/lib/zamaUtils");
|
|
14
|
+
const utils_1 = require("../../../src/lib/utils");
|
|
15
|
+
const WRAPPER_ADDRESS = '0x2debbe0487ef921df4457f9e36ed05be2df1ac75'; // hteth:cusdt
|
|
16
|
+
const BASE_ADDRESS = '0x1111111111111111111111111111111111111111';
|
|
17
|
+
const ENCRYPTED_AMOUNT = '0x' + 'ab'.repeat(32);
|
|
18
|
+
const INPUT_PROOF = '0x' + 'cd'.repeat(64);
|
|
19
|
+
const TEST_PRV_KEY = 'FAC4D04AA0025ECF200D74BC9B5E4616E4B8338B69B61362AAAD49F76E68EF28';
|
|
20
|
+
function runUnwrapERC7984Tests(coinName, getBuilder) {
|
|
21
|
+
describe(`${coinName} transaction builder — UnwrapERC7984`, () => {
|
|
22
|
+
let txBuilder;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
txBuilder = getBuilder(coinName);
|
|
25
|
+
txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
|
|
26
|
+
txBuilder.counter(1);
|
|
27
|
+
});
|
|
28
|
+
describe('classifyTransaction', () => {
|
|
29
|
+
it('should classify unwrap(...) as UnwrapERC7984', () => {
|
|
30
|
+
const calldata = (0, zamaUtils_1.buildUnwrapCalldata)(BASE_ADDRESS, BASE_ADDRESS, ENCRYPTED_AMOUNT, INPUT_PROOF);
|
|
31
|
+
should_1.default.equal((0, utils_1.classifyTransaction)(calldata), sdk_core_1.TransactionType.UnwrapERC7984);
|
|
32
|
+
});
|
|
33
|
+
it('should NOT classify approve as UnwrapERC7984', () => {
|
|
34
|
+
should_1.default.equal((0, utils_1.classifyTransaction)('0x095ea7b3' + '00'.repeat(64)), sdk_core_1.TransactionType.ContractCall);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('build from scratch', () => {
|
|
38
|
+
it('should build an UnwrapERC7984 transaction', async () => {
|
|
39
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
40
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
41
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
42
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
43
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
44
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
45
|
+
const tx = await txBuilder.build();
|
|
46
|
+
const json = tx.toJson();
|
|
47
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
48
|
+
json.to.toLowerCase().should.equal(WRAPPER_ADDRESS.toLowerCase());
|
|
49
|
+
json.data.should.startWith(zamaUtils_1.unwrapMethodId);
|
|
50
|
+
json.value.should.equal('0');
|
|
51
|
+
const decoded = (0, zamaUtils_1.decodeUnwrapCalldata)(json.data);
|
|
52
|
+
decoded.from.toLowerCase().should.equal(BASE_ADDRESS.toLowerCase());
|
|
53
|
+
decoded.to.toLowerCase().should.equal(BASE_ADDRESS.toLowerCase());
|
|
54
|
+
decoded.encryptedAmount.should.equal(ENCRYPTED_AMOUNT);
|
|
55
|
+
decoded.inputProof.should.equal(INPUT_PROOF);
|
|
56
|
+
});
|
|
57
|
+
it('should build with EIP-1559 fee model', async () => {
|
|
58
|
+
const builder = getBuilder(coinName);
|
|
59
|
+
builder.fee({
|
|
60
|
+
fee: '30000000000',
|
|
61
|
+
eip1559: {
|
|
62
|
+
maxFeePerGas: '30000000000',
|
|
63
|
+
maxPriorityFeePerGas: '1000000000',
|
|
64
|
+
},
|
|
65
|
+
gasLimit: '200000',
|
|
66
|
+
});
|
|
67
|
+
builder.counter(1);
|
|
68
|
+
builder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
69
|
+
builder.contract(WRAPPER_ADDRESS);
|
|
70
|
+
builder.unwrapFrom(BASE_ADDRESS);
|
|
71
|
+
builder.unwrapTo(BASE_ADDRESS);
|
|
72
|
+
builder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
73
|
+
builder.unwrapInputProof(INPUT_PROOF);
|
|
74
|
+
const tx = await builder.build();
|
|
75
|
+
const json = tx.toJson();
|
|
76
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
77
|
+
json._type.should.equal(src_1.ETHTransactionType.EIP1559);
|
|
78
|
+
json.data.should.startWith(zamaUtils_1.unwrapMethodId);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('signing and round-trip', () => {
|
|
82
|
+
it('should produce a signed transaction with v, r, s and from fields', async () => {
|
|
83
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
84
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
85
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
86
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
87
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
88
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
89
|
+
txBuilder.sign({ key: TEST_PRV_KEY });
|
|
90
|
+
const tx = await txBuilder.build();
|
|
91
|
+
const json = tx.toJson();
|
|
92
|
+
should_1.default.exist(json.v);
|
|
93
|
+
should_1.default.exist(json.r);
|
|
94
|
+
should_1.default.exist(json.s);
|
|
95
|
+
should_1.default.exist(json.from);
|
|
96
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
97
|
+
});
|
|
98
|
+
it('should serialize and deserialize to the same transaction', async () => {
|
|
99
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
100
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
101
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
102
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
103
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
104
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
105
|
+
const originalTx = await txBuilder.build();
|
|
106
|
+
const rawHex = originalTx.toBroadcastFormat();
|
|
107
|
+
const rebuiltBuilder = getBuilder(coinName);
|
|
108
|
+
rebuiltBuilder.from(rawHex);
|
|
109
|
+
const rebuiltTx = await rebuiltBuilder.build();
|
|
110
|
+
rebuiltTx.toBroadcastFormat().should.equal(rawHex);
|
|
111
|
+
should_1.default.equal(rebuiltTx.type, sdk_core_1.TransactionType.UnwrapERC7984);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('validation', () => {
|
|
115
|
+
it('should reject missing unwrapFrom', async () => {
|
|
116
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
117
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
118
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
119
|
+
txBuilder.unwrapEncryptedAmount(ENCRYPTED_AMOUNT);
|
|
120
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
121
|
+
await txBuilder.build().should.be.rejectedWith(/missing unwrapFrom/);
|
|
122
|
+
});
|
|
123
|
+
it('should reject missing unwrapEncryptedAmount', async () => {
|
|
124
|
+
txBuilder.type(sdk_core_1.TransactionType.UnwrapERC7984);
|
|
125
|
+
txBuilder.contract(WRAPPER_ADDRESS);
|
|
126
|
+
txBuilder.unwrapFrom(BASE_ADDRESS);
|
|
127
|
+
txBuilder.unwrapTo(BASE_ADDRESS);
|
|
128
|
+
txBuilder.unwrapInputProof(INPUT_PROOF);
|
|
129
|
+
await txBuilder.build().should.be.rejectedWith(/missing unwrapEncryptedAmount/);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW53cmFwRVJDNzk4NC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdW53cmFwRVJDNzk4NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHNEQW9JQztBQW5KRDs7R0FFRztBQUNILG1EQUF1RDtBQUN2RCxvREFBNEI7QUFDNUIsc0NBQXNFO0FBQ3RFLDBEQUF1RztBQUN2RyxrREFBNkQ7QUFFN0QsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUMsQ0FBQyxjQUFjO0FBQ3BGLE1BQU0sWUFBWSxHQUFHLDRDQUE0QyxDQUFDO0FBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsTUFBTSxZQUFZLEdBQUcsa0VBQWtFLENBQUM7QUFFeEYsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0IsRUFBRSxVQUFnRDtJQUN0RyxRQUFRLENBQUMsR0FBRyxRQUFRLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUMvRCxJQUFJLFNBQTZCLENBQUM7UUFFbEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7WUFDbkMsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtnQkFDdEQsTUFBTSxRQUFRLEdB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QWUsQ0FBQyxDQUFDO2dCQUNwQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDbEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb25CdWlsZGVyIHRlc3RzIGZvciBVbndyYXBFUkM3OTg0IHRyYW5zYWN0aW9uIHR5cGUuXG4gKi9cbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEVUSFRyYW5zYWN0aW9uVHlwZSwgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IGJ1aWxkVW53cmFwQ2FsbGRhdGEsIGRlY29kZVVud3JhcENhbGxkYXRhLCB1bndyYXBNZXRob2RJZCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvemFtYVV0aWxzJztcbmltcG9ydCB7IGNsYXNzaWZ5VHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcblxuY29uc3QgV1JBUFBFUl9BRERSRVNTID0gJzB4MmRlYmJlMDQ4N2VmOTIxZGY0NDU3ZjllMzZlZDA1YmUyZGYxYWM3NSc7IC8vIGh0ZXRoOmN1c2R0XG5jb25zdCBCQVNFX0FERFJFU1MgPSAnMHgxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJztcbmNvbnN0IEVOQ1JZUFRFRF9BTU9VTlQgPSAnMHgnICsgJ2FiJy5yZXBlYXQoMzIpO1xuY29uc3QgSU5QVVRfUFJPT0YgPSAnMHgnICsgJ2NkJy5yZXBlYXQoNjQpO1xuY29uc3QgVEVTVF9QUlZfS0VZID0gJ0ZBQzREMDRBQTAwMjVFQ0YyMDBENzRCQzlCNUU0NjE2RTRCODMzOEI2OUI2MTM2MkFBQUQ0OUY3NkU2OEVGMjgnO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuVW53cmFwRVJDNzk4NFRlc3RzKGNvaW5OYW1lOiBzdHJpbmcsIGdldEJ1aWxkZXI6IChjb2luOiBzdHJpbmcpID0+IFRyYW5zYWN0aW9uQnVpbGRlcik6IHZvaWQge1xuICBkZXNjcmliZShgJHtjb2luTmFtZX0gdHJhbnNhY3Rpb24gYnVpbGRlciDigJQgVW53cmFwRVJDNzk4NGAsICgpID0+IHtcbiAgICBsZXQgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwMDAwMDAwMDAnLCBnYXNMaW1pdDogJzIwMDAwMCcgfSk7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjbGFzc2lmeVRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBjbGFzc2lmeSB1bndyYXAoLi4uKSBhcyBVbndyYXBFUkM3OTg0JywgKCkgPT4ge1xuICAgICAgICBjb25zdCBjYWxsZGF0YSA9IGJ1aWxkVW53cmFwQ2FsbGRhdGEoQkFTRV9BRERSRVNTLCBCQVNFX0FERFJFU1MsIEVOQ1JZUFRFRF9BTU9VTlQsIElOUFVUX1BST09GKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGNsYXNzaWZ5VHJhbnNhY3Rpb24oY2FsbGRhdGEpLCBUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBOT1QgY2xhc3NpZnkgYXBwcm92ZSBhcyBVbndyYXBFUkM3OTg0JywgKCkgPT4ge1xuICAgICAgICBzaG91bGQuZXF1YWwoY2xhc3NpZnlUcmFuc2FjdGlvbignMHgwOTVlYTdiMycgKyAnMDAnLnJlcGVhdCg2NCkpLCBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2J1aWxkIGZyb20gc2NyYXRjaCcsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gVW53cmFwRVJDNzk4NCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEZyb20oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5VbndyYXBFUkM3OTg0KTtcbiAgICAgICAganNvbi50by50b0xvd2VyQ2FzZSgpLnNob3VsZC5lcXVhbChXUkFQUEVSX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKHVud3JhcE1ldGhvZElkKTtcbiAgICAgICAganNvbi52YWx1ZS5zaG91bGQuZXF1YWwoJzAnKTtcblxuICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVW53cmFwQ2FsbGRhdGEoanNvbi5kYXRhKTtcbiAgICAgICAgZGVjb2RlZC5mcm9tLnRvTG93ZXJDYXNlKCkuc2hvdWxkLmVxdWFsKEJBU0VfQUREUkVTUy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgZGVjb2RlZC50by50b0xvd2VyQ2FzZSgpLnNob3VsZC5lcXVhbChCQVNFX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGRlY29kZWQuZW5jcnlwdGVkQW1vdW50LnNob3VsZC5lcXVhbChFTkNSWVBURURfQU1PVU5UKTtcbiAgICAgICAgZGVjb2RlZC5pbnB1dFByb29mLnNob3VsZC5lcXVhbChJTlBVVF9QUk9PRik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBidWlsZCB3aXRoIEVJUC0xNTU5IGZlZSBtb2RlbCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbk5hbWUpO1xuICAgICAgICBidWlsZGVyLmZlZSh7XG4gICAgICAgICAgZmVlOiAnMzAwMDAwMDAwMDAnLFxuICAgICAgICAgIGVpcDE1NTk6IHtcbiAgICAgICAgICAgIG1heEZlZVBlckdhczogJzMwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnYXNMaW1pdDogJzIwMDAwMCcsXG4gICAgICAgIH0pO1xuICAgICAgICBidWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgICAgIGJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIGJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgYnVpbGRlci51bndyYXBGcm9tKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIGJ1aWxkZXIudW53cmFwVG8oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgYnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIGJ1aWxkZXIudW53cmFwSW5wdXRQcm9vZihJTlBVVF9QUk9PRik7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICBqc29uLl90eXBlLnNob3VsZC5lcXVhbChFVEhUcmFuc2FjdGlvblR5cGUuRUlQMTU1OSk7XG4gICAgICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKHVud3JhcE1ldGhvZElkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3NpZ25pbmcgYW5kIHJvdW5kLXRyaXAnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIHByb2R1Y2UgYSBzaWduZWQgdHJhbnNhY3Rpb24gd2l0aCB2LCByLCBzIGFuZCBmcm9tIGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEZyb20oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBFbmNyeXB0ZWRBbW91bnQoRU5DUllQVEVEX0FNT1VOVCk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IFRFU1RfUFJWX0tFWSB9KTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24udik7XG4gICAgICAgIHNob3VsZC5leGlzdChqc29uLnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoanNvbi5zKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGpzb24uZnJvbSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIHRvIHRoZSBzYW1lIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwRnJvbShCQVNFX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwVG8oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEVuY3J5cHRlZEFtb3VudChFTkNSWVBURURfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcElucHV0UHJvb2YoSU5QVVRfUFJPT0YpO1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZ2V0QnVpbGRlcihjb2luTmFtZSk7XG4gICAgICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcbiAgICAgICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgICByZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwocmF3SGV4KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC50eXBlLCBUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgbWlzc2luZyB1bndyYXBGcm9tJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuVW53cmFwRVJDNzk4NCk7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChXUkFQUEVSX0FERFJFU1MpO1xuICAgICAgICB0eEJ1aWxkZXIudW53cmFwVG8oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEVuY3J5cHRlZEFtb3VudChFTkNSWVBURURfQU1PVU5UKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcElucHV0UHJvb2YoSU5QVVRfUFJPT0YpO1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9taXNzaW5nIHVud3JhcEZyb20vKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBtaXNzaW5nIHVud3JhcEVuY3J5cHRlZEFtb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlVud3JhcEVSQzc5ODQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoV1JBUFBFUl9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcEZyb20oQkFTRV9BRERSRVNTKTtcbiAgICAgICAgdHhCdWlsZGVyLnVud3JhcFRvKEJBU0VfQUREUkVTUyk7XG4gICAgICAgIHR4QnVpbGRlci51bndyYXBJbnB1dFByb29mKElOUFVUX1BST09GKTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbWlzc2luZyB1bndyYXBFbmNyeXB0ZWRBbW91bnQvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
|