@qevm/abi 5.7.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.
Files changed (83) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +52 -0
  3. package/lib/_version.d.ts +2 -0
  4. package/lib/_version.d.ts.map +1 -0
  5. package/lib/_version.js +5 -0
  6. package/lib/_version.js.map +1 -0
  7. package/lib/abi-coder.d.ts +17 -0
  8. package/lib/abi-coder.d.ts.map +1 -0
  9. package/lib/abi-coder.js +99 -0
  10. package/lib/abi-coder.js.map +1 -0
  11. package/lib/coders/abstract-coder.d.ts +53 -0
  12. package/lib/coders/abstract-coder.d.ts.map +1 -0
  13. package/lib/coders/abstract-coder.js +153 -0
  14. package/lib/coders/abstract-coder.js.map +1 -0
  15. package/lib/coders/address.d.ts +8 -0
  16. package/lib/coders/address.d.ts.map +1 -0
  17. package/lib/coders/address.js +28 -0
  18. package/lib/coders/address.js.map +1 -0
  19. package/lib/coders/anonymous.d.ts +9 -0
  20. package/lib/coders/anonymous.d.ts.map +1 -0
  21. package/lib/coders/anonymous.js +22 -0
  22. package/lib/coders/anonymous.js.map +1 -0
  23. package/lib/coders/array.d.ts +14 -0
  24. package/lib/coders/array.d.ts.map +1 -0
  25. package/lib/coders/array.js +214 -0
  26. package/lib/coders/array.js.map +1 -0
  27. package/lib/coders/boolean.d.ts +8 -0
  28. package/lib/coders/boolean.d.ts.map +1 -0
  29. package/lib/coders/boolean.js +20 -0
  30. package/lib/coders/boolean.js.map +1 -0
  31. package/lib/coders/bytes.d.ts +12 -0
  32. package/lib/coders/bytes.d.ts.map +1 -0
  33. package/lib/coders/bytes.js +33 -0
  34. package/lib/coders/bytes.js.map +1 -0
  35. package/lib/coders/fixed-bytes.d.ts +10 -0
  36. package/lib/coders/fixed-bytes.d.ts.map +1 -0
  37. package/lib/coders/fixed-bytes.js +28 -0
  38. package/lib/coders/fixed-bytes.js.map +1 -0
  39. package/lib/coders/null.d.ts +8 -0
  40. package/lib/coders/null.d.ts.map +1 -0
  41. package/lib/coders/null.js +24 -0
  42. package/lib/coders/null.js.map +1 -0
  43. package/lib/coders/number.d.ts +11 -0
  44. package/lib/coders/number.d.ts.map +1 -0
  45. package/lib/coders/number.js +45 -0
  46. package/lib/coders/number.js.map +1 -0
  47. package/lib/coders/string.d.ts +9 -0
  48. package/lib/coders/string.d.ts.map +1 -0
  49. package/lib/coders/string.js +21 -0
  50. package/lib/coders/string.js.map +1 -0
  51. package/lib/coders/tuple.d.ts +11 -0
  52. package/lib/coders/tuple.d.ts.map +1 -0
  53. package/lib/coders/tuple.js +60 -0
  54. package/lib/coders/tuple.js.map +1 -0
  55. package/lib/fragments.d.ts +85 -0
  56. package/lib/fragments.d.ts.map +1 -0
  57. package/lib/fragments.js +863 -0
  58. package/lib/fragments.js.map +1 -0
  59. package/lib/index.d.ts +5 -0
  60. package/lib/index.d.ts.map +1 -0
  61. package/lib/index.js +21 -0
  62. package/lib/index.js.map +1 -0
  63. package/lib/interface.d.ts +89 -0
  64. package/lib/interface.d.ts.map +1 -0
  65. package/lib/interface.js +617 -0
  66. package/lib/interface.js.map +1 -0
  67. package/package.json +33 -0
  68. package/src.ts/_version.ts +1 -0
  69. package/src.ts/abi-coder.ts +123 -0
  70. package/src.ts/coders/abstract-coder.ts +207 -0
  71. package/src.ts/coders/address.ts +31 -0
  72. package/src.ts/coders/anonymous.ts +25 -0
  73. package/src.ts/coders/array.ts +236 -0
  74. package/src.ts/coders/boolean.ts +23 -0
  75. package/src.ts/coders/bytes.ts +38 -0
  76. package/src.ts/coders/fixed-bytes.ts +30 -0
  77. package/src.ts/coders/null.ts +24 -0
  78. package/src.ts/coders/number.ts +57 -0
  79. package/src.ts/coders/string.ts +25 -0
  80. package/src.ts/coders/tuple.ts +61 -0
  81. package/src.ts/fragments.ts +1070 -0
  82. package/src.ts/index.ts +34 -0
  83. package/src.ts/interface.ts +715 -0
