@aztec/simulator 0.32.1 → 0.33.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 +5 -3
- package/dest/acvm/oracle/index.d.ts +0 -1
- package/dest/acvm/oracle/index.d.ts.map +1 -1
- package/dest/acvm/oracle/index.js +1 -2
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +2 -3
- package/dest/avm/avm_context.d.ts +4 -14
- package/dest/avm/avm_context.d.ts.map +1 -1
- package/dest/avm/avm_context.js +10 -22
- package/dest/avm/avm_gas.d.ts +71 -0
- package/dest/avm/avm_gas.d.ts.map +1 -0
- package/dest/avm/avm_gas.js +161 -0
- package/dest/avm/avm_machine_state.d.ts +4 -2
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +8 -2
- package/dest/avm/avm_memory_types.d.ts +53 -1
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +95 -2
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +10 -8
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +44 -16
- package/dest/avm/opcodes/addressing_mode.d.ts +5 -3
- package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/avm/opcodes/addressing_mode.js +5 -1
- package/dest/avm/opcodes/arithmetic.d.ts +7 -3
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +27 -16
- package/dest/avm/opcodes/bitwise.d.ts +21 -20
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +43 -65
- package/dest/avm/opcodes/comparators.d.ts +12 -9
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +22 -32
- package/dest/avm/opcodes/context_getters.d.ts +20 -0
- package/dest/avm/opcodes/context_getters.d.ts.map +1 -0
- package/dest/avm/opcodes/context_getters.js +26 -0
- package/dest/avm/opcodes/contract.d.ts +14 -0
- package/dest/avm/opcodes/contract.d.ts.map +1 -0
- package/dest/avm/opcodes/contract.js +49 -0
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/avm/opcodes/control_flow.js +12 -2
- package/dest/avm/opcodes/environment_getters.d.ts +30 -33
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +34 -43
- package/dest/avm/opcodes/external_calls.d.ts +13 -19
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +50 -68
- package/dest/avm/opcodes/hashing.d.ts +2 -1
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +37 -18
- package/dest/avm/opcodes/index.d.ts +1 -0
- package/dest/avm/opcodes/index.d.ts.map +1 -1
- package/dest/avm/opcodes/index.js +2 -1
- package/dest/avm/opcodes/instruction.d.ts +10 -15
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +12 -22
- package/dest/avm/opcodes/instruction_impl.d.ts +14 -0
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +37 -16
- package/dest/avm/opcodes/memory.d.ts +4 -3
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +38 -19
- package/dest/avm/opcodes/storage.d.ts +5 -0
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +21 -7
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +7 -5
- package/dest/avm/serialization/instruction_serialization.d.ts +12 -11
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +13 -12
- package/dest/avm/temporary_executor_migration.d.ts +2 -0
- package/dest/avm/temporary_executor_migration.d.ts.map +1 -1
- package/dest/avm/temporary_executor_migration.js +14 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +6 -2
- package/dest/public/executor.d.ts +10 -2
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +59 -20
- package/dest/public/index.d.ts +1 -1
- package/dest/public/index.d.ts.map +1 -1
- package/package.json +15 -9
- package/src/acvm/oracle/index.ts +0 -1
- package/src/acvm/oracle/oracle.ts +1 -2
- package/src/avm/avm_context.ts +11 -33
- package/src/avm/{avm_gas_cost.ts → avm_gas.ts} +75 -21
- package/src/avm/avm_machine_state.ts +9 -2
- package/src/avm/avm_memory_types.ts +130 -2
- package/src/avm/avm_simulator.ts +9 -7
- package/src/avm/opcodes/accrued_substate.ts +57 -22
- package/src/avm/opcodes/addressing_mode.ts +8 -3
- package/src/avm/opcodes/arithmetic.ts +32 -22
- package/src/avm/opcodes/bitwise.ts +49 -83
- package/src/avm/opcodes/comparators.ts +28 -43
- package/src/avm/opcodes/context_getters.ts +32 -0
- package/src/avm/opcodes/contract.ts +58 -0
- package/src/avm/opcodes/control_flow.ts +23 -5
- package/src/avm/opcodes/environment_getters.ts +35 -44
- package/src/avm/opcodes/external_calls.ts +65 -84
- package/src/avm/opcodes/hashing.ts +45 -22
- package/src/avm/opcodes/index.ts +1 -0
- package/src/avm/opcodes/instruction.ts +14 -26
- package/src/avm/opcodes/instruction_impl.ts +45 -15
- package/src/avm/opcodes/memory.ts +48 -28
- package/src/avm/opcodes/storage.ts +26 -12
- package/src/avm/serialization/bytecode_serialization.ts +6 -3
- package/src/avm/serialization/instruction_serialization.ts +1 -0
- package/src/avm/temporary_executor_migration.ts +16 -2
- package/src/client/private_execution.ts +8 -2
- package/src/public/executor.ts +75 -22
- package/src/public/index.ts +2 -2
- package/dest/acvm/oracle/debug.d.ts +0 -19
- package/dest/acvm/oracle/debug.d.ts.map +0 -1
- package/dest/acvm/oracle/debug.js +0 -95
- package/dest/avm/avm_gas_cost.d.ts +0 -322
- package/dest/avm/avm_gas_cost.d.ts.map +0 -1
- package/dest/avm/avm_gas_cost.js +0 -118
- package/src/acvm/oracle/debug.ts +0 -109
|
@@ -33,6 +33,10 @@ export class Addressing {
|
|
|
33
33
|
}
|
|
34
34
|
return wire;
|
|
35
35
|
}
|
|
36
|
+
/** Returns how many operands use the given addressing mode. */
|
|
37
|
+
count(mode) {
|
|
38
|
+
return this.modePerOperand.filter(m => m === mode).length;
|
|
39
|
+
}
|
|
36
40
|
/**
|
|
37
41
|
* Resolves the offsets using the addressing mode.
|
|
38
42
|
* @param offsets The offsets to resolve.
|
|
@@ -59,4 +63,4 @@ export class Addressing {
|
|
|
59
63
|
return resolved;
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2luZ19tb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2FkZHJlc3NpbmdfbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUkxQyxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHVEQUFNLENBQUE7SUFDTiwyREFBUSxDQUFBO0lBQ1IsdUZBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxVQUFVO0lBQ3JCO0lBQ0UsbUhBQW1IO0lBQ2xHLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUVqRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFpQjtRQUN0Qyx5R0FBeUc7UUFDekcscUhBQXFIO1FBQ3JILE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFpQixDQUFDLENBQUMsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzVGLENBQUM7UUFDRCxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNO1FBQ1gseUdBQXlHO1FBQ3pHLHNIQUFzSDtRQUN0SCxJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsK0RBQStEO0lBQ3hELEtBQUssQ0FBQyxJQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQUMsT0FBaUIsRUFBRSxHQUEwQjtRQUMxRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDNUMsUUFBUSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLEtBQUssY0FBYyxDQUFDLFFBQVE7b0JBQzFCLDJHQUEyRztvQkFDM0csR0FBRyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDakQsTUFBTTtnQkFDUixLQUFLLGNBQWMsQ0FBQyxNQUFNO29CQUN4QixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO29CQUNyQixNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { type
|
|
3
|
-
import { type MemoryValue } from '../avm_memory_types.js';
|
|
2
|
+
import { type MemoryOperations, type MemoryValue } from '../avm_memory_types.js';
|
|
4
3
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
4
|
import { Instruction } from './instruction.js';
|
|
6
5
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
7
6
|
export declare abstract class ThreeOperandArithmeticInstruction extends ThreeOperandInstruction {
|
|
8
7
|
execute(context: AvmContext): Promise<void>;
|
|
9
|
-
protected gasCost(
|
|
8
|
+
protected gasCost(memoryOps: Partial<MemoryOperations & {
|
|
9
|
+
indirect: number;
|
|
10
|
+
}>): import("../avm_gas.js").Gas;
|
|
10
11
|
protected abstract compute(a: MemoryValue, b: MemoryValue): MemoryValue;
|
|
11
12
|
}
|
|
12
13
|
export declare class Add extends ThreeOperandArithmeticInstruction {
|
|
@@ -39,5 +40,8 @@ export declare class FieldDiv extends Instruction {
|
|
|
39
40
|
static readonly wireFormat: OperandType[];
|
|
40
41
|
constructor(indirect: number, aOffset: number, bOffset: number, dstOffset: number);
|
|
41
42
|
execute(context: AvmContext): Promise<void>;
|
|
43
|
+
protected gasCost(memoryOps: Partial<MemoryOperations & {
|
|
44
|
+
indirect: number;
|
|
45
|
+
}>): import("../avm_gas.js").Gas;
|
|
42
46
|
}
|
|
43
47
|
//# sourceMappingURL=arithmetic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/arithmetic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/arithmetic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAc,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAW,MAAM,wBAAwB,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,8BAAsB,iCAAkC,SAAQ,uBAAuB;IACxE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAM7E,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CACxE;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,QAAS,SAAQ,WAAW;IAa3B,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,SAAS;IAZzG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,eAAe;IAGrC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAMvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM;IAIpG,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAK9E"}
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getBaseGasCost, getGasCostForTypeTag, getMemoryGasCost, sumGas } from '../avm_gas.js';
|
|
2
2
|
import { TypeTag } from '../avm_memory_types.js';
|
|
3
3
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
4
|
-
import { Addressing, AddressingMode } from './addressing_mode.js';
|
|
5
4
|
import { Instruction } from './instruction.js';
|
|
6
5
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
7
6
|
export class ThreeOperandArithmeticInstruction extends ThreeOperandInstruction {
|
|
8
7
|
async execute(context) {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
8
|
+
const memoryOperations = { reads: 2, writes: 1, indirect: this.indirect };
|
|
9
|
+
const memory = context.machineState.memory.track(this.type);
|
|
10
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
11
|
+
memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
12
|
+
const a = memory.get(this.aOffset);
|
|
13
|
+
const b = memory.get(this.bOffset);
|
|
12
14
|
const dest = this.compute(a, b);
|
|
13
|
-
|
|
15
|
+
memory.set(this.dstOffset, dest);
|
|
16
|
+
memory.assert(memoryOperations);
|
|
14
17
|
context.machineState.incrementPc();
|
|
15
18
|
}
|
|
16
|
-
gasCost() {
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
return makeGasCost({ l2Gas });
|
|
19
|
+
gasCost(memoryOps) {
|
|
20
|
+
const baseGasCost = getGasCostForTypeTag(this.inTag, getBaseGasCost(this.opcode));
|
|
21
|
+
const memoryGasCost = getMemoryGasCost(memoryOps);
|
|
22
|
+
return sumGas(baseGasCost, memoryGasCost);
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
export class Add extends ThreeOperandArithmeticInstruction {
|
|
@@ -57,13 +59,22 @@ export class FieldDiv extends Instruction {
|
|
|
57
59
|
this.dstOffset = dstOffset;
|
|
58
60
|
}
|
|
59
61
|
async execute(context) {
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
62
|
+
const memoryOperations = { reads: 2, writes: 1, indirect: this.indirect };
|
|
63
|
+
const memory = context.machineState.memory.track(this.type);
|
|
64
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
65
|
+
memory.checkTags(TypeTag.FIELD, this.aOffset, this.bOffset);
|
|
66
|
+
const a = memory.getAs(this.aOffset);
|
|
67
|
+
const b = memory.getAs(this.bOffset);
|
|
63
68
|
const dest = a.fdiv(b);
|
|
64
|
-
|
|
69
|
+
memory.set(this.dstOffset, dest);
|
|
70
|
+
memory.assert(memoryOperations);
|
|
65
71
|
context.machineState.incrementPc();
|
|
66
72
|
}
|
|
73
|
+
gasCost(memoryOps) {
|
|
74
|
+
const baseGasCost = getGasCostForTypeTag(TypeTag.FIELD, getBaseGasCost(this.opcode));
|
|
75
|
+
const memoryGasCost = getMemoryGasCost(memoryOps);
|
|
76
|
+
return sumGas(baseGasCost, memoryGasCost);
|
|
77
|
+
}
|
|
67
78
|
}
|
|
68
79
|
FieldDiv.type = 'FDIV';
|
|
69
80
|
FieldDiv.opcode = Opcode.FDIV;
|
|
@@ -75,4 +86,4 @@ FieldDiv.wireFormat = [
|
|
|
75
86
|
OperandType.UINT32,
|
|
76
87
|
OperandType.UINT32,
|
|
77
88
|
];
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpdGhtZXRpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9hcml0aG1ldGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBdUQsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEUsTUFBTSxPQUFnQixpQ0FBa0MsU0FBUSx1QkFBdUI7SUFDOUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcs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
|
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
|
+
import { type IntegralValue } from '../avm_memory_types.js';
|
|
2
3
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
4
|
import { ThreeOperandInstruction, TwoOperandInstruction } from './instruction_impl.js';
|
|
4
|
-
|
|
5
|
+
declare abstract class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
6
|
+
execute(context: AvmContext): Promise<void>;
|
|
7
|
+
protected abstract compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
8
|
+
}
|
|
9
|
+
export declare class And extends ThreeOperandBitwiseInstruction {
|
|
5
10
|
static readonly type: string;
|
|
6
11
|
static readonly opcode = Opcode.AND;
|
|
7
|
-
|
|
8
|
-
execute(context: AvmContext): Promise<void>;
|
|
12
|
+
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
9
13
|
}
|
|
10
|
-
export declare class Or extends
|
|
14
|
+
export declare class Or extends ThreeOperandBitwiseInstruction {
|
|
11
15
|
static readonly type: string;
|
|
12
16
|
static readonly opcode = Opcode.OR;
|
|
13
|
-
|
|
14
|
-
execute(context: AvmContext): Promise<void>;
|
|
17
|
+
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
15
18
|
}
|
|
16
|
-
export declare class Xor extends
|
|
19
|
+
export declare class Xor extends ThreeOperandBitwiseInstruction {
|
|
17
20
|
static readonly type: string;
|
|
18
21
|
static readonly opcode = Opcode.XOR;
|
|
19
|
-
|
|
20
|
-
execute(context: AvmContext): Promise<void>;
|
|
22
|
+
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
21
23
|
}
|
|
22
|
-
export declare class
|
|
23
|
-
static readonly type: string;
|
|
24
|
-
static readonly opcode = Opcode.NOT;
|
|
25
|
-
constructor(indirect: number, inTag: number, aOffset: number, dstOffset: number);
|
|
26
|
-
execute(context: AvmContext): Promise<void>;
|
|
27
|
-
}
|
|
28
|
-
export declare class Shl extends ThreeOperandInstruction {
|
|
24
|
+
export declare class Shl extends ThreeOperandBitwiseInstruction {
|
|
29
25
|
static readonly type: string;
|
|
30
26
|
static readonly opcode = Opcode.SHL;
|
|
31
|
-
|
|
32
|
-
execute(context: AvmContext): Promise<void>;
|
|
27
|
+
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
33
28
|
}
|
|
34
|
-
export declare class Shr extends
|
|
29
|
+
export declare class Shr extends ThreeOperandBitwiseInstruction {
|
|
35
30
|
static readonly type: string;
|
|
36
31
|
static readonly opcode = Opcode.SHR;
|
|
37
|
-
|
|
32
|
+
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
33
|
+
}
|
|
34
|
+
export declare class Not extends TwoOperandInstruction {
|
|
35
|
+
static readonly type: string;
|
|
36
|
+
static readonly opcode = Opcode.NOT;
|
|
37
|
+
constructor(indirect: number, inTag: number, aOffset: number, dstOffset: number);
|
|
38
38
|
execute(context: AvmContext): Promise<void>;
|
|
39
39
|
}
|
|
40
|
+
export {};
|
|
40
41
|
//# sourceMappingURL=bitwise.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/bitwise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/bitwise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,uBAAe,8BAA+B,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAC9E;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAGrE;AAED,qBAAa,EAAG,SAAQ,8BAA8B;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa;IAEnC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAGrE;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAGrE;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAGrE;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAGrE;AAED,qBAAa,GAAI,SAAQ,qBAAqB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;gBAExB,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAIlE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAezD"}
|
|
@@ -1,92 +1,70 @@
|
|
|
1
1
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
2
2
|
import { ThreeOperandInstruction, TwoOperandInstruction } from './instruction_impl.js';
|
|
3
|
-
|
|
4
|
-
constructor(indirect, inTag, aOffset, bOffset, dstOffset) {
|
|
5
|
-
super(indirect, inTag, aOffset, bOffset, dstOffset);
|
|
6
|
-
}
|
|
3
|
+
class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
7
4
|
async execute(context) {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
const memoryOperations = { reads: 2, writes: 1, indirect: this.indirect };
|
|
6
|
+
const memory = context.machineState.memory.track(this.type);
|
|
7
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
8
|
+
memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
9
|
+
const a = memory.getAs(this.aOffset);
|
|
10
|
+
const b = memory.getAs(this.bOffset);
|
|
11
|
+
const res = this.compute(a, b);
|
|
12
|
+
memory.set(this.dstOffset, res);
|
|
13
|
+
memory.assert(memoryOperations);
|
|
13
14
|
context.machineState.incrementPc();
|
|
14
15
|
}
|
|
15
16
|
}
|
|
17
|
+
export class And extends ThreeOperandBitwiseInstruction {
|
|
18
|
+
compute(a, b) {
|
|
19
|
+
return a.and(b);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
16
22
|
And.type = 'AND';
|
|
17
23
|
And.opcode = Opcode.AND;
|
|
18
|
-
export class Or extends
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
async execute(context) {
|
|
23
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
24
|
-
const a = context.machineState.memory.getAs(this.aOffset);
|
|
25
|
-
const b = context.machineState.memory.getAs(this.bOffset);
|
|
26
|
-
const res = a.or(b);
|
|
27
|
-
context.machineState.memory.set(this.dstOffset, res);
|
|
28
|
-
context.machineState.incrementPc();
|
|
24
|
+
export class Or extends ThreeOperandBitwiseInstruction {
|
|
25
|
+
compute(a, b) {
|
|
26
|
+
return a.or(b);
|
|
29
27
|
}
|
|
30
28
|
}
|
|
31
29
|
Or.type = 'OR';
|
|
32
30
|
Or.opcode = Opcode.OR;
|
|
33
|
-
export class Xor extends
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
async execute(context) {
|
|
38
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
39
|
-
const a = context.machineState.memory.getAs(this.aOffset);
|
|
40
|
-
const b = context.machineState.memory.getAs(this.bOffset);
|
|
41
|
-
const res = a.xor(b);
|
|
42
|
-
context.machineState.memory.set(this.dstOffset, res);
|
|
43
|
-
context.machineState.incrementPc();
|
|
31
|
+
export class Xor extends ThreeOperandBitwiseInstruction {
|
|
32
|
+
compute(a, b) {
|
|
33
|
+
return a.xor(b);
|
|
44
34
|
}
|
|
45
35
|
}
|
|
46
36
|
Xor.type = 'XOR';
|
|
47
37
|
Xor.opcode = Opcode.XOR;
|
|
38
|
+
export class Shl extends ThreeOperandBitwiseInstruction {
|
|
39
|
+
compute(a, b) {
|
|
40
|
+
return a.shl(b);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
Shl.type = 'SHL';
|
|
44
|
+
Shl.opcode = Opcode.SHL;
|
|
45
|
+
export class Shr extends ThreeOperandBitwiseInstruction {
|
|
46
|
+
compute(a, b) {
|
|
47
|
+
return a.shr(b);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
Shr.type = 'SHR';
|
|
51
|
+
Shr.opcode = Opcode.SHR;
|
|
48
52
|
export class Not extends TwoOperandInstruction {
|
|
49
53
|
constructor(indirect, inTag, aOffset, dstOffset) {
|
|
50
54
|
super(indirect, inTag, aOffset, dstOffset);
|
|
51
55
|
}
|
|
52
56
|
async execute(context) {
|
|
53
|
-
|
|
54
|
-
const
|
|
57
|
+
const memoryOperations = { reads: 1, writes: 1, indirect: this.indirect };
|
|
58
|
+
const memory = context.machineState.memory.track(this.type);
|
|
59
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
60
|
+
memory.checkTags(this.inTag, this.aOffset);
|
|
61
|
+
const a = memory.getAs(this.aOffset);
|
|
55
62
|
const res = a.not();
|
|
56
|
-
|
|
63
|
+
memory.set(this.dstOffset, res);
|
|
64
|
+
memory.assert(memoryOperations);
|
|
57
65
|
context.machineState.incrementPc();
|
|
58
66
|
}
|
|
59
67
|
}
|
|
60
68
|
Not.type = 'NOT';
|
|
61
69
|
Not.opcode = Opcode.NOT;
|
|
62
|
-
|
|
63
|
-
constructor(indirect, inTag, aOffset, bOffset, dstOffset) {
|
|
64
|
-
super(indirect, inTag, aOffset, bOffset, dstOffset);
|
|
65
|
-
}
|
|
66
|
-
async execute(context) {
|
|
67
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
68
|
-
const a = context.machineState.memory.getAs(this.aOffset);
|
|
69
|
-
const b = context.machineState.memory.getAs(this.bOffset);
|
|
70
|
-
const res = a.shl(b);
|
|
71
|
-
context.machineState.memory.set(this.dstOffset, res);
|
|
72
|
-
context.machineState.incrementPc();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
Shl.type = 'SHL';
|
|
76
|
-
Shl.opcode = Opcode.SHL;
|
|
77
|
-
export class Shr extends ThreeOperandInstruction {
|
|
78
|
-
constructor(indirect, inTag, aOffset, bOffset, dstOffset) {
|
|
79
|
-
super(indirect, inTag, aOffset, bOffset, dstOffset);
|
|
80
|
-
}
|
|
81
|
-
async execute(context) {
|
|
82
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
83
|
-
const a = context.machineState.memory.getAs(this.aOffset);
|
|
84
|
-
const b = context.machineState.memory.getAs(this.bOffset);
|
|
85
|
-
const res = a.shr(b);
|
|
86
|
-
context.machineState.memory.set(this.dstOffset, res);
|
|
87
|
-
context.machineState.incrementPc();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
Shr.type = 'SHR';
|
|
91
|
-
Shr.opcode = Opcode.SHR;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0d2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9iaXR3aXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixNQUFNLE9BQU8sR0FBSSxTQUFRLHVCQUF1QjtJQUk5QyxZQUFZLFFBQWdCLEVBQUUsS0FBYSxFQUFFLE9BQWUsRUFBRSxPQUFlLEVBQUUsU0FBaUI7UUFDOUYsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUMvQixPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5RSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXJELE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQzs7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
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0d2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9iaXR3aXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixNQUFlLDhCQUErQixTQUFRLHVCQUF1QjtJQUNwRSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQW1CO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FB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
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
|
+
import { type MemoryValue } from '../avm_memory_types.js';
|
|
2
3
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
4
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
4
|
-
|
|
5
|
+
declare abstract class ComparatorInstruction extends ThreeOperandInstruction {
|
|
6
|
+
execute(context: AvmContext): Promise<void>;
|
|
7
|
+
protected abstract compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class Eq extends ComparatorInstruction {
|
|
5
10
|
static readonly type: string;
|
|
6
11
|
static readonly opcode = Opcode.EQ;
|
|
7
|
-
|
|
8
|
-
execute(context: AvmContext): Promise<void>;
|
|
12
|
+
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
9
13
|
}
|
|
10
|
-
export declare class Lt extends
|
|
14
|
+
export declare class Lt extends ComparatorInstruction {
|
|
11
15
|
static readonly type: string;
|
|
12
16
|
static readonly opcode = Opcode.LT;
|
|
13
|
-
|
|
14
|
-
execute(context: AvmContext): Promise<void>;
|
|
17
|
+
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
15
18
|
}
|
|
16
|
-
export declare class Lte extends
|
|
19
|
+
export declare class Lte extends ComparatorInstruction {
|
|
17
20
|
static readonly type: string;
|
|
18
21
|
static readonly opcode = Opcode.LTE;
|
|
19
|
-
|
|
20
|
-
execute(context: AvmContext): Promise<void>;
|
|
22
|
+
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
21
23
|
}
|
|
24
|
+
export {};
|
|
22
25
|
//# sourceMappingURL=comparators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comparators.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"comparators.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,uBAAe,qBAAsB,SAAQ,uBAAuB;IACrD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CACpE;AAED,qBAAa,EAAG,SAAQ,qBAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa;IAEnC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D;AAED,qBAAa,EAAG,SAAQ,qBAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa;IAEnC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D;AAED,qBAAa,GAAI,SAAQ,qBAAqB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;IAEpC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D"}
|
|
@@ -1,49 +1,39 @@
|
|
|
1
1
|
import { Uint8 } from '../avm_memory_types.js';
|
|
2
2
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
4
|
-
|
|
5
|
-
constructor(indirect, inTag, aOffset, bOffset, dstOffset) {
|
|
6
|
-
super(indirect, inTag, aOffset, bOffset, dstOffset);
|
|
7
|
-
}
|
|
4
|
+
class ComparatorInstruction extends ThreeOperandInstruction {
|
|
8
5
|
async execute(context) {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
const memoryOperations = { reads: 2, writes: 1, indirect: this.indirect };
|
|
7
|
+
const memory = context.machineState.memory.track(this.type);
|
|
8
|
+
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
9
|
+
memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
10
|
+
const a = memory.get(this.aOffset);
|
|
11
|
+
const b = memory.get(this.bOffset);
|
|
12
|
+
const dest = new Uint8(this.compare(a, b) ? 1 : 0);
|
|
13
|
+
memory.set(this.dstOffset, dest);
|
|
14
|
+
memory.assert(memoryOperations);
|
|
14
15
|
context.machineState.incrementPc();
|
|
15
16
|
}
|
|
16
17
|
}
|
|
18
|
+
export class Eq extends ComparatorInstruction {
|
|
19
|
+
compare(a, b) {
|
|
20
|
+
return a.equals(b);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
17
23
|
Eq.type = 'EQ';
|
|
18
24
|
Eq.opcode = Opcode.EQ;
|
|
19
|
-
export class Lt extends
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
async execute(context) {
|
|
24
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
25
|
-
const a = context.machineState.memory.get(this.aOffset);
|
|
26
|
-
const b = context.machineState.memory.get(this.bOffset);
|
|
27
|
-
const dest = new Uint8(a.lt(b) ? 1 : 0);
|
|
28
|
-
context.machineState.memory.set(this.dstOffset, dest);
|
|
29
|
-
context.machineState.incrementPc();
|
|
25
|
+
export class Lt extends ComparatorInstruction {
|
|
26
|
+
compare(a, b) {
|
|
27
|
+
return a.lt(b);
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
30
|
Lt.type = 'LT';
|
|
33
31
|
Lt.opcode = Opcode.LT;
|
|
34
|
-
export class Lte extends
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
async execute(context) {
|
|
39
|
-
context.machineState.memory.checkTags(this.inTag, this.aOffset, this.bOffset);
|
|
40
|
-
const a = context.machineState.memory.get(this.aOffset);
|
|
41
|
-
const b = context.machineState.memory.get(this.bOffset);
|
|
42
|
-
const dest = new Uint8(a.lt(b) || a.equals(b) ? 1 : 0);
|
|
43
|
-
context.machineState.memory.set(this.dstOffset, dest);
|
|
44
|
-
context.machineState.incrementPc();
|
|
32
|
+
export class Lte extends ComparatorInstruction {
|
|
33
|
+
compare(a, b) {
|
|
34
|
+
return a.lt(b) || a.equals(b);
|
|
45
35
|
}
|
|
46
36
|
}
|
|
47
37
|
Lte.type = 'LTE';
|
|
48
38
|
Lte.opcode = Opcode.LTE;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvY29tcGFyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFvQixLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEUsTUFBZSxxQkFBc0IsU0FBUSx1QkFBdUI7SUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FHRjtBQUVELE1BQU0sT0FBTyxFQUFHLFNBQVEscUJBQXFCO0lBSWpDLE9BQU8sQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUM5QyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQzs7QUFMZSxPQUFJLEdBQVcsSUFBSSxDQUFDO0FBQ3BCLFNBQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBT3JDLE1BQU0sT0FBTyxFQUFHLFNBQVEscUJBQXFCO0lBSWpDLE9BQU8sQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUM5QyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQzs7QUFMZSxPQUFJLEdBQVcsSUFBSSxDQUFDO0FBQ3BCLFNBQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBT3JDLE1BQU0sT0FBTyxHQUFJLFNBQVEscUJBQXFCO0lBSWxDLE9BQU8sQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUM5QyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDOztBQUxlLFFBQUksR0FBVyxLQUFLLENBQUM7QUFDckIsVUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AvmContext } from '../avm_context.js';
|
|
2
|
+
import { type MemoryValue } from '../avm_memory_types.js';
|
|
3
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
4
|
+
import { GetterInstruction } from './instruction_impl.js';
|
|
5
|
+
export declare class L2GasLeft extends GetterInstruction {
|
|
6
|
+
static type: string;
|
|
7
|
+
static readonly opcode: Opcode;
|
|
8
|
+
protected getValue(context: AvmContext): MemoryValue;
|
|
9
|
+
}
|
|
10
|
+
export declare class L1GasLeft extends GetterInstruction {
|
|
11
|
+
static type: string;
|
|
12
|
+
static readonly opcode: Opcode;
|
|
13
|
+
protected getValue(context: AvmContext): MemoryValue;
|
|
14
|
+
}
|
|
15
|
+
export declare class DAGasLeft extends GetterInstruction {
|
|
16
|
+
static type: string;
|
|
17
|
+
static readonly opcode: Opcode;
|
|
18
|
+
protected getValue(context: AvmContext): MemoryValue;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=context_getters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context_getters.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/context_getters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAS,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAGlD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC9C,MAAM,CAAC,IAAI,EAAE,MAAM,CAAe;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAoB;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW;CAGrD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Field } from '../avm_memory_types.js';
|
|
2
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
|
+
import { GetterInstruction } from './instruction_impl.js';
|
|
4
|
+
export class L2GasLeft extends GetterInstruction {
|
|
5
|
+
// TODO(@spalladino) Yellow paper specifies that the value should be an Uint32, not a Field.
|
|
6
|
+
getValue(context) {
|
|
7
|
+
return new Field(context.machineState.l2GasLeft);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
L2GasLeft.type = 'L2GASLEFT';
|
|
11
|
+
L2GasLeft.opcode = Opcode.L2GASLEFT;
|
|
12
|
+
export class L1GasLeft extends GetterInstruction {
|
|
13
|
+
getValue(context) {
|
|
14
|
+
return new Field(context.machineState.l1GasLeft);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
L1GasLeft.type = 'L1GASLEFT';
|
|
18
|
+
L1GasLeft.opcode = Opcode.L1GASLEFT;
|
|
19
|
+
export class DAGasLeft extends GetterInstruction {
|
|
20
|
+
getValue(context) {
|
|
21
|
+
return new Field(context.machineState.daGasLeft);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
DAGasLeft.type = 'DAGASLEFT';
|
|
25
|
+
DAGasLeft.opcode = Opcode.DAGASLEFT;
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dF9nZXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2NvbnRleHRfZ2V0dGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxNQUFNLE9BQU8sU0FBVSxTQUFRLGlCQUFpQjtJQUk5Qyw0RkFBNEY7SUFDbEYsUUFBUSxDQUFDLE9BQW1CO1FBQ3BDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOztBQU5NLGNBQUksR0FBVyxXQUFXLENBQUM7QUFDbEIsZ0JBQU0sR0FBVyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBUXBELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBSXBDLFFBQVEsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUFMTSxjQUFJLEdBQVcsV0FBVyxDQUFDO0FBQ2xCLGdCQUFNLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQU9wRCxNQUFNLE9BQU8sU0FBVSxTQUFRLGlCQUFpQjtJQUlwQyxRQUFRLENBQUMsT0FBbUI7UUFDcEMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBTE0sY0FBSSxHQUFXLFdBQVcsQ0FBQztBQUNsQixnQkFBTSxHQUFXLE1BQU0sQ0FBQyxTQUFTLENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AvmContext } from '../avm_context.js';
|
|
2
|
+
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
3
|
+
import { Instruction } from './instruction.js';
|
|
4
|
+
export declare class GetContractInstance extends Instruction {
|
|
5
|
+
private indirect;
|
|
6
|
+
private addressOffset;
|
|
7
|
+
private dstOffset;
|
|
8
|
+
static readonly type: string;
|
|
9
|
+
static readonly opcode: Opcode;
|
|
10
|
+
static readonly wireFormat: OperandType[];
|
|
11
|
+
constructor(indirect: number, addressOffset: number, dstOffset: number);
|
|
12
|
+
execute(context: AvmContext): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/contract.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,mBAAoB,SAAQ,WAAW;IAWtC,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,aAAa;IAAU,OAAO,CAAC,SAAS;IAVtF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAyB;IACrD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA8B;IAE5D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,aAAa,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM;IAIxF,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAkClD"}
|