@gzeoneth/gov-tracker 0.1.1-1 → 0.1.1
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/LICENSE +13 -14
- package/README.md +5 -5
- package/dist/calldata/address-utils.d.ts +4 -3
- package/dist/calldata/address-utils.d.ts.map +1 -1
- package/dist/calldata/address-utils.js +3 -3
- package/dist/calldata/address-utils.js.map +1 -1
- package/dist/calldata/decoder.d.ts +2 -1
- package/dist/calldata/decoder.d.ts.map +1 -1
- package/dist/calldata/decoder.js +65 -72
- package/dist/calldata/decoder.js.map +1 -1
- package/dist/calldata/extraction.d.ts +17 -0
- package/dist/calldata/extraction.d.ts.map +1 -0
- package/dist/calldata/extraction.js +56 -0
- package/dist/calldata/extraction.js.map +1 -0
- package/dist/calldata/index.d.ts +4 -3
- package/dist/calldata/index.d.ts.map +1 -1
- package/dist/calldata/index.js +4 -5
- package/dist/calldata/index.js.map +1 -1
- package/dist/calldata/parameter-decoder.d.ts +2 -1
- package/dist/calldata/parameter-decoder.d.ts.map +1 -1
- package/dist/calldata/parameter-decoder.js +47 -77
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/calldata/retryable-ticket.d.ts +3 -10
- package/dist/calldata/retryable-ticket.d.ts.map +1 -1
- package/dist/calldata/retryable-ticket.js +13 -31
- package/dist/calldata/retryable-ticket.js.map +1 -1
- package/dist/calldata/signature-lookup.d.ts +0 -7
- package/dist/calldata/signature-lookup.d.ts.map +1 -1
- package/dist/calldata/signature-lookup.js +0 -11
- package/dist/calldata/signature-lookup.js.map +1 -1
- package/dist/cli/monitor.js +20 -21
- package/dist/cli/monitor.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -10
- package/dist/index.js.map +1 -1
- package/dist/simulation/index.d.ts +0 -1
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +1 -7
- package/dist/simulation/index.js.map +1 -1
- package/dist/simulation/simulation-data.d.ts +2 -1
- package/dist/simulation/simulation-data.d.ts.map +1 -1
- package/dist/simulation/simulation-data.js +61 -59
- package/dist/simulation/simulation-data.js.map +1 -1
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +18 -6
- package/dist/stages/timelock.js.map +1 -1
- package/dist/tracker/query.js +1 -1
- package/dist/tracker/query.js.map +1 -1
- package/dist/tracker/state.js +1 -1
- package/dist/tracker/state.js.map +1 -1
- package/dist/types/calldata.d.ts +45 -10
- package/dist/types/calldata.d.ts.map +1 -1
- package/dist/types/core.d.ts +11 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/simulation.d.ts +1 -1
- package/dist/types/simulation.d.ts.map +1 -1
- package/dist/utils/operation-id.d.ts +12 -23
- package/dist/utils/operation-id.d.ts.map +1 -1
- package/dist/utils/operation-id.js +29 -52
- package/dist/utils/operation-id.js.map +1 -1
- package/dist/utils/urls.d.ts +0 -15
- package/dist/utils/urls.d.ts.map +1 -1
- package/dist/utils/urls.js +0 -30
- package/dist/utils/urls.js.map +1 -1
- package/package.json +2 -2
- package/dist/simulation/address-alias.d.ts +0 -35
- package/dist/simulation/address-alias.d.ts.map +0 -1
- package/dist/simulation/address-alias.js +0 -46
- package/dist/simulation/address-alias.js.map +0 -1
- package/dist/utils/salt-resolver.d.ts +0 -63
- package/dist/utils/salt-resolver.d.ts.map +0 -1
- package/dist/utils/salt-resolver.js +0 -144
- package/dist/utils/salt-resolver.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"Contribution" shall mean any work of authorship, including
|
|
49
49
|
the original version of the Work and any modifications or additions
|
|
50
50
|
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
-
submitted to
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
52
|
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
53
|
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
54
|
means any form of electronic, verbal, or written communication sent
|
|
@@ -150,18 +150,17 @@
|
|
|
150
150
|
appropriateness of using or redistributing the Work and assume any
|
|
151
151
|
risks associated with Your exercise of permissions under this License.
|
|
152
152
|
|
|
153
|
-
8. Limitation of Liability. In no event and under no theory
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
Contributor has been advised of the possibility of such damages.
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
165
164
|
|
|
166
165
|
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
166
|
the Work or Derivative Works thereof, You may choose to offer,
|
|
@@ -176,7 +175,7 @@
|
|
|
176
175
|
|
|
177
176
|
END OF TERMS AND CONDITIONS
|
|
178
177
|
|
|
179
|
-
Copyright
|
|
178
|
+
Copyright 2026 Gzeon (https://github.com/gzeoneth)
|
|
180
179
|
|
|
181
180
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
182
181
|
you may not use this file except in compliance with the License.
|
package/README.md
CHANGED
|
@@ -81,7 +81,7 @@ const { calldatas, targets } = stage.data;
|
|
|
81
81
|
for (let i = 0; i < calldatas.length; i++) {
|
|
82
82
|
const decoded = await decodeCalldata(calldatas[i], targets[i], 0, "arb1");
|
|
83
83
|
|
|
84
|
-
console.log(`${decoded.
|
|
84
|
+
console.log(`${decoded.signature}`);
|
|
85
85
|
console.log(`Target: ${getAddressLabel(targets[i], "arb1")}`);
|
|
86
86
|
|
|
87
87
|
// Extract simulation data
|
|
@@ -100,16 +100,16 @@ See [Examples](./docs/EXAMPLES.md#calldata-decoding--simulation) for Tenderly an
|
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
102
|
# Track a proposal by transaction hash
|
|
103
|
-
npx @gzeoneth/gov-tracker track
|
|
103
|
+
npx @gzeoneth/gov-tracker track 0x...
|
|
104
104
|
|
|
105
105
|
# Decode and inspect calldata
|
|
106
|
-
npx @gzeoneth/gov-tracker track
|
|
106
|
+
npx @gzeoneth/gov-tracker track 0x... --inspect-only
|
|
107
107
|
|
|
108
108
|
# Show simulation data for Tenderly/Foundry integration
|
|
109
|
-
npx @gzeoneth/gov-tracker track
|
|
109
|
+
npx @gzeoneth/gov-tracker track 0x... --show-simulation
|
|
110
110
|
|
|
111
111
|
# Execute ready stages
|
|
112
|
-
npx @gzeoneth/gov-tracker track
|
|
112
|
+
npx @gzeoneth/gov-tracker track 0x... --write --private-key $PRIVATE_KEY
|
|
113
113
|
|
|
114
114
|
# Discover and track all proposals
|
|
115
115
|
npx @gzeoneth/gov-tracker run
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Chain-aware address labeling for known governance contracts.
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { KnownAddress } from "../types/calldata";
|
|
7
|
+
import { ChainContext } from "../types";
|
|
7
8
|
/**
|
|
8
9
|
* Get known address label
|
|
9
10
|
*
|
|
10
11
|
* @param address - Contract address
|
|
11
|
-
* @param chain - Chain context
|
|
12
|
+
* @param chain - Chain context (or undefined for unknown chains)
|
|
12
13
|
* @returns Label if known, undefined otherwise
|
|
13
14
|
*/
|
|
14
|
-
export declare function getAddressLabel(address: string, chain: ChainContext): string | undefined;
|
|
15
|
+
export declare function getAddressLabel(address: string, chain: ChainContext | undefined): string | undefined;
|
|
15
16
|
/**
|
|
16
17
|
* Get all known addresses for a chain
|
|
17
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-utils.d.ts","sourceRoot":"","sources":["../../src/calldata/address-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"address-utils.d.ts","sourceRoot":"","sources":["../../src/calldata/address-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAiDxC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,GAAG,SAAS,GAC9B,MAAM,GAAG,SAAS,CAcpB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,CASrE"}
|
|
@@ -50,13 +50,13 @@ const KNOWN_ADDRESSES = {
|
|
|
50
50
|
* Get known address label
|
|
51
51
|
*
|
|
52
52
|
* @param address - Contract address
|
|
53
|
-
* @param chain - Chain context
|
|
53
|
+
* @param chain - Chain context (or undefined for unknown chains)
|
|
54
54
|
* @returns Label if known, undefined otherwise
|
|
55
55
|
*/
|
|
56
56
|
function getAddressLabel(address, chain) {
|
|
57
|
-
|
|
58
|
-
if (!chainAddresses)
|
|
57
|
+
if (!chain)
|
|
59
58
|
return undefined;
|
|
59
|
+
const chainAddresses = KNOWN_ADDRESSES[chain];
|
|
60
60
|
const lowerAddress = address.toLowerCase();
|
|
61
61
|
for (const [addr, label] of Object.entries(chainAddresses)) {
|
|
62
62
|
if (addr.toLowerCase() === lowerAddress) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-utils.js","sourceRoot":"","sources":["../../src/calldata/address-utils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"address-utils.js","sourceRoot":"","sources":["../../src/calldata/address-utils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA2DH,0CAiBC;AAQD,8CASC;AAxFD;;GAEG;AACH,MAAM,eAAe,GAAiD;IACpE,IAAI,EAAE;QACJ,YAAY;QACZ,4CAA4C,EAAE,eAAe;QAC7D,4CAA4C,EAAE,mBAAmB;QACjE,4CAA4C,EAAE,2BAA2B;QACzE,4CAA4C,EAAE,0BAA0B;QAExE,YAAY;QACZ,4CAA4C,EAAE,kBAAkB;QAChE,4CAA4C,EAAE,sBAAsB;QAEpE,kBAAkB;QAClB,4CAA4C,EAAE,WAAW;QACzD,4CAA4C,EAAE,sBAAsB;QACpE,4CAA4C,EAAE,0BAA0B;QAExE,cAAc;QACd,4CAA4C,EAAE,QAAQ;QACtD,4CAA4C,EAAE,gBAAgB;KAC/D;IACD,IAAI,EAAE;QACJ,4CAA4C,EAAE,sBAAsB;KACrE;IACD,QAAQ,EAAE;QACR,WAAW;QACX,4CAA4C,EAAE,aAAa;QAE3D,kBAAkB;QAClB,4CAA4C,EAAE,oBAAoB;QAElE,kBAAkB;QAClB,4CAA4C,EAAE,oBAAoB;QAClE,4CAA4C,EAAE,oBAAoB;QAElE,oBAAoB;QACpB,4CAA4C,EAAE,wBAAwB;QAEtE,WAAW;QACX,4CAA4C,EAAE,aAAa;QAC3D,4CAA4C,EAAE,aAAa;KAC5D;CACF,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,OAAe,EACf,KAA+B;IAE/B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAmB;IACnD,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAE/B,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO;QACP,KAAK;QACL,KAAK;KACN,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Main decoder that orchestrates recursive calldata decoding with
|
|
5
5
|
* nested call handling and retryable ticket detection.
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
7
|
+
import type { DecodedCalldata } from "../types/calldata";
|
|
8
|
+
import { ChainContext } from "../types";
|
|
8
9
|
/**
|
|
9
10
|
* Decode calldata with recursive nested decoding support
|
|
10
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/calldata/decoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/calldata/decoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkBxC;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,KAAK,SAAI,EACT,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,eAAe,CAAC,CA0E1B;AAiJD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,eAAe,EAAE,CAAC,CAS5B"}
|
package/dist/calldata/decoder.js
CHANGED
|
@@ -39,7 +39,6 @@ async function decodeCalldata(calldata, targetAddress, depth = 0, chainContext =
|
|
|
39
39
|
if (!calldata || calldata === "0x" || calldata.length < 10) {
|
|
40
40
|
return {
|
|
41
41
|
selector: "",
|
|
42
|
-
functionName: null,
|
|
43
42
|
signature: null,
|
|
44
43
|
parameters: null,
|
|
45
44
|
raw: calldata || "0x",
|
|
@@ -55,7 +54,6 @@ async function decodeCalldata(calldata, targetAddress, depth = 0, chainContext =
|
|
|
55
54
|
debug("Unknown signature for selector: %s", selector);
|
|
56
55
|
return {
|
|
57
56
|
selector,
|
|
58
|
-
functionName: null,
|
|
59
57
|
signature: null,
|
|
60
58
|
parameters: null,
|
|
61
59
|
raw: calldata,
|
|
@@ -63,7 +61,6 @@ async function decodeCalldata(calldata, targetAddress, depth = 0, chainContext =
|
|
|
63
61
|
chainContext,
|
|
64
62
|
};
|
|
65
63
|
}
|
|
66
|
-
const functionName = (0, signature_lookup_1.extractFunctionName)(signature);
|
|
67
64
|
// Determine chain context for nested content
|
|
68
65
|
// sendTxToL1 means nested content is on L1
|
|
69
66
|
const isSendTxToL1 = selector === SEND_TX_TO_L1_SELECTOR;
|
|
@@ -74,7 +71,6 @@ async function decodeCalldata(calldata, targetAddress, depth = 0, chainContext =
|
|
|
74
71
|
debug("Failed to decode parameters for: %s", signature);
|
|
75
72
|
return {
|
|
76
73
|
selector,
|
|
77
|
-
functionName,
|
|
78
74
|
signature,
|
|
79
75
|
parameters: null,
|
|
80
76
|
raw: calldata,
|
|
@@ -96,7 +92,6 @@ async function decodeCalldata(calldata, targetAddress, depth = 0, chainContext =
|
|
|
96
92
|
}
|
|
97
93
|
return {
|
|
98
94
|
selector,
|
|
99
|
-
functionName,
|
|
100
95
|
signature,
|
|
101
96
|
parameters: params,
|
|
102
97
|
raw: calldata,
|
|
@@ -137,74 +132,72 @@ async function processNestedParams(params, rawDecoded, chainContext, depth) {
|
|
|
137
132
|
// Check for retryable ticket magic
|
|
138
133
|
if (target && (0, retryable_ticket_1.isRetryableTicketMagic)(target)) {
|
|
139
134
|
const retryable = (0, retryable_ticket_1.decodeRetryableTicket)(bytesItem);
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
nestedL2Call = await decodeCalldata(retryable.l2Calldata, retryable.l2Target, depth + 1, l2Chain);
|
|
147
|
-
}
|
|
148
|
-
// Create retryable structure with decoded L2 call
|
|
149
|
-
const retryableDecoded = {
|
|
150
|
-
selector: "",
|
|
151
|
-
functionName: `Retryable Ticket → ${chainName}`,
|
|
152
|
-
signature: null,
|
|
153
|
-
parameters: [
|
|
154
|
-
{
|
|
155
|
-
name: "inbox",
|
|
156
|
-
type: "address",
|
|
157
|
-
value: retryable.targetInbox,
|
|
158
|
-
rawValue: retryable.targetInbox,
|
|
159
|
-
isNested: false,
|
|
160
|
-
addressLabel: (0, address_utils_1.getAddressLabel)(retryable.targetInbox, "ethereum"),
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
name: "l2Target",
|
|
164
|
-
type: "address",
|
|
165
|
-
value: retryable.l2Target,
|
|
166
|
-
rawValue: retryable.l2Target,
|
|
167
|
-
isNested: false,
|
|
168
|
-
addressLabel: (0, address_utils_1.getAddressLabel)(retryable.l2Target, l2Chain),
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
name: "l2Value",
|
|
172
|
-
type: "uint256",
|
|
173
|
-
value: retryable.l2Value,
|
|
174
|
-
rawValue: retryable.l2Value,
|
|
175
|
-
isNested: false,
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
name: "gasLimit",
|
|
179
|
-
type: "uint256",
|
|
180
|
-
value: retryable.gasLimit,
|
|
181
|
-
rawValue: retryable.gasLimit,
|
|
182
|
-
isNested: false,
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
name: "maxFeePerGas",
|
|
186
|
-
type: "uint256",
|
|
187
|
-
value: retryable.maxFeePerGas,
|
|
188
|
-
rawValue: retryable.maxFeePerGas,
|
|
189
|
-
isNested: false,
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
name: "l2Calldata",
|
|
193
|
-
type: "bytes",
|
|
194
|
-
value: retryable.l2Calldata,
|
|
195
|
-
rawValue: retryable.l2Calldata,
|
|
196
|
-
isNested: !!nestedL2Call,
|
|
197
|
-
nested: nestedL2Call,
|
|
198
|
-
},
|
|
199
|
-
],
|
|
200
|
-
raw: bytesItem,
|
|
201
|
-
decodingSource: "local",
|
|
202
|
-
chainContext: "ethereum", // Retryable tickets are created on L1
|
|
203
|
-
targetChain: retryable.chain, // Explicit target L2 chain field
|
|
204
|
-
};
|
|
205
|
-
nestedArray.push(retryableDecoded);
|
|
206
|
-
continue;
|
|
135
|
+
// Determine L2 chain context for address labeling and nested decoding
|
|
136
|
+
const l2ChainContext = retryable.chain === "nova" ? "nova" : retryable.chain === "arb1" ? "arb1" : undefined;
|
|
137
|
+
// Decode l2Calldata with L2 chain context only if chain is known
|
|
138
|
+
let nestedL2Call;
|
|
139
|
+
if (l2ChainContext && (0, parameter_decoder_1.isLikelyCalldata)(retryable.l2Calldata)) {
|
|
140
|
+
nestedL2Call = await decodeCalldata(retryable.l2Calldata, retryable.l2Target, depth + 1, l2ChainContext);
|
|
207
141
|
}
|
|
142
|
+
// Create retryable structure with decoded L2 call
|
|
143
|
+
const retryableDecoded = {
|
|
144
|
+
selector: "",
|
|
145
|
+
signature: null,
|
|
146
|
+
isRetryable: true,
|
|
147
|
+
parameters: [
|
|
148
|
+
{
|
|
149
|
+
name: "inbox",
|
|
150
|
+
type: "address",
|
|
151
|
+
value: retryable.targetInbox,
|
|
152
|
+
rawValue: retryable.targetInbox,
|
|
153
|
+
isNested: false,
|
|
154
|
+
addressLabel: (0, address_utils_1.getAddressLabel)(retryable.targetInbox, "ethereum"),
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: "l2Target",
|
|
158
|
+
type: "address",
|
|
159
|
+
value: retryable.l2Target,
|
|
160
|
+
rawValue: retryable.l2Target,
|
|
161
|
+
isNested: false,
|
|
162
|
+
addressLabel: (0, address_utils_1.getAddressLabel)(retryable.l2Target, l2ChainContext),
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: "l2Value",
|
|
166
|
+
type: "uint256",
|
|
167
|
+
value: retryable.l2Value,
|
|
168
|
+
rawValue: retryable.l2Value,
|
|
169
|
+
isNested: false,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: "gasLimit",
|
|
173
|
+
type: "uint256",
|
|
174
|
+
value: retryable.gasLimit,
|
|
175
|
+
rawValue: retryable.gasLimit,
|
|
176
|
+
isNested: false,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: "maxFeePerGas",
|
|
180
|
+
type: "uint256",
|
|
181
|
+
value: retryable.maxFeePerGas,
|
|
182
|
+
rawValue: retryable.maxFeePerGas,
|
|
183
|
+
isNested: false,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: "l2Calldata",
|
|
187
|
+
type: "bytes",
|
|
188
|
+
value: retryable.l2Calldata,
|
|
189
|
+
rawValue: retryable.l2Calldata,
|
|
190
|
+
isNested: !!nestedL2Call,
|
|
191
|
+
nested: nestedL2Call,
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
raw: bytesItem,
|
|
195
|
+
decodingSource: "local",
|
|
196
|
+
chainContext: "ethereum", // Retryable tickets are created on L1
|
|
197
|
+
targetChain: retryable.chain, // Explicit target L2 chain field
|
|
198
|
+
};
|
|
199
|
+
nestedArray.push(retryableDecoded);
|
|
200
|
+
continue;
|
|
208
201
|
}
|
|
209
202
|
// Normal calldata decoding
|
|
210
203
|
if ((0, parameter_decoder_1.isLikelyCalldata)(bytesItem)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/calldata/decoder.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;
|
|
1
|
+
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/calldata/decoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calldata Extraction Module
|
|
3
|
+
*
|
|
4
|
+
* Utilities for extracting raw calldata, execution targets, and ETH values
|
|
5
|
+
* from different types of tracked stages (Proposal, Timelock, etc.).
|
|
6
|
+
*/
|
|
7
|
+
import { TrackedStage, ExtractedCalldata } from "../types";
|
|
8
|
+
/**
|
|
9
|
+
* Extract calldata, targets, and values from a tracked stage.
|
|
10
|
+
* Handles different data structures for Proposals vs Timelock operations.
|
|
11
|
+
* Ensures all returned arrays have the same length.
|
|
12
|
+
*
|
|
13
|
+
* @param stage The tracked stage to inspect
|
|
14
|
+
* @returns Object containing aligned arrays of calldatas, targets, and values
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractCalldataFromStage(stage: TrackedStage): ExtractedCalldata;
|
|
17
|
+
//# sourceMappingURL=extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/calldata/extraction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAoB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7E;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,CA4C/E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Calldata Extraction Module
|
|
4
|
+
*
|
|
5
|
+
* Utilities for extracting raw calldata, execution targets, and ETH values
|
|
6
|
+
* from different types of tracked stages (Proposal, Timelock, etc.).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.extractCalldataFromStage = extractCalldataFromStage;
|
|
10
|
+
/**
|
|
11
|
+
* Extract calldata, targets, and values from a tracked stage.
|
|
12
|
+
* Handles different data structures for Proposals vs Timelock operations.
|
|
13
|
+
* Ensures all returned arrays have the same length.
|
|
14
|
+
*
|
|
15
|
+
* @param stage The tracked stage to inspect
|
|
16
|
+
* @returns Object containing aligned arrays of calldatas, targets, and values
|
|
17
|
+
*/
|
|
18
|
+
function extractCalldataFromStage(stage) {
|
|
19
|
+
const data = stage.data;
|
|
20
|
+
const result = { calldatas: [], targets: [], values: [] };
|
|
21
|
+
// 1. Check for explicit calldatas array (Proposals)
|
|
22
|
+
// ProposalCreatedData and ProposalQueuedData use plural 'calldatas', 'targets', 'values'
|
|
23
|
+
if (data.calldatas && data.calldatas.length > 0) {
|
|
24
|
+
const count = data.calldatas.length;
|
|
25
|
+
const targets = data.targets || [];
|
|
26
|
+
const values = data.values || [];
|
|
27
|
+
// Strict length checks - these are part of the logic to ensure data integrity
|
|
28
|
+
if (targets.length !== count) {
|
|
29
|
+
throw new Error(`Mismatch in targets length: expected ${count}, got ${targets.length}`);
|
|
30
|
+
}
|
|
31
|
+
if (values.length !== count) {
|
|
32
|
+
throw new Error(`Mismatch in values length: expected ${count}, got ${values.length}`);
|
|
33
|
+
}
|
|
34
|
+
for (let i = 0; i < count; i++) {
|
|
35
|
+
result.calldatas.push(data.calldatas[i]);
|
|
36
|
+
result.targets.push(targets[i]);
|
|
37
|
+
result.values.push(values[i]);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
// 2. Check for Timelock scheduled data (L1/L2 Timelock)
|
|
42
|
+
// Timelock stages usually have `callScheduledData` array containing the operations
|
|
43
|
+
if (data.callScheduledData) {
|
|
44
|
+
for (const scheduled of data.callScheduledData) {
|
|
45
|
+
// scheduled.data and scheduled.target are strictly typed in CallScheduledData
|
|
46
|
+
result.calldatas.push(scheduled.data);
|
|
47
|
+
result.targets.push(scheduled.target);
|
|
48
|
+
result.values.push(scheduled.value || "0");
|
|
49
|
+
}
|
|
50
|
+
if (result.calldatas.length > 0) {
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/calldata/extraction.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAYH,4DA4CC;AApDD;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CAAC,KAAmB;IAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAwB,CAAC;IAC5C,MAAM,MAAM,GAAsB,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE7E,oDAAoD;IACpD,yFAAyF;IACzF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAEjC,8EAA8E;QAC9E,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wDAAwD;IACxD,mFAAmF;IACnF,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/C,8EAA8E;YAC9E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/calldata/index.d.ts
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
* and address utilities.
|
|
6
6
|
*/
|
|
7
7
|
export { decodeCalldata, decodeCalldataArray } from "./decoder";
|
|
8
|
-
export {
|
|
8
|
+
export { extractCalldataFromStage } from "./extraction";
|
|
9
|
+
export { lookupSignature, lookupLocalSignature, lookup4byteDirectory, clearSignatureCache, } from "./signature-lookup";
|
|
9
10
|
export { parseParamTypes, isLikelyCalldata, formatDecodedValue, decodeParameters, } from "./parameter-decoder";
|
|
10
11
|
export { getAddressLabel, getKnownAddresses } from "./address-utils";
|
|
11
|
-
export {
|
|
12
|
-
export { RETRYABLE_TICKET_MAGIC, ARB1_DELAYED_INBOX, NOVA_DELAYED_INBOX, isRetryableTicketMagic, detectChainFromInbox, decodeRetryableTicket, getRetryableChainName,
|
|
12
|
+
export { getTxExplorerUrl } from "../utils/urls";
|
|
13
|
+
export { RETRYABLE_TICKET_MAGIC, ARB1_DELAYED_INBOX, NOVA_DELAYED_INBOX, isRetryableTicketMagic, detectChainFromInbox, decodeRetryableTicket, getRetryableChainName, } from "./retryable-ticket";
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhE,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
|
package/dist/calldata/index.js
CHANGED
|
@@ -6,17 +6,19 @@
|
|
|
6
6
|
* and address utilities.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
9
|
+
exports.getRetryableChainName = exports.decodeRetryableTicket = exports.detectChainFromInbox = exports.isRetryableTicketMagic = exports.NOVA_DELAYED_INBOX = exports.ARB1_DELAYED_INBOX = exports.RETRYABLE_TICKET_MAGIC = exports.getTxExplorerUrl = exports.getKnownAddresses = exports.getAddressLabel = exports.decodeParameters = exports.formatDecodedValue = exports.isLikelyCalldata = exports.parseParamTypes = exports.clearSignatureCache = exports.lookup4byteDirectory = exports.lookupLocalSignature = exports.lookupSignature = exports.extractCalldataFromStage = exports.decodeCalldataArray = exports.decodeCalldata = void 0;
|
|
10
10
|
// Main decoder
|
|
11
11
|
var decoder_1 = require("./decoder");
|
|
12
12
|
Object.defineProperty(exports, "decodeCalldata", { enumerable: true, get: function () { return decoder_1.decodeCalldata; } });
|
|
13
13
|
Object.defineProperty(exports, "decodeCalldataArray", { enumerable: true, get: function () { return decoder_1.decodeCalldataArray; } });
|
|
14
|
+
// Extraction
|
|
15
|
+
var extraction_1 = require("./extraction");
|
|
16
|
+
Object.defineProperty(exports, "extractCalldataFromStage", { enumerable: true, get: function () { return extraction_1.extractCalldataFromStage; } });
|
|
14
17
|
// Signature lookup
|
|
15
18
|
var signature_lookup_1 = require("./signature-lookup");
|
|
16
19
|
Object.defineProperty(exports, "lookupSignature", { enumerable: true, get: function () { return signature_lookup_1.lookupSignature; } });
|
|
17
20
|
Object.defineProperty(exports, "lookupLocalSignature", { enumerable: true, get: function () { return signature_lookup_1.lookupLocalSignature; } });
|
|
18
21
|
Object.defineProperty(exports, "lookup4byteDirectory", { enumerable: true, get: function () { return signature_lookup_1.lookup4byteDirectory; } });
|
|
19
|
-
Object.defineProperty(exports, "extractFunctionName", { enumerable: true, get: function () { return signature_lookup_1.extractFunctionName; } });
|
|
20
22
|
Object.defineProperty(exports, "clearSignatureCache", { enumerable: true, get: function () { return signature_lookup_1.clearSignatureCache; } });
|
|
21
23
|
// Parameter decoder
|
|
22
24
|
var parameter_decoder_1 = require("./parameter-decoder");
|
|
@@ -30,9 +32,7 @@ Object.defineProperty(exports, "getAddressLabel", { enumerable: true, get: funct
|
|
|
30
32
|
Object.defineProperty(exports, "getKnownAddresses", { enumerable: true, get: function () { return address_utils_1.getKnownAddresses; } });
|
|
31
33
|
// URL utilities
|
|
32
34
|
var urls_1 = require("../utils/urls");
|
|
33
|
-
Object.defineProperty(exports, "getAddressExplorerUrl", { enumerable: true, get: function () { return urls_1.getAddressExplorerUrl; } });
|
|
34
35
|
Object.defineProperty(exports, "getTxExplorerUrl", { enumerable: true, get: function () { return urls_1.getTxExplorerUrl; } });
|
|
35
|
-
Object.defineProperty(exports, "getChainLabel", { enumerable: true, get: function () { return urls_1.getChainLabel; } });
|
|
36
36
|
// Retryable ticket
|
|
37
37
|
var retryable_ticket_1 = require("./retryable-ticket");
|
|
38
38
|
Object.defineProperty(exports, "RETRYABLE_TICKET_MAGIC", { enumerable: true, get: function () { return retryable_ticket_1.RETRYABLE_TICKET_MAGIC; } });
|
|
@@ -42,5 +42,4 @@ Object.defineProperty(exports, "isRetryableTicketMagic", { enumerable: true, get
|
|
|
42
42
|
Object.defineProperty(exports, "detectChainFromInbox", { enumerable: true, get: function () { return retryable_ticket_1.detectChainFromInbox; } });
|
|
43
43
|
Object.defineProperty(exports, "decodeRetryableTicket", { enumerable: true, get: function () { return retryable_ticket_1.decodeRetryableTicket; } });
|
|
44
44
|
Object.defineProperty(exports, "getRetryableChainName", { enumerable: true, get: function () { return retryable_ticket_1.getRetryableChainName; } });
|
|
45
|
-
Object.defineProperty(exports, "retryableChainToContext", { enumerable: true, get: function () { return retryable_ticket_1.retryableChainToContext; } });
|
|
46
45
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,eAAe;AACf,qCAAgE;AAAvD,yGAAA,cAAc,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAE5C,mBAAmB;AACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/calldata/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,eAAe;AACf,qCAAgE;AAAvD,yGAAA,cAAc,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAE5C,aAAa;AACb,2CAAwD;AAA/C,sHAAA,wBAAwB,OAAA;AAEjC,mBAAmB;AACnB,uDAK4B;AAJ1B,mHAAA,eAAe,OAAA;AACf,wHAAA,oBAAoB,OAAA;AACpB,wHAAA,oBAAoB,OAAA;AACpB,uHAAA,mBAAmB,OAAA;AAGrB,oBAAoB;AACpB,yDAK6B;AAJ3B,oHAAA,eAAe,OAAA;AACf,qHAAA,gBAAgB,OAAA;AAChB,uHAAA,kBAAkB,OAAA;AAClB,qHAAA,gBAAgB,OAAA;AAGlB,oBAAoB;AACpB,iDAAqE;AAA5D,gHAAA,eAAe,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AAE3C,gBAAgB;AAChB,sCAAiD;AAAxC,wGAAA,gBAAgB,OAAA;AAEzB,mBAAmB;AACnB,uDAQ4B;AAP1B,0HAAA,sBAAsB,OAAA;AACtB,sHAAA,kBAAkB,OAAA;AAClB,sHAAA,kBAAkB,OAAA;AAClB,0HAAA,sBAAsB,OAAA;AACtB,wHAAA,oBAAoB,OAAA;AACpB,yHAAA,qBAAqB,OAAA;AACrB,yHAAA,qBAAqB,OAAA"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* Handles complex types like tuples, arrays, and provides formatting.
|
|
6
6
|
*/
|
|
7
7
|
import { ethers } from "ethers";
|
|
8
|
-
import type {
|
|
8
|
+
import type { DecodedParameter } from "../types/calldata";
|
|
9
|
+
import type { ChainContext } from "../types";
|
|
9
10
|
/**
|
|
10
11
|
* Parse parameter types from function signature
|
|
11
12
|
* Handles nested types like tuples and arrays
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter-decoder.d.ts","sourceRoot":"","sources":["../../src/calldata/parameter-decoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"parameter-decoder.d.ts","sourceRoot":"","sources":["../../src/calldata/parameter-decoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUvD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAmCvE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,GACzB;IAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;CAAE,GAAG,IAAI,CAiDrE"}
|