@aztec/simulator 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dest/acvm/acvm.d.ts +39 -0
- package/dest/acvm/acvm.d.ts.map +1 -0
- package/dest/acvm/acvm.js +97 -0
- package/dest/acvm/acvm_types.d.ts +10 -0
- package/dest/acvm/acvm_types.d.ts.map +1 -0
- package/dest/acvm/acvm_types.js +2 -0
- package/dest/acvm/deserialize.d.ts +24 -0
- package/dest/acvm/deserialize.d.ts.map +1 -0
- package/dest/acvm/deserialize.js +31 -0
- package/dest/acvm/index.d.ts +6 -0
- package/dest/acvm/index.d.ts.map +1 -0
- package/dest/acvm/index.js +6 -0
- package/dest/acvm/oracle/debug.d.ts +19 -0
- package/dest/acvm/oracle/debug.d.ts.map +1 -0
- package/dest/acvm/oracle/debug.js +95 -0
- package/dest/acvm/oracle/index.d.ts +15 -0
- package/dest/acvm/oracle/index.d.ts.map +1 -0
- package/dest/acvm/oracle/index.js +4 -0
- package/dest/acvm/oracle/oracle.d.ts +38 -0
- package/dest/acvm/oracle/oracle.d.ts.map +1 -0
- package/dest/acvm/oracle/oracle.js +193 -0
- package/dest/acvm/oracle/typed_oracle.d.ts +88 -0
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -0
- package/dest/acvm/oracle/typed_oracle.js +103 -0
- package/dest/acvm/serialize.d.ts +30 -0
- package/dest/acvm/serialize.d.ts.map +1 -0
- package/dest/acvm/serialize.js +67 -0
- package/dest/avm/avm_context.d.ts +49 -0
- package/dest/avm/avm_context.d.ts.map +1 -0
- package/dest/avm/avm_context.js +56 -0
- package/dest/avm/avm_execution_environment.d.ts +28 -0
- package/dest/avm/avm_execution_environment.d.ts.map +1 -0
- package/dest/avm/avm_execution_environment.js +42 -0
- package/dest/avm/avm_machine_state.d.ts +62 -0
- package/dest/avm/avm_machine_state.d.ts.map +1 -0
- package/dest/avm/avm_machine_state.js +69 -0
- package/dest/avm/avm_memory_types.d.ts +113 -0
- package/dest/avm/avm_memory_types.d.ts.map +1 -0
- package/dest/avm/avm_memory_types.js +269 -0
- package/dest/avm/avm_message_call_result.d.ts +16 -0
- package/dest/avm/avm_message_call_result.d.ts.map +1 -0
- package/dest/avm/avm_message_call_result.js +21 -0
- package/dest/avm/avm_simulator.d.ts +22 -0
- package/dest/avm/avm_simulator.d.ts.map +1 -0
- package/dest/avm/avm_simulator.js +74 -0
- package/dest/avm/errors.d.ts +30 -0
- package/dest/avm/errors.d.ts.map +1 -0
- package/dest/avm/errors.js +44 -0
- package/dest/avm/fixtures/index.d.ts +28 -0
- package/dest/avm/fixtures/index.d.ts.map +1 -0
- package/dest/avm/fixtures/index.js +44 -0
- package/dest/avm/journal/host_storage.d.ts +13 -0
- package/dest/avm/journal/host_storage.d.ts.map +1 -0
- package/dest/avm/journal/host_storage.js +13 -0
- package/dest/avm/journal/index.d.ts +3 -0
- package/dest/avm/journal/index.d.ts.map +1 -0
- package/dest/avm/journal/index.js +3 -0
- package/dest/avm/journal/journal.d.ts +95 -0
- package/dest/avm/journal/journal.d.ts.map +1 -0
- package/dest/avm/journal/journal.js +217 -0
- package/dest/avm/opcodes/accrued_substate.d.ts +42 -0
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -0
- package/dest/avm/opcodes/accrued_substate.js +82 -0
- package/dest/avm/opcodes/arithmetic.d.ts +28 -0
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -0
- package/dest/avm/opcodes/arithmetic.js +59 -0
- package/dest/avm/opcodes/bitwise.d.ts +40 -0
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -0
- package/dest/avm/opcodes/bitwise.js +92 -0
- package/dest/avm/opcodes/comparators.d.ts +22 -0
- package/dest/avm/opcodes/comparators.d.ts.map +1 -0
- package/dest/avm/opcodes/comparators.js +51 -0
- package/dest/avm/opcodes/control_flow.d.ts +57 -0
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -0
- package/dest/avm/opcodes/control_flow.js +118 -0
- package/dest/avm/opcodes/environment_getters.d.ts +74 -0
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -0
- package/dest/avm/opcodes/environment_getters.js +151 -0
- package/dest/avm/opcodes/external_calls.d.ts +34 -0
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -0
- package/dest/avm/opcodes/external_calls.js +103 -0
- package/dest/avm/opcodes/index.d.ts +11 -0
- package/dest/avm/opcodes/index.d.ts.map +1 -0
- package/dest/avm/opcodes/index.js +11 -0
- package/dest/avm/opcodes/instruction.d.ts +43 -0
- package/dest/avm/opcodes/instruction.d.ts.map +1 -0
- package/dest/avm/opcodes/instruction.js +44 -0
- package/dest/avm/opcodes/instruction_impl.d.ts +28 -0
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -0
- package/dest/avm/opcodes/instruction_impl.js +47 -0
- package/dest/avm/opcodes/memory.d.ts +55 -0
- package/dest/avm/opcodes/memory.d.ts.map +1 -0
- package/dest/avm/opcodes/memory.js +125 -0
- package/dest/avm/opcodes/storage.d.ts +31 -0
- package/dest/avm/opcodes/storage.d.ts.map +1 -0
- package/dest/avm/opcodes/storage.js +59 -0
- package/dest/avm/serialization/buffer_cursor.d.ts +25 -0
- package/dest/avm/serialization/buffer_cursor.d.ts.map +1 -0
- package/dest/avm/serialization/buffer_cursor.js +94 -0
- package/dest/avm/serialization/bytecode_serialization.d.ts +25 -0
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -0
- package/dest/avm/serialization/bytecode_serialization.js +100 -0
- package/dest/avm/serialization/instruction_serialization.d.ts +91 -0
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -0
- package/dest/avm/serialization/instruction_serialization.js +146 -0
- package/dest/client/client_execution_context.d.ts +188 -0
- package/dest/client/client_execution_context.d.ts.map +1 -0
- package/dest/client/client_execution_context.js +326 -0
- package/dest/client/db_oracle.d.ts +155 -0
- package/dest/client/db_oracle.d.ts.map +1 -0
- package/dest/client/db_oracle.js +17 -0
- package/dest/client/execution_note_cache.d.ts +54 -0
- package/dest/client/execution_note_cache.d.ts.map +1 -0
- package/dest/client/execution_note_cache.js +82 -0
- package/dest/client/execution_result.d.ts +67 -0
- package/dest/client/execution_result.d.ts.map +1 -0
- package/dest/client/execution_result.js +32 -0
- package/dest/client/index.d.ts +4 -0
- package/dest/client/index.d.ts.map +1 -0
- package/dest/client/index.js +4 -0
- package/dest/client/pick_notes.d.ts +80 -0
- package/dest/client/pick_notes.d.ts.map +1 -0
- package/dest/client/pick_notes.js +45 -0
- package/dest/client/private_execution.d.ts +10 -0
- package/dest/client/private_execution.d.ts.map +1 -0
- package/dest/client/private_execution.js +55 -0
- package/dest/client/simulator.d.ts +100 -0
- package/dest/client/simulator.d.ts.map +1 -0
- package/dest/client/simulator.js +171 -0
- package/dest/client/unconstrained_execution.d.ts +10 -0
- package/dest/client/unconstrained_execution.d.ts.map +1 -0
- package/dest/client/unconstrained_execution.js +25 -0
- package/dest/client/view_data_oracle.d.ts +139 -0
- package/dest/client/view_data_oracle.d.ts.map +1 -0
- package/dest/client/view_data_oracle.js +196 -0
- package/dest/common/errors.d.ts +36 -0
- package/dest/common/errors.d.ts.map +1 -0
- package/dest/common/errors.js +57 -0
- package/dest/common/index.d.ts +4 -0
- package/dest/common/index.d.ts.map +1 -0
- package/dest/common/index.js +4 -0
- package/dest/common/packed_args_cache.d.ts +28 -0
- package/dest/common/packed_args_cache.d.ts.map +1 -0
- package/dest/common/packed_args_cache.js +50 -0
- package/dest/common/side_effect_counter.d.ts +9 -0
- package/dest/common/side_effect_counter.d.ts.map +1 -0
- package/dest/common/side_effect_counter.js +14 -0
- package/dest/index.d.ts +4 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +4 -0
- package/dest/public/db.d.ts +77 -0
- package/dest/public/db.d.ts.map +1 -0
- package/dest/public/db.js +2 -0
- package/dest/public/execution.d.ts +62 -0
- package/dest/public/execution.d.ts.map +1 -0
- package/dest/public/execution.js +61 -0
- package/dest/public/executor.d.ts +27 -0
- package/dest/public/executor.d.ts.map +1 -0
- package/dest/public/executor.js +83 -0
- package/dest/public/index.d.ts +4 -0
- package/dest/public/index.d.ts.map +1 -0
- package/dest/public/index.js +4 -0
- package/dest/public/public_execution_context.d.ts +103 -0
- package/dest/public/public_execution_context.d.ts.map +1 -0
- package/dest/public/public_execution_context.js +175 -0
- package/dest/public/state_actions.d.ts +39 -0
- package/dest/public/state_actions.d.ts.map +1 -0
- package/dest/public/state_actions.js +79 -0
- package/dest/test/utils.d.ts +12 -0
- package/dest/test/utils.d.ts.map +1 -0
- package/dest/test/utils.js +23 -0
- package/dest/utils.d.ts +27 -0
- package/dest/utils.d.ts.map +1 -0
- package/dest/utils.js +28 -0
- package/package.json +66 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { MerkleTreeId, UnencryptedL2Log } from '@aztec/circuit-types';
|
|
2
|
+
import { RETURN_VALUES_LENGTH } from '@aztec/circuits.js';
|
|
3
|
+
import { EventSelector, FunctionSelector } from '@aztec/foundation/abi';
|
|
4
|
+
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
5
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
6
|
+
import { Fr, Point } from '@aztec/foundation/fields';
|
|
7
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
8
|
+
import { frToNumber, fromACVMField } from '../deserialize.js';
|
|
9
|
+
import { toACVMField, toAcvmEnqueuePublicFunctionResult } from '../serialize.js';
|
|
10
|
+
import { acvmFieldMessageToString, oracleDebugCallToFormattedStr } from './debug.js';
|
|
11
|
+
/**
|
|
12
|
+
* A data source that has all the apis required by Aztec.nr.
|
|
13
|
+
*/
|
|
14
|
+
export class Oracle {
|
|
15
|
+
constructor(typedOracle, log = createDebugLogger('aztec:simulator:oracle')) {
|
|
16
|
+
this.typedOracle = typedOracle;
|
|
17
|
+
this.log = log;
|
|
18
|
+
}
|
|
19
|
+
getRandomField() {
|
|
20
|
+
const val = this.typedOracle.getRandomField();
|
|
21
|
+
return toACVMField(val);
|
|
22
|
+
}
|
|
23
|
+
async packArguments(args) {
|
|
24
|
+
const packed = await this.typedOracle.packArguments(args.map(fromACVMField));
|
|
25
|
+
return toACVMField(packed);
|
|
26
|
+
}
|
|
27
|
+
async getNullifierKeyPair([accountAddress]) {
|
|
28
|
+
const { publicKey, secretKey } = await this.typedOracle.getNullifierKeyPair(fromACVMField(accountAddress));
|
|
29
|
+
return [
|
|
30
|
+
toACVMField(publicKey.x),
|
|
31
|
+
toACVMField(publicKey.y),
|
|
32
|
+
toACVMField(secretKey.high),
|
|
33
|
+
toACVMField(secretKey.low),
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
async getPublicKeyAndPartialAddress([address]) {
|
|
37
|
+
const { publicKey, partialAddress } = await this.typedOracle.getCompleteAddress(AztecAddress.fromField(fromACVMField(address)));
|
|
38
|
+
return [publicKey.x, publicKey.y, partialAddress].map(toACVMField);
|
|
39
|
+
}
|
|
40
|
+
async getMembershipWitness([blockNumber], [treeId], [leafValue]) {
|
|
41
|
+
const parsedBlockNumber = frToNumber(fromACVMField(blockNumber));
|
|
42
|
+
const parsedTreeId = frToNumber(fromACVMField(treeId));
|
|
43
|
+
const parsedLeafValue = fromACVMField(leafValue);
|
|
44
|
+
const witness = await this.typedOracle.getMembershipWitness(parsedBlockNumber, parsedTreeId, parsedLeafValue);
|
|
45
|
+
if (!witness) {
|
|
46
|
+
throw new Error(`Leaf ${leafValue} not found in the tree ${MerkleTreeId[parsedTreeId]} at block ${parsedBlockNumber}.`);
|
|
47
|
+
}
|
|
48
|
+
return witness.map(toACVMField);
|
|
49
|
+
}
|
|
50
|
+
async getSiblingPath([blockNumber], [treeId], [leafIndex]) {
|
|
51
|
+
const parsedBlockNumber = frToNumber(fromACVMField(blockNumber));
|
|
52
|
+
const parsedTreeId = frToNumber(fromACVMField(treeId));
|
|
53
|
+
const parsedLeafIndex = fromACVMField(leafIndex);
|
|
54
|
+
const path = await this.typedOracle.getSiblingPath(parsedBlockNumber, parsedTreeId, parsedLeafIndex);
|
|
55
|
+
return path.map(toACVMField);
|
|
56
|
+
}
|
|
57
|
+
async getNullifierMembershipWitness([blockNumber], [nullifier]) {
|
|
58
|
+
const parsedBlockNumber = frToNumber(fromACVMField(blockNumber));
|
|
59
|
+
const parsedNullifier = fromACVMField(nullifier);
|
|
60
|
+
const witness = await this.typedOracle.getNullifierMembershipWitness(parsedBlockNumber, parsedNullifier);
|
|
61
|
+
if (!witness) {
|
|
62
|
+
throw new Error(`Low nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`);
|
|
63
|
+
}
|
|
64
|
+
return witness.toFields().map(toACVMField);
|
|
65
|
+
}
|
|
66
|
+
async getLowNullifierMembershipWitness([blockNumber], [nullifier]) {
|
|
67
|
+
const parsedBlockNumber = frToNumber(fromACVMField(blockNumber));
|
|
68
|
+
const parsedNullifier = fromACVMField(nullifier);
|
|
69
|
+
const witness = await this.typedOracle.getLowNullifierMembershipWitness(parsedBlockNumber, parsedNullifier);
|
|
70
|
+
if (!witness) {
|
|
71
|
+
throw new Error(`Low nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`);
|
|
72
|
+
}
|
|
73
|
+
return witness.toFields().map(toACVMField);
|
|
74
|
+
}
|
|
75
|
+
async getPublicDataTreeWitness([blockNumber], [leafSlot]) {
|
|
76
|
+
const parsedBlockNumber = frToNumber(fromACVMField(blockNumber));
|
|
77
|
+
const parsedLeafSlot = fromACVMField(leafSlot);
|
|
78
|
+
const witness = await this.typedOracle.getPublicDataTreeWitness(parsedBlockNumber, parsedLeafSlot);
|
|
79
|
+
if (!witness) {
|
|
80
|
+
throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block ${parsedBlockNumber}.`);
|
|
81
|
+
}
|
|
82
|
+
return witness.toFields().map(toACVMField);
|
|
83
|
+
}
|
|
84
|
+
async getHeader([blockNumber]) {
|
|
85
|
+
const parsedBlockNumber = frToNumber(fromACVMField(blockNumber));
|
|
86
|
+
const header = await this.typedOracle.getHeader(parsedBlockNumber);
|
|
87
|
+
if (!header) {
|
|
88
|
+
throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
|
|
89
|
+
}
|
|
90
|
+
return header.toFields().map(toACVMField);
|
|
91
|
+
}
|
|
92
|
+
async getAuthWitness([messageHash]) {
|
|
93
|
+
const messageHashField = fromACVMField(messageHash);
|
|
94
|
+
const witness = await this.typedOracle.getAuthWitness(messageHashField);
|
|
95
|
+
if (!witness) {
|
|
96
|
+
throw new Error(`Authorization not found for message hash ${messageHashField}`);
|
|
97
|
+
}
|
|
98
|
+
return witness.map(toACVMField);
|
|
99
|
+
}
|
|
100
|
+
async popCapsule() {
|
|
101
|
+
const capsule = await this.typedOracle.popCapsule();
|
|
102
|
+
if (!capsule) {
|
|
103
|
+
throw new Error(`No capsules available`);
|
|
104
|
+
}
|
|
105
|
+
return capsule.map(toACVMField);
|
|
106
|
+
}
|
|
107
|
+
async getNotes([storageSlot], [numSelects], selectBy, selectValues, selectComparators, sortBy, sortOrder, [limit], [offset], [status], [returnSize]) {
|
|
108
|
+
const noteDatas = await this.typedOracle.getNotes(fromACVMField(storageSlot), +numSelects, selectBy.map(s => +s), selectValues.map(fromACVMField), selectComparators.map(s => +s), sortBy.map(s => +s), sortOrder.map(s => +s), +limit, +offset, +status);
|
|
109
|
+
const noteLength = noteDatas?.[0]?.note.items.length ?? 0;
|
|
110
|
+
if (!noteDatas.every(({ note }) => noteLength === note.items.length)) {
|
|
111
|
+
throw new Error('Notes should all be the same length.');
|
|
112
|
+
}
|
|
113
|
+
const contractAddress = noteDatas[0]?.contractAddress ?? Fr.ZERO;
|
|
114
|
+
// Values indicates whether the note is settled or transient.
|
|
115
|
+
const noteTypes = {
|
|
116
|
+
isSettled: new Fr(0),
|
|
117
|
+
isTransient: new Fr(1),
|
|
118
|
+
};
|
|
119
|
+
const flattenData = noteDatas.flatMap(({ nonce, note, index }) => [
|
|
120
|
+
nonce,
|
|
121
|
+
index === undefined ? noteTypes.isTransient : noteTypes.isSettled,
|
|
122
|
+
...note.items,
|
|
123
|
+
]);
|
|
124
|
+
const returnFieldSize = +returnSize;
|
|
125
|
+
const returnData = [noteDatas.length, contractAddress, ...flattenData].map(v => toACVMField(v));
|
|
126
|
+
if (returnData.length > returnFieldSize) {
|
|
127
|
+
throw new Error(`Return data size too big. Maximum ${returnFieldSize} fields. Got ${flattenData.length}.`);
|
|
128
|
+
}
|
|
129
|
+
const paddedZeros = Array(returnFieldSize - returnData.length).fill(toACVMField(0));
|
|
130
|
+
return returnData.concat(paddedZeros);
|
|
131
|
+
}
|
|
132
|
+
notifyCreatedNote([storageSlot], note, [innerNoteHash]) {
|
|
133
|
+
this.typedOracle.notifyCreatedNote(fromACVMField(storageSlot), note.map(fromACVMField), fromACVMField(innerNoteHash));
|
|
134
|
+
return toACVMField(0);
|
|
135
|
+
}
|
|
136
|
+
async notifyNullifiedNote([innerNullifier], [innerNoteHash]) {
|
|
137
|
+
await this.typedOracle.notifyNullifiedNote(fromACVMField(innerNullifier), fromACVMField(innerNoteHash));
|
|
138
|
+
return toACVMField(0);
|
|
139
|
+
}
|
|
140
|
+
async checkNullifierExists([innerNullifier]) {
|
|
141
|
+
const exists = await this.typedOracle.checkNullifierExists(fromACVMField(innerNullifier));
|
|
142
|
+
return toACVMField(exists);
|
|
143
|
+
}
|
|
144
|
+
async getL1ToL2Message([msgKey]) {
|
|
145
|
+
const message = await this.typedOracle.getL1ToL2Message(fromACVMField(msgKey));
|
|
146
|
+
return message.toFields().map(toACVMField);
|
|
147
|
+
}
|
|
148
|
+
async getPortalContractAddress([aztecAddress]) {
|
|
149
|
+
const contractAddress = AztecAddress.fromString(aztecAddress);
|
|
150
|
+
const portalContactAddress = await this.typedOracle.getPortalContractAddress(contractAddress);
|
|
151
|
+
return toACVMField(portalContactAddress);
|
|
152
|
+
}
|
|
153
|
+
async storageRead([startStorageSlot], [numberOfElements]) {
|
|
154
|
+
const values = await this.typedOracle.storageRead(fromACVMField(startStorageSlot), +numberOfElements);
|
|
155
|
+
return values.map(toACVMField);
|
|
156
|
+
}
|
|
157
|
+
async storageWrite([startStorageSlot], values) {
|
|
158
|
+
const newValues = await this.typedOracle.storageWrite(fromACVMField(startStorageSlot), values.map(fromACVMField));
|
|
159
|
+
return newValues.map(toACVMField);
|
|
160
|
+
}
|
|
161
|
+
emitEncryptedLog([contractAddress], [storageSlot], [publicKeyX], [publicKeyY], log) {
|
|
162
|
+
const publicKey = new Point(fromACVMField(publicKeyX), fromACVMField(publicKeyY));
|
|
163
|
+
this.typedOracle.emitEncryptedLog(AztecAddress.fromString(contractAddress), Fr.fromString(storageSlot), publicKey, log.map(fromACVMField));
|
|
164
|
+
return toACVMField(0);
|
|
165
|
+
}
|
|
166
|
+
emitUnencryptedLog([contractAddress], [eventSelector], message) {
|
|
167
|
+
const logPayload = Buffer.concat(message.map(fromACVMField).map(f => f.toBuffer()));
|
|
168
|
+
const log = new UnencryptedL2Log(AztecAddress.fromString(contractAddress), EventSelector.fromField(fromACVMField(eventSelector)), logPayload);
|
|
169
|
+
this.typedOracle.emitUnencryptedLog(log);
|
|
170
|
+
return toACVMField(0);
|
|
171
|
+
}
|
|
172
|
+
debugLog(...args) {
|
|
173
|
+
this.log(oracleDebugCallToFormattedStr(args));
|
|
174
|
+
return toACVMField(0);
|
|
175
|
+
}
|
|
176
|
+
debugLogWithPrefix(arg0, ...args) {
|
|
177
|
+
this.log(`${acvmFieldMessageToString(arg0)}: ${oracleDebugCallToFormattedStr(args)}`);
|
|
178
|
+
return toACVMField(0);
|
|
179
|
+
}
|
|
180
|
+
async callPrivateFunction([contractAddress], [functionSelector], [argsHash], [sideffectCounter]) {
|
|
181
|
+
const callStackItem = await this.typedOracle.callPrivateFunction(AztecAddress.fromField(fromACVMField(contractAddress)), FunctionSelector.fromField(fromACVMField(functionSelector)), fromACVMField(argsHash), frToNumber(fromACVMField(sideffectCounter)));
|
|
182
|
+
return callStackItem.toFields().map(toACVMField);
|
|
183
|
+
}
|
|
184
|
+
async callPublicFunction([contractAddress], [functionSelector], [argsHash]) {
|
|
185
|
+
const returnValues = await this.typedOracle.callPublicFunction(AztecAddress.fromField(fromACVMField(contractAddress)), FunctionSelector.fromField(fromACVMField(functionSelector)), fromACVMField(argsHash));
|
|
186
|
+
return padArrayEnd(returnValues, Fr.ZERO, RETURN_VALUES_LENGTH).map(toACVMField);
|
|
187
|
+
}
|
|
188
|
+
async enqueuePublicFunctionCall([contractAddress], [functionSelector], [argsHash], [sideffectCounter]) {
|
|
189
|
+
const enqueuedRequest = await this.typedOracle.enqueuePublicFunctionCall(AztecAddress.fromString(contractAddress), FunctionSelector.fromField(fromACVMField(functionSelector)), fromACVMField(argsHash), frToNumber(fromACVMField(sideffectCounter)));
|
|
190
|
+
return toAcvmEnqueuePublicFunctionResult(enqueuedRequest);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JhY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fjdm0vb3JhY2xlL29yYWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHckY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQUNqQixZQUFvQixXQUF3QixFQUFVLE1BQU0saUJBQWlCLENBQUMsd0JBQXdCLENBQUM7UUFBbkYsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUE4QztJQUFHLENBQUM7SUFFM0csY0FBYztRQUNaLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDOUMsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFh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
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { CompleteAddress, L1ToL2Message, MerkleTreeId, Note, NoteStatus, NullifierMembershipWitness, PublicDataWitness, PublicKey, SiblingPath, UnencryptedL2Log } from '@aztec/circuit-types';
|
|
2
|
+
import { GrumpkinPrivateKey, Header, L1_TO_L2_MSG_TREE_HEIGHT, PrivateCallStackItem, PublicCallRequest } from '@aztec/circuits.js';
|
|
3
|
+
import { FunctionSelector } from '@aztec/foundation/abi';
|
|
4
|
+
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
5
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
7
|
+
/**
|
|
8
|
+
* A pair of public key and secret key.
|
|
9
|
+
*/
|
|
10
|
+
export interface KeyPair {
|
|
11
|
+
/**
|
|
12
|
+
* Public key.
|
|
13
|
+
*/
|
|
14
|
+
publicKey: PublicKey;
|
|
15
|
+
/**
|
|
16
|
+
* Secret Key.
|
|
17
|
+
*/
|
|
18
|
+
secretKey: GrumpkinPrivateKey;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Information about a note needed during execution.
|
|
22
|
+
*/
|
|
23
|
+
export interface NoteData {
|
|
24
|
+
/** The note. */
|
|
25
|
+
note: Note;
|
|
26
|
+
/** The contract address of the note. */
|
|
27
|
+
contractAddress: AztecAddress;
|
|
28
|
+
/** The storage slot of the note. */
|
|
29
|
+
storageSlot: Fr;
|
|
30
|
+
/** The nonce of the note. */
|
|
31
|
+
nonce: Fr;
|
|
32
|
+
/** The inner note hash of the note. */
|
|
33
|
+
innerNoteHash: Fr;
|
|
34
|
+
/** The corresponding nullifier of the note. Undefined for pending notes. */
|
|
35
|
+
siloedNullifier?: Fr;
|
|
36
|
+
/** The note's leaf index in the note hash tree. Undefined for pending notes. */
|
|
37
|
+
index?: bigint;
|
|
38
|
+
}
|
|
39
|
+
export declare class MessageLoadOracleInputs<N extends number> {
|
|
40
|
+
/** The message. */
|
|
41
|
+
message: L1ToL2Message;
|
|
42
|
+
/** The index of the message commitment in the merkle tree. */
|
|
43
|
+
index: bigint;
|
|
44
|
+
/** The path in the merkle tree to the message. */
|
|
45
|
+
siblingPath: SiblingPath<N>;
|
|
46
|
+
constructor(
|
|
47
|
+
/** The message. */
|
|
48
|
+
message: L1ToL2Message,
|
|
49
|
+
/** The index of the message commitment in the merkle tree. */
|
|
50
|
+
index: bigint,
|
|
51
|
+
/** The path in the merkle tree to the message. */
|
|
52
|
+
siblingPath: SiblingPath<N>);
|
|
53
|
+
toFields(): Fr[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Oracle with typed parameters and typed return values.
|
|
57
|
+
* Methods that require read and/or write will have to be implemented based on the context (public, private, or view)
|
|
58
|
+
* and are unavailable by default.
|
|
59
|
+
*/
|
|
60
|
+
export declare abstract class TypedOracle {
|
|
61
|
+
getRandomField(): Fr;
|
|
62
|
+
packArguments(_args: Fr[]): Promise<Fr>;
|
|
63
|
+
getNullifierKeyPair(_accountAddress: AztecAddress): Promise<KeyPair>;
|
|
64
|
+
getPublicKeyAndPartialAddress(_address: AztecAddress): Promise<Fr[] | undefined>;
|
|
65
|
+
getMembershipWitness(_blockNumber: number, _treeId: MerkleTreeId, _leafValue: Fr): Promise<Fr[] | undefined>;
|
|
66
|
+
getSiblingPath(_blockNumber: number, _treeId: MerkleTreeId, _leafIndex: Fr): Promise<Fr[]>;
|
|
67
|
+
getNullifierMembershipWitness(_blockNumber: number, _nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
68
|
+
getPublicDataTreeWitness(_blockNumber: number, _leafSlot: Fr): Promise<PublicDataWitness | undefined>;
|
|
69
|
+
getLowNullifierMembershipWitness(_blockNumber: number, _nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
70
|
+
getHeader(_blockNumber: number): Promise<Header | undefined>;
|
|
71
|
+
getCompleteAddress(_address: AztecAddress): Promise<CompleteAddress>;
|
|
72
|
+
getAuthWitness(_messageHash: Fr): Promise<Fr[] | undefined>;
|
|
73
|
+
popCapsule(): Promise<Fr[]>;
|
|
74
|
+
getNotes(_storageSlot: Fr, _numSelects: number, _selectBy: number[], _selectValues: Fr[], _selectComparators: number[], _sortBy: number[], _sortOrder: number[], _limit: number, _offset: number, _status: NoteStatus): Promise<NoteData[]>;
|
|
75
|
+
notifyCreatedNote(_storageSlot: Fr, _note: Fr[], _innerNoteHash: Fr): void;
|
|
76
|
+
notifyNullifiedNote(_innerNullifier: Fr, _innerNoteHash: Fr): Promise<void>;
|
|
77
|
+
checkNullifierExists(_innerNullifier: Fr): Promise<boolean>;
|
|
78
|
+
getL1ToL2Message(_msgKey: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
79
|
+
getPortalContractAddress(_contractAddress: AztecAddress): Promise<EthAddress>;
|
|
80
|
+
storageRead(_startStorageSlot: Fr, _numberOfElements: number): Promise<Fr[]>;
|
|
81
|
+
storageWrite(_startStorageSlot: Fr, _values: Fr[]): Promise<Fr[]>;
|
|
82
|
+
emitEncryptedLog(_contractAddress: AztecAddress, _storageSlot: Fr, _publicKey: PublicKey, _log: Fr[]): void;
|
|
83
|
+
emitUnencryptedLog(_log: UnencryptedL2Log): void;
|
|
84
|
+
callPrivateFunction(_targetContractAddress: AztecAddress, _functionSelector: FunctionSelector, _argsHash: Fr, _sideffectCounter: number): Promise<PrivateCallStackItem>;
|
|
85
|
+
callPublicFunction(_targetContractAddress: AztecAddress, _functionSelector: FunctionSelector, _argsHash: Fr): Promise<Fr[]>;
|
|
86
|
+
enqueuePublicFunctionCall(_targetContractAddress: AztecAddress, _functionSelector: FunctionSelector, _argsHash: Fr, _sideffectCounter: number): Promise<PublicCallRequest>;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=typed_oracle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed_oracle.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/typed_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
export class MessageLoadOracleInputs {
|
|
3
|
+
constructor(
|
|
4
|
+
/** The message. */
|
|
5
|
+
message,
|
|
6
|
+
/** The index of the message commitment in the merkle tree. */
|
|
7
|
+
index,
|
|
8
|
+
/** The path in the merkle tree to the message. */
|
|
9
|
+
siblingPath) {
|
|
10
|
+
this.message = message;
|
|
11
|
+
this.index = index;
|
|
12
|
+
this.siblingPath = siblingPath;
|
|
13
|
+
}
|
|
14
|
+
toFields() {
|
|
15
|
+
return [...this.message.toFields(), new Fr(this.index), ...this.siblingPath.toFields()];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Oracle with typed parameters and typed return values.
|
|
20
|
+
* Methods that require read and/or write will have to be implemented based on the context (public, private, or view)
|
|
21
|
+
* and are unavailable by default.
|
|
22
|
+
*/
|
|
23
|
+
export class TypedOracle {
|
|
24
|
+
getRandomField() {
|
|
25
|
+
return Fr.random();
|
|
26
|
+
}
|
|
27
|
+
packArguments(_args) {
|
|
28
|
+
throw new Error('Not available.');
|
|
29
|
+
}
|
|
30
|
+
getNullifierKeyPair(_accountAddress) {
|
|
31
|
+
throw new Error('Not available.');
|
|
32
|
+
}
|
|
33
|
+
getPublicKeyAndPartialAddress(_address) {
|
|
34
|
+
throw new Error('Not available.');
|
|
35
|
+
}
|
|
36
|
+
getMembershipWitness(_blockNumber, _treeId, _leafValue) {
|
|
37
|
+
throw new Error('Not available.');
|
|
38
|
+
}
|
|
39
|
+
getSiblingPath(_blockNumber, _treeId, _leafIndex) {
|
|
40
|
+
throw new Error('Not available.');
|
|
41
|
+
}
|
|
42
|
+
getNullifierMembershipWitness(_blockNumber, _nullifier) {
|
|
43
|
+
throw new Error('Not available.');
|
|
44
|
+
}
|
|
45
|
+
getPublicDataTreeWitness(_blockNumber, _leafSlot) {
|
|
46
|
+
throw new Error('Not available.');
|
|
47
|
+
}
|
|
48
|
+
getLowNullifierMembershipWitness(_blockNumber, _nullifier) {
|
|
49
|
+
throw new Error('Not available.');
|
|
50
|
+
}
|
|
51
|
+
getHeader(_blockNumber) {
|
|
52
|
+
throw new Error('Not available.');
|
|
53
|
+
}
|
|
54
|
+
getCompleteAddress(_address) {
|
|
55
|
+
throw new Error('Not available.');
|
|
56
|
+
}
|
|
57
|
+
getAuthWitness(_messageHash) {
|
|
58
|
+
throw new Error('Not available.');
|
|
59
|
+
}
|
|
60
|
+
popCapsule() {
|
|
61
|
+
throw new Error('Not available.');
|
|
62
|
+
}
|
|
63
|
+
getNotes(_storageSlot, _numSelects, _selectBy, _selectValues, _selectComparators, _sortBy, _sortOrder, _limit, _offset, _status) {
|
|
64
|
+
throw new Error('Not available.');
|
|
65
|
+
}
|
|
66
|
+
notifyCreatedNote(_storageSlot, _note, _innerNoteHash) {
|
|
67
|
+
throw new Error('Not available.');
|
|
68
|
+
}
|
|
69
|
+
notifyNullifiedNote(_innerNullifier, _innerNoteHash) {
|
|
70
|
+
throw new Error('Not available.');
|
|
71
|
+
}
|
|
72
|
+
checkNullifierExists(_innerNullifier) {
|
|
73
|
+
throw new Error('Not available.');
|
|
74
|
+
}
|
|
75
|
+
getL1ToL2Message(_msgKey) {
|
|
76
|
+
throw new Error('Not available.');
|
|
77
|
+
}
|
|
78
|
+
getPortalContractAddress(_contractAddress) {
|
|
79
|
+
throw new Error('Not available.');
|
|
80
|
+
}
|
|
81
|
+
storageRead(_startStorageSlot, _numberOfElements) {
|
|
82
|
+
throw new Error('Not available.');
|
|
83
|
+
}
|
|
84
|
+
storageWrite(_startStorageSlot, _values) {
|
|
85
|
+
throw new Error('Not available.');
|
|
86
|
+
}
|
|
87
|
+
emitEncryptedLog(_contractAddress, _storageSlot, _publicKey, _log) {
|
|
88
|
+
throw new Error('Not available.');
|
|
89
|
+
}
|
|
90
|
+
emitUnencryptedLog(_log) {
|
|
91
|
+
throw new Error('Not available.');
|
|
92
|
+
}
|
|
93
|
+
callPrivateFunction(_targetContractAddress, _functionSelector, _argsHash, _sideffectCounter) {
|
|
94
|
+
throw new Error('Not available.');
|
|
95
|
+
}
|
|
96
|
+
callPublicFunction(_targetContractAddress, _functionSelector, _argsHash) {
|
|
97
|
+
throw new Error('Not available.');
|
|
98
|
+
}
|
|
99
|
+
enqueuePublicFunctionCall(_targetContractAddress, _functionSelector, _argsHash, _sideffectCounter) {
|
|
100
|
+
throw new Error('Not available.');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRfb3JhY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fjdm0vb3JhY2xlL3R5cGVkX29yYWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBb0M5QyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDO0lBQ0UsbUJBQW1CO0lBQ1osT0FBc0I7SUFDN0IsOERBQThEO0lBQ3ZELEtBQWE7SUFDcEIsa0RBQWtEO0lBQzNDLFdBQTJCO1FBSjNCLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFFdEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUViLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtJQUNqQyxDQUFDO0lBRUosUUFBUTtRQUNOLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFDL0IsY0FBYztRQUNaLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLGVBQTZCO1FBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsNkJBQTZCLENBQUMsUUFBc0I7UUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxZQUFvQixFQUFFLE9BQXFCLEVBQUUsVUFBYztRQUM5RSxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxZQUFvQixFQUFFLE9BQXFCLEVBQUUsVUFBYztRQUN4RSxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELDZCQUE2QixDQUFDLFlBQW9CLEVBQUUsVUFBYztRQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELHdCQUF3QixDQUFDLFlBQW9CLEVBQUUsU0FBYTtRQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdDQUFnQyxDQUM5QixZQUFvQixFQUNwQixVQUFjO1FBRWQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxTQUFTLENBQUMsWUFBb0I7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxRQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxZQUFnQjtRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FDTixZQUFnQixFQUNoQixXQUFtQixFQUNuQixTQUFtQixFQUNuQixhQUFtQixFQUNuQixrQkFBNEIsRUFDNUIsT0FBaUIsRUFDakIsVUFBb0IsRUFDcEIsTUFBYyxFQUNkLE9BQWUsRUFDZixPQUFtQjtRQUVuQixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFlBQWdCLEVBQUUsS0FBVyxFQUFFLGNBQWtCO1FBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsZUFBbUIsRUFBRSxjQUFrQjtRQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELG9CQUFvQixDQUFDLGVBQW1CO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBVztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELHdCQUF3QixDQUFDLGdCQUE4QjtRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxpQkFBcUIsRUFBRSxpQkFBeUI7UUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZLENBQUMsaUJBQXFCLEVBQUUsT0FBYTtRQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLGdCQUE4QixFQUFFLFlBQWdCLEVBQUUsVUFBcUIsRUFBRSxJQUFVO1FBQ2xHLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBc0I7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxtQkFBbUIsQ0FDakIsc0JBQW9DLEVBQ3BDLGlCQUFtQyxFQUNuQyxTQUFhLEVBQ2IsaUJBQXlCO1FBRXpCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLENBQ2hCLHNCQUFvQyxFQUNwQyxpQkFBbUMsRUFDbkMsU0FBYTtRQUViLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQseUJBQXlCLENBQ3ZCLHNCQUFvQyxFQUNwQyxpQkFBbUMsRUFDbkMsU0FBYSxFQUNiLGlCQUF5QjtRQUV6QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { PublicCallRequest } from '@aztec/circuits.js';
|
|
3
|
+
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
6
|
+
import { ACVMField } from './acvm_types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Converts a value to an ACVM field.
|
|
9
|
+
* @param value - The value to convert.
|
|
10
|
+
* @returns The ACVM field.
|
|
11
|
+
*/
|
|
12
|
+
export declare function toACVMField(value: AztecAddress | EthAddress | Fr | Buffer | boolean | number | bigint | ACVMField): ACVMField;
|
|
13
|
+
/**
|
|
14
|
+
* Converts a public call stack item with the request for executing a public function to
|
|
15
|
+
* a set of ACVM fields accepted by the enqueue_public_function_call_oracle Aztec.nr function.
|
|
16
|
+
* Note that only the fields related to the request are serialized: those related to the result
|
|
17
|
+
* are empty since this is just an execution request, so we don't send them to the circuit.
|
|
18
|
+
* @param item - The public call stack item to serialize to be passed onto Noir.
|
|
19
|
+
* @returns The fields expected by the enqueue_public_function_call_oracle Aztec.nr function.
|
|
20
|
+
* TODO(#4380): Nuke this and replace it with PublicCallRequest.toFields()
|
|
21
|
+
*/
|
|
22
|
+
export declare function toAcvmEnqueuePublicFunctionResult(item: PublicCallRequest): ACVMField[];
|
|
23
|
+
/**
|
|
24
|
+
* Inserts a list of ACVM fields to a witness.
|
|
25
|
+
* @param witnessStartIndex - The index where to start inserting the fields.
|
|
26
|
+
* @param fields - The fields to insert.
|
|
27
|
+
* @returns The witness.
|
|
28
|
+
*/
|
|
29
|
+
export declare function toACVMWitness(witnessStartIndex: number, fields: Parameters<typeof toACVMField>[0][]): Map<number, string>;
|
|
30
|
+
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/acvm/serialize.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgB5C;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GACrF,SAAS,CAYX;AAKD;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,CAOtF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,uBAKnG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
/**
|
|
3
|
+
* Adapts the buffer to the field size.
|
|
4
|
+
* @param originalBuf - The buffer to adapt.
|
|
5
|
+
* @returns The adapted buffer.
|
|
6
|
+
*/
|
|
7
|
+
function adaptBufferSize(originalBuf) {
|
|
8
|
+
const buffer = Buffer.alloc(Fr.SIZE_IN_BYTES);
|
|
9
|
+
if (originalBuf.length > buffer.length) {
|
|
10
|
+
throw new Error('Buffer does not fit in field');
|
|
11
|
+
}
|
|
12
|
+
originalBuf.copy(buffer, buffer.length - originalBuf.length);
|
|
13
|
+
return buffer;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Converts a value to an ACVM field.
|
|
17
|
+
* @param value - The value to convert.
|
|
18
|
+
* @returns The ACVM field.
|
|
19
|
+
*/
|
|
20
|
+
export function toACVMField(value) {
|
|
21
|
+
let buffer;
|
|
22
|
+
if (Buffer.isBuffer(value)) {
|
|
23
|
+
buffer = value;
|
|
24
|
+
}
|
|
25
|
+
else if (typeof value === 'boolean' || typeof value === 'number' || typeof value === 'bigint') {
|
|
26
|
+
buffer = new Fr(value).toBuffer();
|
|
27
|
+
}
|
|
28
|
+
else if (typeof value === 'string') {
|
|
29
|
+
buffer = Fr.fromString(value).toBuffer();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
buffer = value.toBuffer();
|
|
33
|
+
}
|
|
34
|
+
return `0x${adaptBufferSize(buffer).toString('hex')}`;
|
|
35
|
+
}
|
|
36
|
+
// Utilities to write TS classes to ACVM Field arrays
|
|
37
|
+
// In the order that the ACVM expects them
|
|
38
|
+
/**
|
|
39
|
+
* Converts a public call stack item with the request for executing a public function to
|
|
40
|
+
* a set of ACVM fields accepted by the enqueue_public_function_call_oracle Aztec.nr function.
|
|
41
|
+
* Note that only the fields related to the request are serialized: those related to the result
|
|
42
|
+
* are empty since this is just an execution request, so we don't send them to the circuit.
|
|
43
|
+
* @param item - The public call stack item to serialize to be passed onto Noir.
|
|
44
|
+
* @returns The fields expected by the enqueue_public_function_call_oracle Aztec.nr function.
|
|
45
|
+
* TODO(#4380): Nuke this and replace it with PublicCallRequest.toFields()
|
|
46
|
+
*/
|
|
47
|
+
export function toAcvmEnqueuePublicFunctionResult(item) {
|
|
48
|
+
return [
|
|
49
|
+
item.contractAddress.toField(),
|
|
50
|
+
...item.functionData.toFields(),
|
|
51
|
+
...item.callContext.toFields(),
|
|
52
|
+
item.getArgsHash(),
|
|
53
|
+
].map(toACVMField);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Inserts a list of ACVM fields to a witness.
|
|
57
|
+
* @param witnessStartIndex - The index where to start inserting the fields.
|
|
58
|
+
* @param fields - The fields to insert.
|
|
59
|
+
* @returns The witness.
|
|
60
|
+
*/
|
|
61
|
+
export function toACVMWitness(witnessStartIndex, fields) {
|
|
62
|
+
return fields.reduce((witness, field, index) => {
|
|
63
|
+
witness.set(index + witnessStartIndex, toACVMField(field));
|
|
64
|
+
return witness;
|
|
65
|
+
}, new Map());
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fjdm0vc2VyaWFsaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk5Qzs7OztHQUlHO0FBQ0gsU0FBUyxlQUFlLENBQUMsV0FBbUI7SUFDMUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsS0FBc0Y7SUFFdEYsSUFBSSxNQUFNLENBQUM7SUFDWCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0QsT0FBTyxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBRUQscURBQXFEO0FBQ3JELDBDQUEwQztBQUUxQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxJQUF1QjtJQUN2RSxPQUFPO1FBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUU7UUFDOUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtRQUMvQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1FBQzlCLElBQUksQ0FBQyxXQUFXLEVBQUU7S0FDbkIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxpQkFBeUIsRUFBRSxNQUEyQztJQUNsRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBcUIsQ0FBQyxDQUFDO0FBQ25DLENBQUMifQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AztecAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { AvmExecutionEnvironment } from './avm_execution_environment.js';
|
|
4
|
+
import { AvmMachineState } from './avm_machine_state.js';
|
|
5
|
+
import { AvmWorldStateJournal } from './journal/journal.js';
|
|
6
|
+
/**
|
|
7
|
+
* An execution context includes the information necessary to initiate AVM
|
|
8
|
+
* execution along with all state maintained by the AVM throughout execution.
|
|
9
|
+
*/
|
|
10
|
+
export declare class AvmContext {
|
|
11
|
+
worldState: AvmWorldStateJournal;
|
|
12
|
+
environment: AvmExecutionEnvironment;
|
|
13
|
+
machineState: AvmMachineState;
|
|
14
|
+
/**
|
|
15
|
+
* Create a new AVM context
|
|
16
|
+
* @param worldState - Manages mutable state during execution - (caching, fetching)
|
|
17
|
+
* @param environment - Contains constant variables provided by the kernel
|
|
18
|
+
* @param machineState - VM state that is modified on an instruction-by-instruction basis
|
|
19
|
+
* @returns new AvmContext instance
|
|
20
|
+
*/
|
|
21
|
+
constructor(worldState: AvmWorldStateJournal, environment: AvmExecutionEnvironment, machineState: AvmMachineState);
|
|
22
|
+
/**
|
|
23
|
+
* Prepare a new AVM context that will be ready for an external/nested call
|
|
24
|
+
* - Fork the world state journal
|
|
25
|
+
* - Derive a machine state from the current state
|
|
26
|
+
* - E.g., gas metering is preserved but pc is reset
|
|
27
|
+
* - Derive an execution environment from the caller/parent
|
|
28
|
+
* - Alter both address and storageAddress
|
|
29
|
+
*
|
|
30
|
+
* @param address - The contract instance to initialize a context for
|
|
31
|
+
* @param calldata - Data/arguments for nested call
|
|
32
|
+
* @returns new AvmContext instance
|
|
33
|
+
*/
|
|
34
|
+
createNestedContractCallContext(address: AztecAddress, calldata: Fr[]): AvmContext;
|
|
35
|
+
/**
|
|
36
|
+
* Prepare a new AVM context that will be ready for an external/nested static call
|
|
37
|
+
* - Fork the world state journal
|
|
38
|
+
* - Derive a machine state from the current state
|
|
39
|
+
* - E.g., gas metering is preserved but pc is reset
|
|
40
|
+
* - Derive an execution environment from the caller/parent
|
|
41
|
+
* - Alter both address and storageAddress
|
|
42
|
+
*
|
|
43
|
+
* @param address - The contract instance to initialize a context for
|
|
44
|
+
* @param calldata - Data/arguments for nested call
|
|
45
|
+
* @returns new AvmContext instance
|
|
46
|
+
*/
|
|
47
|
+
createNestedContractStaticCallContext(address: AztecAddress, calldata: Fr[]): AvmContext;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=avm_context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avm_context.d.ts","sourceRoot":"","sources":["../../src/avm/avm_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,UAAU;IASZ,UAAU,EAAE,oBAAoB;IAChC,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,eAAe;IAVtC;;;;;;OAMG;gBAEM,UAAU,EAAE,oBAAoB,EAChC,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,eAAe;IAGtC;;;;;;;;;;;OAWG;IACI,+BAA+B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,UAAU;IAOzF;;;;;;;;;;;OAWG;IACI,qCAAqC,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,UAAU;CAMhG"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AvmMachineState } from './avm_machine_state.js';
|
|
2
|
+
/**
|
|
3
|
+
* An execution context includes the information necessary to initiate AVM
|
|
4
|
+
* execution along with all state maintained by the AVM throughout execution.
|
|
5
|
+
*/
|
|
6
|
+
export class AvmContext {
|
|
7
|
+
/**
|
|
8
|
+
* Create a new AVM context
|
|
9
|
+
* @param worldState - Manages mutable state during execution - (caching, fetching)
|
|
10
|
+
* @param environment - Contains constant variables provided by the kernel
|
|
11
|
+
* @param machineState - VM state that is modified on an instruction-by-instruction basis
|
|
12
|
+
* @returns new AvmContext instance
|
|
13
|
+
*/
|
|
14
|
+
constructor(worldState, environment, machineState) {
|
|
15
|
+
this.worldState = worldState;
|
|
16
|
+
this.environment = environment;
|
|
17
|
+
this.machineState = machineState;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Prepare a new AVM context that will be ready for an external/nested call
|
|
21
|
+
* - Fork the world state journal
|
|
22
|
+
* - Derive a machine state from the current state
|
|
23
|
+
* - E.g., gas metering is preserved but pc is reset
|
|
24
|
+
* - Derive an execution environment from the caller/parent
|
|
25
|
+
* - Alter both address and storageAddress
|
|
26
|
+
*
|
|
27
|
+
* @param address - The contract instance to initialize a context for
|
|
28
|
+
* @param calldata - Data/arguments for nested call
|
|
29
|
+
* @returns new AvmContext instance
|
|
30
|
+
*/
|
|
31
|
+
createNestedContractCallContext(address, calldata) {
|
|
32
|
+
const newExecutionEnvironment = this.environment.deriveEnvironmentForNestedCall(address, calldata);
|
|
33
|
+
const forkedWorldState = this.worldState.fork();
|
|
34
|
+
const machineState = AvmMachineState.fromState(this.machineState);
|
|
35
|
+
return new AvmContext(forkedWorldState, newExecutionEnvironment, machineState);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Prepare a new AVM context that will be ready for an external/nested static call
|
|
39
|
+
* - Fork the world state journal
|
|
40
|
+
* - Derive a machine state from the current state
|
|
41
|
+
* - E.g., gas metering is preserved but pc is reset
|
|
42
|
+
* - Derive an execution environment from the caller/parent
|
|
43
|
+
* - Alter both address and storageAddress
|
|
44
|
+
*
|
|
45
|
+
* @param address - The contract instance to initialize a context for
|
|
46
|
+
* @param calldata - Data/arguments for nested call
|
|
47
|
+
* @returns new AvmContext instance
|
|
48
|
+
*/
|
|
49
|
+
createNestedContractStaticCallContext(address, calldata) {
|
|
50
|
+
const newExecutionEnvironment = this.environment.deriveEnvironmentForNestedStaticCall(address, calldata);
|
|
51
|
+
const forkedWorldState = this.worldState.fork();
|
|
52
|
+
const machineState = AvmMachineState.fromState(this.machineState);
|
|
53
|
+
return new AvmContext(forkedWorldState, newExecutionEnvironment, machineState);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd6RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7Ozs7O09BTUc7SUFDSCxZQUNTLFVBQWdDLEVBQ2hDLFdBQW9DLEVBQ3BDLFlBQTZCO1FBRjdCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7SUFDbkMsQ0FBQztJQUVKOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksK0JBQStCLENBQUMsT0FBcUIsRUFBRSxRQUFjO1FBQzFFLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkcsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0kscUNBQXFDLENBQUMsT0FBcUIsRUFBRSxRQUFjO1FBQ2hGLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekcsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIn0=
|