@@ -0,0 +1,617 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Interface = exports.Indexed = exports.ErrorDescription = exports.TransactionDescription = exports.LogDescription = exports.checkResultErrors = void 0;
4
+ const address_1 = require("@qevm/address");
5
+ const bignumber_1 = require("@qevm/bignumber");
6
+ const bytes_1 = require("@qevm/bytes");
7
+ const hash_1 = require("@qevm/hash");
8
+ const keccak256_1 = require("@ethersproject/keccak256");
9
+ const properties_1 = require("@ethersproject/properties");
10
+ const abi_coder_1 = require("./abi-coder");
11
+ const abstract_coder_1 = require("./coders/abstract-coder");
12
+ Object.defineProperty(exports, "checkResultErrors", { enumerable: true, get: function () { return abstract_coder_1.checkResultErrors; } });
13
+ const fragments_1 = require("./fragments");
14
+ const logger_1 = require("@ethersproject/logger");
15
+ const _version_1 = require("./_version");
16
+ const logger = new logger_1.Logger(_version_1.version);
17
+ class LogDescription extends properties_1.Description {
18
+ }
19
+ exports.LogDescription = LogDescription;
20
+ class TransactionDescription extends properties_1.Description {
21
+ }
22
+ exports.TransactionDescription = TransactionDescription;
23
+ class ErrorDescription extends properties_1.Description {
24
+ }
25
+ exports.ErrorDescription = ErrorDescription;
26
+ class Indexed extends properties_1.Description {
27
+ static isIndexed(value) {
28
+ return !!(value && value._isIndexed);
29
+ }
30
+ }
31
+ exports.Indexed = Indexed;
32
+ const BuiltinErrors = {
33
+ "0x08c379a0": { signature: "Error(string)", name: "Error", inputs: ["string"], reason: true },
34
+ "0x4e487b71": { signature: "Panic(uint256)", name: "Panic", inputs: ["uint256"] }
35
+ };
36
+ function wrapAccessError(property, error) {
37
+ const wrap = new Error(`deferred error during ABI decoding triggered accessing ${property}`);
38
+ wrap.error = error;
39
+ return wrap;
40
+ }
41
+ /*
42
+ function checkNames(fragment: Fragment, type: "input" | "output", params: Array<ParamType>): void {
43
+ params.reduce((accum, param) => {
44
+ if (param.name) {
45
+ if (accum[param.name]) {
46
+ logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format("full") }`, "fragment", fragment);
47
+ }
48
+ accum[param.name] = true;
49
+ }
50
+ return accum;
51
+ }, <{ [ name: string ]: boolean }>{ });
52
+ }
53
+ */
54
+ class Interface {
55
+ constructor(fragments) {
56
+ let abi = [];
57
+ if (typeof (fragments) === "string") {
58
+ abi = JSON.parse(fragments);
59
+ }
60
+ else {
61
+ abi = fragments;
62
+ }
63
+ (0, properties_1.defineReadOnly)(this, "fragments", abi.map((fragment) => {
64
+ return fragments_1.Fragment.from(fragment);
65
+ }).filter((fragment) => (fragment != null)));
66
+ (0, properties_1.defineReadOnly)(this, "_abiCoder", (0, properties_1.getStatic)(new.target, "getAbiCoder")());
67
+ (0, properties_1.defineReadOnly)(this, "functions", {});
68
+ (0, properties_1.defineReadOnly)(this, "errors", {});
69
+ (0, properties_1.defineReadOnly)(this, "events", {});
70
+ (0, properties_1.defineReadOnly)(this, "structs", {});
71
+ // Add all fragments by their signature
72
+ this.fragments.forEach((fragment) => {
73
+ let bucket = null;
74
+ switch (fragment.type) {
75
+ case "constructor":
76
+ if (this.deploy) {
77
+ logger.warn("duplicate definition - constructor");
78
+ return;
79
+ }
80
+ //checkNames(fragment, "input", fragment.inputs);
81
+ (0, properties_1.defineReadOnly)(this, "deploy", fragment);
82
+ return;
83
+ case "function":
84
+ //checkNames(fragment, "input", fragment.inputs);
85
+ //checkNames(fragment, "output", (<FunctionFragment>fragment).outputs);
86
+ bucket = this.functions;
87
+ break;
88
+ case "event":
89
+ //checkNames(fragment, "input", fragment.inputs);
90
+ bucket = this.events;
91
+ break;
92
+ case "error":
93
+ bucket = this.errors;
94
+ break;
95
+ default:
96
+ return;
97
+ }
98
+ let signature = fragment.format();
99
+ if (bucket[signature]) {
100
+ logger.warn("duplicate definition - " + signature);
101
+ return;
102
+ }
103
+ bucket[signature] = fragment;
104
+ });
105
+ // If we do not have a constructor add a default
106
+ if (!this.deploy) {
107
+ (0, properties_1.defineReadOnly)(this, "deploy", fragments_1.ConstructorFragment.from({
108
+ payable: false,
109
+ type: "constructor"
110
+ }));
111
+ }
112
+ (0, properties_1.defineReadOnly)(this, "_isInterface", true);
113
+ }
114
+ format(format) {
115
+ if (!format) {
116
+ format = fragments_1.FormatTypes.full;
117
+ }
118
+ if (format === fragments_1.FormatTypes.sighash) {
119
+ logger.throwArgumentError("interface does not support formatting sighash", "format", format);
120
+ }
121
+ const abi = this.fragments.map((fragment) => fragment.format(format));
122
+ // We need to re-bundle the JSON fragments a bit
123
+ if (format === fragments_1.FormatTypes.json) {
124
+ return JSON.stringify(abi.map((j) => JSON.parse(j)));
125
+ }
126
+ return abi;
127
+ }
128
+ // Sub-classes can override these to handle other blockchains
129
+ static getAbiCoder() {
130
+ return abi_coder_1.defaultAbiCoder;
131
+ }
132
+ static getAddress(address) {
133
+ return (0, address_1.getAddress)(address);
134
+ }
135
+ static getSighash(fragment) {
136
+ return (0, bytes_1.hexDataSlice)((0, hash_1.id)(fragment.format()), 0, 4);
137
+ }
138
+ static getEventTopic(eventFragment) {
139
+ return (0, hash_1.id)(eventFragment.format());
140
+ }
141
+ // Find a function definition by any means necessary (unless it is ambiguous)
142
+ getFunction(nameOrSignatureOrSighash) {
143
+ if ((0, bytes_1.isHexString)(nameOrSignatureOrSighash)) {
144
+ for (const name in this.functions) {
145
+ if (nameOrSignatureOrSighash === this.getSighash(name)) {
146
+ return this.functions[name];
147
+ }
148
+ }
149
+ logger.throwArgumentError("no matching function", "sighash", nameOrSignatureOrSighash);
150
+ }
151
+ // It is a bare name, look up the function (will return null if ambiguous)
152
+ if (nameOrSignatureOrSighash.indexOf("(") === -1) {
153
+ const name = nameOrSignatureOrSighash.trim();
154
+ const matching = Object.keys(this.functions).filter((f) => (f.split("(" /* fix:) */)[0] === name));
155
+ if (matching.length === 0) {
156
+ logger.throwArgumentError("no matching function", "name", name);
157
+ }
158
+ else if (matching.length > 1) {
159
+ logger.throwArgumentError("multiple matching functions", "name", name);
160
+ }
161
+ return this.functions[matching[0]];
162
+ }
163
+ // Normalize the signature and lookup the function
164
+ const result = this.functions[fragments_1.FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
165
+ if (!result) {
166
+ logger.throwArgumentError("no matching function", "signature", nameOrSignatureOrSighash);
167
+ }
168
+ return result;
169
+ }
170
+ // Find an event definition by any means necessary (unless it is ambiguous)
171
+ getEvent(nameOrSignatureOrTopic) {
172
+ if ((0, bytes_1.isHexString)(nameOrSignatureOrTopic)) {
173
+ const topichash = nameOrSignatureOrTopic.toLowerCase();
174
+ for (const name in this.events) {
175
+ if (topichash === this.getEventTopic(name)) {
176
+ return this.events[name];
177
+ }
178
+ }
179
+ logger.throwArgumentError("no matching event", "topichash", topichash);
180
+ }
181
+ // It is a bare name, look up the function (will return null if ambiguous)
182
+ if (nameOrSignatureOrTopic.indexOf("(") === -1) {
183
+ const name = nameOrSignatureOrTopic.trim();
184
+ const matching = Object.keys(this.events).filter((f) => (f.split("(" /* fix:) */)[0] === name));
185
+ if (matching.length === 0) {
186
+ logger.throwArgumentError("no matching event", "name", name);
187
+ }
188
+ else if (matching.length > 1) {
189
+ logger.throwArgumentError("multiple matching events", "name", name);
190
+ }
191
+ return this.events[matching[0]];
192
+ }
193
+ // Normalize the signature and lookup the function
194
+ const result = this.events[fragments_1.EventFragment.fromString(nameOrSignatureOrTopic).format()];
195
+ if (!result) {
196
+ logger.throwArgumentError("no matching event", "signature", nameOrSignatureOrTopic);
197
+ }
198
+ return result;
199
+ }
200
+ // Find a function definition by any means necessary (unless it is ambiguous)
201
+ getError(nameOrSignatureOrSighash) {
202
+ if ((0, bytes_1.isHexString)(nameOrSignatureOrSighash)) {
203
+ const getSighash = (0, properties_1.getStatic)(this.constructor, "getSighash");
204
+ for (const name in this.errors) {
205
+ const error = this.errors[name];
206
+ if (nameOrSignatureOrSighash === getSighash(error)) {
207
+ return this.errors[name];
208
+ }
209
+ }
210
+ logger.throwArgumentError("no matching error", "sighash", nameOrSignatureOrSighash);
211
+ }
212
+ // It is a bare name, look up the function (will return null if ambiguous)
213
+ if (nameOrSignatureOrSighash.indexOf("(") === -1) {
214
+ const name = nameOrSignatureOrSighash.trim();
215
+ const matching = Object.keys(this.errors).filter((f) => (f.split("(" /* fix:) */)[0] === name));
216
+ if (matching.length === 0) {
217
+ logger.throwArgumentError("no matching error", "name", name);
218
+ }
219
+ else if (matching.length > 1) {
220
+ logger.throwArgumentError("multiple matching errors", "name", name);
221
+ }
222
+ return this.errors[matching[0]];
223
+ }
224
+ // Normalize the signature and lookup the function
225
+ const result = this.errors[fragments_1.FunctionFragment.fromString(nameOrSignatureOrSighash).format()];
226
+ if (!result) {
227
+ logger.throwArgumentError("no matching error", "signature", nameOrSignatureOrSighash);
228
+ }
229
+ return result;
230
+ }
231
+ // Get the sighash (the bytes4 selector) used by Solidity to identify a function
232
+ getSighash(fragment) {
233
+ if (typeof (fragment) === "string") {
234
+ try {
235
+ fragment = this.getFunction(fragment);
236
+ }
237
+ catch (error) {
238
+ try {
239
+ fragment = this.getError(fragment);
240
+ }
241
+ catch (_) {
242
+ throw error;
243
+ }
244
+ }
245
+ }
246
+ return (0, properties_1.getStatic)(this.constructor, "getSighash")(fragment);
247
+ }
248
+ // Get the topic (the bytes32 hash) used by Solidity to identify an event
249
+ getEventTopic(eventFragment) {
250
+ if (typeof (eventFragment) === "string") {
251
+ eventFragment = this.getEvent(eventFragment);
252
+ }
253
+ return (0, properties_1.getStatic)(this.constructor, "getEventTopic")(eventFragment);
254
+ }
255
+ _decodeParams(params, data) {
256
+ return this._abiCoder.decode(params, data);
257
+ }
258
+ _encodeParams(params, values) {
259
+ return this._abiCoder.encode(params, values);
260
+ }
261
+ encodeDeploy(values) {
262
+ return this._encodeParams(this.deploy.inputs, values || []);
263
+ }
264
+ decodeErrorResult(fragment, data) {
265
+ if (typeof (fragment) === "string") {
266
+ fragment = this.getError(fragment);
267
+ }
268
+ const bytes = (0, bytes_1.arrayify)(data);
269
+ if ((0, bytes_1.hexlify)(bytes.slice(0, 4)) !== this.getSighash(fragment)) {
270
+ logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, "data", (0, bytes_1.hexlify)(bytes));
271
+ }
272
+ return this._decodeParams(fragment.inputs, bytes.slice(4));
273
+ }
274
+ encodeErrorResult(fragment, values) {
275
+ if (typeof (fragment) === "string") {
276
+ fragment = this.getError(fragment);
277
+ }
278
+ return (0, bytes_1.hexlify)((0, bytes_1.concat)([
279
+ this.getSighash(fragment),
280
+ this._encodeParams(fragment.inputs, values || [])
281
+ ]));
282
+ }
283
+ // Decode the data for a function call (e.g. tx.data)
284
+ decodeFunctionData(functionFragment, data) {
285
+ if (typeof (functionFragment) === "string") {
286
+ functionFragment = this.getFunction(functionFragment);
287
+ }
288
+ const bytes = (0, bytes_1.arrayify)(data);
289
+ if ((0, bytes_1.hexlify)(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {
290
+ logger.throwArgumentError(`data signature does not match function ${functionFragment.name}.`, "data", (0, bytes_1.hexlify)(bytes));
291
+ }
292
+ return this._decodeParams(functionFragment.inputs, bytes.slice(4));
293
+ }
294
+ // Encode the data for a function call (e.g. tx.data)
295
+ encodeFunctionData(functionFragment, values) {
296
+ if (typeof (functionFragment) === "string") {
297
+ functionFragment = this.getFunction(functionFragment);
298
+ }
299
+ return (0, bytes_1.hexlify)((0, bytes_1.concat)([
300
+ this.getSighash(functionFragment),
301
+ this._encodeParams(functionFragment.inputs, values || [])
302
+ ]));
303
+ }
304
+ // Decode the result from a function call (e.g. from eth_call)
305
+ decodeFunctionResult(functionFragment, data) {
306
+ if (typeof (functionFragment) === "string") {
307
+ functionFragment = this.getFunction(functionFragment);
308
+ }
309
+ let bytes = (0, bytes_1.arrayify)(data);
310
+ let reason = null;
311
+ let message = "";
312
+ let errorArgs = null;
313
+ let errorName = null;
314
+ let errorSignature = null;
315
+ switch (bytes.length % this._abiCoder._getWordSize()) {
316
+ case 0:
317
+ try {
318
+ return this._abiCoder.decode(functionFragment.outputs, bytes);
319
+ }
320
+ catch (error) { }
321
+ break;
322
+ case 4: {
323
+ const selector = (0, bytes_1.hexlify)(bytes.slice(0, 4));
324
+ const builtin = BuiltinErrors[selector];
325
+ if (builtin) {
326
+ errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));
327
+ errorName = builtin.name;
328
+ errorSignature = builtin.signature;
329
+ if (builtin.reason) {
330
+ reason = errorArgs[0];
331
+ }
332
+ if (errorName === "Error") {
333
+ message = `; VM Exception while processing transaction: reverted with reason string ${JSON.stringify(errorArgs[0])}`;
334
+ }
335
+ else if (errorName === "Panic") {
336
+ message = `; VM Exception while processing transaction: reverted with panic code ${errorArgs[0]}`;
337
+ }
338
+ }
339
+ else {
340
+ try {
341
+ const error = this.getError(selector);
342
+ errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));
343
+ errorName = error.name;
344
+ errorSignature = error.format();
345
+ }
346
+ catch (error) { }
347
+ }
348
+ break;
349
+ }
350
+ }
351
+ return logger.throwError("call revert exception" + message, logger_1.Logger.errors.CALL_EXCEPTION, {
352
+ method: functionFragment.format(),
353
+ data: (0, bytes_1.hexlify)(data), errorArgs, errorName, errorSignature, reason
354
+ });
355
+ }
356
+ // Encode the result for a function call (e.g. for eth_call)
357
+ encodeFunctionResult(functionFragment, values) {
358
+ if (typeof (functionFragment) === "string") {
359
+ functionFragment = this.getFunction(functionFragment);
360
+ }
361
+ return (0, bytes_1.hexlify)(this._abiCoder.encode(functionFragment.outputs, values || []));
362
+ }
363
+ // Create the filter for the event with search criteria (e.g. for eth_filterLog)
364
+ encodeFilterTopics(eventFragment, values) {
365
+ if (typeof (eventFragment) === "string") {
366
+ eventFragment = this.getEvent(eventFragment);
367
+ }
368
+ if (values.length > eventFragment.inputs.length) {
369
+ logger.throwError("too many arguments for " + eventFragment.format(), logger_1.Logger.errors.UNEXPECTED_ARGUMENT, {
370
+ argument: "values",
371
+ value: values
372
+ });
373
+ }
374
+ let topics = [];
375
+ if (!eventFragment.anonymous) {
376
+ topics.push(this.getEventTopic(eventFragment));
377
+ }
378
+ const encodeTopic = (param, value) => {
379
+ if (param.type === "string") {
380
+ return (0, hash_1.id)(value);
381
+ }
382
+ else if (param.type === "bytes") {
383
+ return (0, keccak256_1.keccak256)((0, bytes_1.hexlify)(value));
384
+ }
385
+ if (param.type === "bool" && typeof (value) === "boolean") {
386
+ value = (value ? "0x01" : "0x00");
387
+ }
388
+ if (param.type.match(/^u?int/)) {
389
+ value = bignumber_1.BigNumber.from(value).toHexString();
390
+ }
391
+ // Check addresses are valid
392
+ if (param.type === "address") {
393
+ this._abiCoder.encode(["address"], [value]);
394
+ }
395
+ return (0, bytes_1.hexZeroPad)((0, bytes_1.hexlify)(value), 32);
396
+ };
397
+ values.forEach((value, index) => {
398
+ let param = eventFragment.inputs[index];
399
+ if (!param.indexed) {
400
+ if (value != null) {
401
+ logger.throwArgumentError("cannot filter non-indexed parameters; must be null", ("contract." + param.name), value);
402
+ }
403
+ return;
404
+ }
405
+ if (value == null) {
406
+ topics.push(null);
407
+ }
408
+ else if (param.baseType === "array" || param.baseType === "tuple") {
409
+ logger.throwArgumentError("filtering with tuples or arrays not supported", ("contract." + param.name), value);
410
+ }
411
+ else if (Array.isArray(value)) {
412
+ topics.push(value.map((value) => encodeTopic(param, value)));
413
+ }
414
+ else {
415
+ topics.push(encodeTopic(param, value));
416
+ }
417
+ });
418
+ // Trim off trailing nulls
419
+ while (topics.length && topics[topics.length - 1] === null) {
420
+ topics.pop();
421
+ }
422
+ return topics;
423
+ }
424
+ encodeEventLog(eventFragment, values) {
425
+ if (typeof (eventFragment) === "string") {
426
+ eventFragment = this.getEvent(eventFragment);
427
+ }
428
+ const topics = [];
429
+ const dataTypes = [];
430
+ const dataValues = [];
431
+ if (!eventFragment.anonymous) {
432
+ topics.push(this.getEventTopic(eventFragment));
433
+ }
434
+ if (values.length !== eventFragment.inputs.length) {
435
+ logger.throwArgumentError("event arguments/values mismatch", "values", values);
436
+ }
437
+ eventFragment.inputs.forEach((param, index) => {
438
+ const value = values[index];
439
+ if (param.indexed) {
440
+ if (param.type === "string") {
441
+ topics.push((0, hash_1.id)(value));
442
+ }
443
+ else if (param.type === "bytes") {
444
+ topics.push((0, keccak256_1.keccak256)(value));
445
+ }
446
+ else if (param.baseType === "tuple" || param.baseType === "array") {
447
+ // @TODO
448
+ throw new Error("not implemented");
449
+ }
450
+ else {
451
+ topics.push(this._abiCoder.encode([param.type], [value]));
452
+ }
453
+ }
454
+ else {
455
+ dataTypes.push(param);
456
+ dataValues.push(value);
457
+ }
458
+ });
459
+ return {
460
+ data: this._abiCoder.encode(dataTypes, dataValues),
461
+ topics: topics
462
+ };
463
+ }
464
+ // Decode a filter for the event and the search criteria
465
+ decodeEventLog(eventFragment, data, topics) {
466
+ if (typeof (eventFragment) === "string") {
467
+ eventFragment = this.getEvent(eventFragment);
468
+ }
469
+ if (topics != null && !eventFragment.anonymous) {
470
+ let topicHash = this.getEventTopic(eventFragment);
471
+ if (!(0, bytes_1.isHexString)(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {
472
+ logger.throwError("fragment/topic mismatch", logger_1.Logger.errors.INVALID_ARGUMENT, { argument: "topics[0]", expected: topicHash, value: topics[0] });
473
+ }
474
+ topics = topics.slice(1);
475
+ }
476
+ let indexed = [];
477
+ let nonIndexed = [];
478
+ let dynamic = [];
479
+ eventFragment.inputs.forEach((param, index) => {
480
+ if (param.indexed) {
481
+ if (param.type === "string" || param.type === "bytes" || param.baseType === "tuple" || param.baseType === "array") {
482
+ indexed.push(fragments_1.ParamType.fromObject({ type: "bytes32", name: param.name }));
483
+ dynamic.push(true);
484
+ }
485
+ else {
486
+ indexed.push(param);
487
+ dynamic.push(false);
488
+ }
489
+ }
490
+ else {
491
+ nonIndexed.push(param);
492
+ dynamic.push(false);
493
+ }
494
+ });
495
+ let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, (0, bytes_1.concat)(topics)) : null;
496
+ let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);
497
+ let result = [];
498
+ let nonIndexedIndex = 0, indexedIndex = 0;
499
+ eventFragment.inputs.forEach((param, index) => {
500
+ if (param.indexed) {
501
+ if (resultIndexed == null) {
502
+ result[index] = new Indexed({ _isIndexed: true, hash: null });
503
+ }
504
+ else if (dynamic[index]) {
505
+ result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });
506
+ }
507
+ else {
508
+ try {
509
+ result[index] = resultIndexed[indexedIndex++];
510
+ }
511
+ catch (error) {
512
+ result[index] = error;
513
+ }
514
+ }
515
+ }
516
+ else {
517
+ try {
518
+ result[index] = resultNonIndexed[nonIndexedIndex++];
519
+ }
520
+ catch (error) {
521
+ result[index] = error;
522
+ }
523
+ }
524
+ // Add the keyword argument if named and safe
525
+ if (param.name && result[param.name] == null) {
526
+ const value = result[index];
527
+ // Make error named values throw on access
528
+ if (value instanceof Error) {
529
+ Object.defineProperty(result, param.name, {
530
+ enumerable: true,
531
+ get: () => { throw wrapAccessError(`property ${JSON.stringify(param.name)}`, value); }
532
+ });
533
+ }
534
+ else {
535
+ result[param.name] = value;
536
+ }
537
+ }
538
+ });
539
+ // Make all error indexed values throw on access
540
+ for (let i = 0; i < result.length; i++) {
541
+ const value = result[i];
542
+ if (value instanceof Error) {
543
+ Object.defineProperty(result, i, {
544
+ enumerable: true,
545
+ get: () => { throw wrapAccessError(`index ${i}`, value); }
546
+ });
547
+ }
548
+ }
549
+ return Object.freeze(result);
550
+ }
551
+ // Given a transaction, find the matching function fragment (if any) and
552
+ // determine all its properties and call parameters
553
+ parseTransaction(tx) {
554
+ let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase());
555
+ if (!fragment) {
556
+ return null;
557
+ }
558
+ return new TransactionDescription({
559
+ args: this._abiCoder.decode(fragment.inputs, "0x" + tx.data.substring(10)),
560
+ functionFragment: fragment,
561
+ name: fragment.name,
562
+ signature: fragment.format(),
563
+ sighash: this.getSighash(fragment),
564
+ value: bignumber_1.BigNumber.from(tx.value || "0"),
565
+ });
566
+ }
567
+ // @TODO
568
+ //parseCallResult(data: BytesLike): ??
569
+ // Given an event log, find the matching event fragment (if any) and
570
+ // determine all its properties and values
571
+ parseLog(log) {
572
+ let fragment = this.getEvent(log.topics[0]);
573
+ if (!fragment || fragment.anonymous) {
574
+ return null;
575
+ }
576
+ // @TODO: If anonymous, and the only method, and the input count matches, should we parse?
577
+ // Probably not, because just because it is the only event in the ABI does
578
+ // not mean we have the full ABI; maybe just a fragment?
579
+ return new LogDescription({
580
+ eventFragment: fragment,
581
+ name: fragment.name,
582
+ signature: fragment.format(),
583
+ topic: this.getEventTopic(fragment),
584
+ args: this.decodeEventLog(fragment, log.data, log.topics)
585
+ });
586
+ }
587
+ parseError(data) {
588
+ const hexData = (0, bytes_1.hexlify)(data);
589
+ let fragment = this.getError(hexData.substring(0, 10).toLowerCase());
590
+ if (!fragment) {
591
+ return null;
592
+ }
593
+ return new ErrorDescription({
594
+ args: this._abiCoder.decode(fragment.inputs, "0x" + hexData.substring(10)),
595
+ errorFragment: fragment,
596
+ name: fragment.name,
597
+ signature: fragment.format(),
598
+ sighash: this.getSighash(fragment),
599
+ });
600
+ }
601
+ /*
602
+ static from(value: Array<Fragment | string | JsonAbi> | string | Interface) {
603
+ if (Interface.isInterface(value)) {
604
+ return value;
605
+ }
606
+ if (typeof(value) === "string") {
607
+ return new Interface(JSON.parse(value));
608
+ }
609
+ return new Interface(value);
610
+ }
611
+ */
612
+ static isInterface(value) {
613
+ return !!(value && value._isInterface);
614
+ }
615
+ }
616
+ exports.Interface = Interface;
617
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src.ts/interface.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,2CAA2C;AAC3C,+CAA0D;AAC1D,uCAA0G;AAC1G,qCAAgC;AAChC,wDAAoD;AACpD,0DAAmF;AAEnF,2CAAwD;AACxD,4DAAoE;AAO3D,kGAPA,kCAAiB,OAOA;AAN1B,2CAAkJ;AAElJ,kDAA+C;AAC/C,yCAAqC;AACrC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,kBAAO,CAAC,CAAC;AAInC,MAAa,cAAe,SAAQ,wBAA2B;CAM9D;AAND,wCAMC;AAED,MAAa,sBAAuB,SAAQ,wBAAmC;CAO9E;AAPD,wDAOC;AAED,MAAa,gBAAiB,SAAQ,wBAA6B;CAMlE;AAND,4CAMC;AAED,MAAa,OAAQ,SAAQ,wBAAoB;IAI7C,MAAM,CAAC,SAAS,CAAC,KAAU;QACvB,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;CACJ;AAPD,0BAOC;AAED,MAAM,aAAa,GAAiG;IAChH,YAAY,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAE,QAAQ,CAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IAC/F,YAAY,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAE,SAAS,CAAE,EAAE;CACtF,CAAA;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,KAAY;IACnD,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,0DAA2D,QAAS,EAAE,CAAC,CAAC;IACzF,IAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;EAYE;AACF,MAAa,SAAS;IAclB,YAAY,SAAmE;QAC3E,IAAI,GAAG,GAAoD,EAAG,CAAC;QAC/D,IAAI,OAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,SAAS,CAAC;QACpB,CAAC;QAED,IAAA,2BAAc,EAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnD,OAAO,oBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAA,2BAAc,EAAC,IAAI,EAAE,WAAW,EAAE,IAAA,sBAAS,EAAiB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QAE1F,IAAA,2BAAc,EAAC,IAAI,EAAE,WAAW,EAAE,EAAG,CAAC,CAAC;QACvC,IAAA,2BAAc,EAAC,IAAI,EAAE,QAAQ,EAAE,EAAG,CAAC,CAAC;QACpC,IAAA,2BAAc,EAAC,IAAI,EAAE,QAAQ,EAAE,EAAG,CAAC,CAAC;QACpC,IAAA,2BAAc,EAAC,IAAI,EAAE,SAAS,EAAE,EAAG,CAAC,CAAC;QAErC,uCAAuC;QACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,MAAM,GAAmC,IAAI,CAAC;YAClD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,aAAa;oBACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACd,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;wBAClD,OAAO;oBACX,CAAC;oBACD,iDAAiD;oBACjD,IAAA,2BAAc,EAAC,IAAI,EAAE,QAAQ,EAAuB,QAAQ,CAAC,CAAC;oBAC9D,OAAO;gBACX,KAAK,UAAU;oBACX,iDAAiD;oBACjD,uEAAuE;oBACvE,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;oBACxB,MAAM;gBACV,KAAK,OAAO;oBACR,iDAAiD;oBACjD,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBACrB,MAAM;gBACV,KAAK,OAAO;oBACR,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBACrB,MAAM;gBACV;oBACI,OAAO;YACf,CAAC;YAED,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;gBACnD,OAAO;YACX,CAAC;YAED,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAA,2BAAc,EAAC,IAAI,EAAE,QAAQ,EAAE,+BAAmB,CAAC,IAAI,CAAC;gBACpD,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,aAAa;aACtB,CAAC,CAAC,CAAC;QACR,CAAC;QAED,IAAA,2BAAc,EAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,MAAe;QAClB,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,GAAG,uBAAW,CAAC,IAAI,CAAC;QAAC,CAAC;QAC3C,IAAI,MAAM,KAAK,uBAAW,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtE,gDAAgD;QAChD,IAAI,MAAM,KAAK,uBAAW,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,WAAW;QACd,OAAO,2BAAe,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,OAAe;QAC7B,OAAO,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,QAA0C;QACxD,OAAO,IAAA,oBAAY,EAAC,IAAA,SAAE,EAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,aAA4B;QAC7C,OAAO,IAAA,SAAE,EAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,6EAA6E;IAC7E,WAAW,CAAC,wBAAgC;QACxC,IAAI,IAAA,mBAAW,EAAC,wBAAwB,CAAC,EAAE,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,IAAI,wBAAwB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAC3F,CAAC;QAED,0EAA0E;QAC1E,IAAI,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAClG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACpE,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,kDAAkD;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,4BAAgB,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,2EAA2E;IAC3E,QAAQ,CAAC,sBAA8B;QACnC,IAAI,IAAA,mBAAW,EAAC,sBAAsB,CAAC,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,sBAAsB,CAAC,WAAW,EAAE,CAAC;YACvD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACL,CAAC;YACD,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC;QAED,0EAA0E;QAC1E,IAAI,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAC/F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACxE,CAAC;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,kDAAkD;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAa,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,6EAA6E;IAC7E,QAAQ,CAAC,wBAAgC;QACrC,IAAI,IAAA,mBAAW,EAAC,wBAAwB,CAAC,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,IAAA,sBAAS,EAAkD,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC9G,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,wBAAwB,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACL,CAAC;YACD,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;QACxF,CAAC;QAED,0EAA0E;QAC1E,IAAI,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAC/F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACxE,CAAC;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,kDAAkD;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,4BAAgB,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gFAAgF;IAChF,UAAU,CAAC,QAAmD;QAC1D,IAAI,OAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC;oBACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAS,QAAQ,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAA,sBAAS,EAAkD,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC;IAChH,CAAC;IAED,yEAAyE;IACzE,aAAa,CAAC,aAAqC;QAC/C,IAAI,OAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAA,sBAAS,EAA+B,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC;IACrG,CAAC;IAGD,aAAa,CAAC,MAAgC,EAAE,IAAe;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,aAAa,CAAC,MAAgC,EAAE,MAA0B;QACtE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChD,CAAC;IAED,YAAY,CAAC,MAA2B;QACpC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,EAAG,CAAC,CAAC;IACjE,CAAC;IAED,iBAAiB,CAAC,QAAgC,EAAE,IAAe;QAC/D,IAAI,OAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,kBAAkB,CAAC,uCAAwC,QAAQ,CAAC,IAAK,GAAG,EAAE,MAAM,EAAE,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;QACjH,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB,CAAC,QAAgC,EAAE,MAA2B;QAC3E,IAAI,OAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,IAAA,eAAO,EAAC,IAAA,cAAM,EAAC;YAClB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,EAAG,CAAC;SACrD,CAAC,CAAC,CAAC;IACR,CAAC;IAED,qDAAqD;IACrD,kBAAkB,CAAC,gBAA2C,EAAE,IAAe;QAC3E,IAAI,OAAM,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,kBAAkB,CAAC,0CAA2C,gBAAgB,CAAC,IAAK,GAAG,EAAE,MAAM,EAAE,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;QAC5H,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,qDAAqD;IACrD,kBAAkB,CAAC,gBAA2C,EAAE,MAA2B;QACvF,IAAI,OAAM,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,IAAA,eAAO,EAAC,IAAA,cAAM,EAAC;YAClB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,IAAI,EAAG,CAAC;SAC7D,CAAC,CAAC,CAAC;IACR,CAAC;IAED,8DAA8D;IAC9D,oBAAoB,CAAC,gBAA2C,EAAE,IAAe;QAC7E,IAAI,OAAM,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,KAAK,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,MAAM,GAAW,IAAI,CAAC;QAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,SAAS,GAAW,IAAI,CAAC;QAC7B,IAAI,SAAS,GAAW,IAAI,CAAC;QAC7B,IAAI,cAAc,GAAW,IAAI,CAAC;QAClC,QAAQ,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YACnD,KAAK,CAAC;gBACF,IAAI,CAAC;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;gBACnB,MAAM;YAEV,KAAK,CAAC,CAAC,CAAC,CAAC;gBACL,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,OAAO,EAAE,CAAC;oBACV,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;oBACzB,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;oBACnC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAC9C,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;wBACxB,OAAO,GAAG,4EAA6E,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;oBAC3H,CAAC;yBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;wBAC/B,OAAO,GAAG,yEAA0E,SAAS,CAAC,CAAC,CAAE,EAAE,CAAC;oBACxG,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC;wBACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACtC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChE,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;wBACvB,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACpC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM;YACV,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,UAAU,CAAC,uBAAuB,GAAG,OAAO,EAAE,eAAM,CAAC,MAAM,CAAC,cAAc,EAAE;YACtF,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE;YACjC,IAAI,EAAE,IAAA,eAAO,EAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM;SACpE,CAAC,CAAC;IACP,CAAC;IAED,4DAA4D;IAC5D,oBAAoB,CAAC,gBAA2C,EAAE,MAA2B;QACzF,IAAI,OAAM,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,IAAA,eAAO,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,EAAG,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,gFAAgF;IAChF,kBAAkB,CAAC,aAAqC,EAAE,MAA0B;QAChF,IAAI,OAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,CAAC,UAAU,CAAC,yBAAyB,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,eAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;gBACrG,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,MAAM;aAChB,CAAC,CAAA;QACN,CAAC;QAED,IAAI,MAAM,GAAkC,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QAAC,CAAC;QAEjF,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAE,KAAU,EAAU,EAAE;YACzD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzB,OAAO,IAAA,SAAE,EAAC,KAAK,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/B,OAAO,IAAA,qBAAS,EAAC,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvD,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA,CAAC,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,KAAK,GAAG,qBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAChD,CAAC;YAED,4BAA4B;YAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAE,CAAE,SAAS,CAAE,EAAE,CAAE,KAAK,CAAE,CAAC,CAAC;YAAC,CAAC;YACnF,OAAO,IAAA,kBAAU,EAAC,IAAA,eAAO,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAE5B,IAAI,KAAK,GAAmB,aAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEzD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAChB,MAAM,CAAC,kBAAkB,CAAC,oDAAoD,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvH,CAAC;gBACD,OAAO;YACX,CAAC;YAED,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAClE,MAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAClH,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,aAAqC,EAAE,MAA0B;QAC5E,IAAI,OAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,MAAM,GAAkB,EAAG,CAAC;QAElC,MAAM,SAAS,GAAqB,EAAG,CAAC;QACxC,MAAM,UAAU,GAAkB,EAAG,CAAC;QAEtC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,CAAC,kBAAkB,CAAC,iCAAiC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnF,CAAC;QAED,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,IAAA,SAAE,EAAC,KAAK,CAAC,CAAC,CAAA;gBAC1B,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC,CAAA;gBACjC,CAAC;qBAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAClE,QAAQ;oBACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,EAAG,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC;gBAClE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAG,UAAU,CAAC;YACnD,MAAM,EAAE,MAAM;SACjB,CAAC;IACN,CAAC;IAED,wDAAwD;IACxD,cAAc,CAAC,aAAqC,EAAE,IAAe,EAAE,MAA8B;QACjG,IAAI,OAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC7C,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,IAAA,mBAAW,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;gBACvE,MAAM,CAAC,UAAU,CAAC,yBAAyB,EAAE,eAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnJ,CAAC;YACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,GAAqB,EAAE,CAAC;QACnC,IAAI,UAAU,GAAqB,EAAE,CAAC;QACtC,IAAI,OAAO,GAAmB,EAAE,CAAC;QAEjC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAChH,OAAO,CAAC,IAAI,CAAC,qBAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC,CAAA,CAAC,CAAC,IAAI,CAAC;QAC5F,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAErE,IAAI,MAAM,GAA4C,EAAG,CAAC;QAC1D,IAAI,eAAe,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC;QAC1C,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAElE,CAAC;qBAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;gBAE3F,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;oBAClD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC;oBACD,MAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACL,CAAC;YAED,6CAA6C;YAC7C,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAE5B,0CAA0C;gBAC1C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;wBACtC,UAAU,EAAE,IAAI;wBAChB,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,CAAC,YAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;qBAC3F,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC/B,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,gDAAgD;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC7B,UAAU,EAAE,IAAI;oBAChB,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,CAAC,SAAU,CAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC/D,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,mDAAmD;IACnD,gBAAgB,CAAC,EAA0C;QACvD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAEvE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAE/B,OAAO,IAAI,sBAAsB,CAAC;YAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1E,gBAAgB,EAAE,QAAQ;YAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC5B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAClC,KAAK,EAAE,qBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;SACzC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ;IACR,sCAAsC;IAEtC,oEAAoE;IACpE,0CAA0C;IAC1C,QAAQ,CAAC,GAA2C;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAErD,0FAA0F;QAC1F,iFAAiF;QACjF,+DAA+D;QAGhE,OAAO,IAAI,cAAc,CAAC;YACrB,aAAa,EAAE,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC5B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;SAC5D,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,IAAe;QACtB,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAEpE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAE/B,OAAO,IAAI,gBAAgB,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1E,aAAa,EAAE,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC5B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;SACrC,CAAC,CAAC;IACP,CAAC;IAGD;;;;;;;;;;MAUE;IAEF,MAAM,CAAC,WAAW,CAAC,KAAU;QACzB,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;CACJ;AA5nBD,8BA4nBC"}