From 3c5165457b92e8be63cffaeecd543d23d8a24725 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 17 Dec 2024 17:01:17 -0500 Subject: [PATCH] pushing progress in case my laptop spontaneously combusts (WIP) First problem of extra concat is solved, but now the problem is that the head offset is off by one byte (0x0024 with bool, 0x0025 with uint8). I think the problem is that the initial head offset is calculated before processing the boolean values, resulting in them not being accounted for in the offset. --- bool.log | 255 +++++++++++++++++ bool_2.log | 254 +++++++++++++++++ bun.lockb | Bin 280329 -> 280281 bytes src/lib/compiler.ts | 2 +- tests/common.ts | 127 ++++++++- tests/contracts/abi.algo.ts | 8 +- .../ABITestBoolInNestedTuple.approval.teal | 2 +- .../ABITestBoolInNestedTuple.arc32.json | 2 +- .../ABITestBoolInNestedTuple.arc56.json | 2 +- .../ABITestBooleanLastInObj.approval.teal | 2 +- .../ABITestBooleanLastInObj.arc32.json | 2 +- .../ABITestBooleanLastInObj.arc56.json | 2 +- ...tNestedArrayAlongsideBoolean.approval.teal | 1 - ...TestNestedArrayAlongsideBoolean.arc32.json | 2 +- ...TestNestedArrayAlongsideBoolean.arc56.json | 171 ++++++------ .../ABITestNestedArrayInBox.approval.teal | 1 - .../ABITestNestedArrayInBox.arc32.json | 2 +- .../ABITestNestedArrayInBox.arc56.json | 161 ++++++----- u64.log | 252 +++++++++++++++++ u8.log | 257 ++++++++++++++++++ u8_2.log | 251 +++++++++++++++++ 21 files changed, 1560 insertions(+), 196 deletions(-) create mode 100644 bool.log create mode 100644 bool_2.log create mode 100644 u64.log create mode 100644 u8.log create mode 100644 u8_2.log diff --git a/bool.log b/bool.log new file mode 100644 index 000000000..a42470c5d --- /dev/null +++ b/bool.log @@ -0,0 +1,255 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 0 1 | 1 | [] +bytecblock 0x | 5 | [] +txn ApplicationID | 8 | [2608] +! | 10 | [0] +pushint 6 | 11 | [0,6] +* | 13 | [0] +txn OnCompletion | 14 | [0,0] ++ | 16 | [0] +switch *call_NoOp *NOT_IMPL... | 17 | [] +pushbytes 0xc49cb9a7 // met... | 156 | [0xc49cb9a7] +txna ApplicationArgs 0 | 162 | [0xc49cb9a7,0xc49cb9a7] +match *abi_route_nestedArra... | 165 | [] +pushbytes 0x151f7c75 | 44 | [0x151f7c75] +callsub nestedArrayAlongsid... | 50 | [0x151f7c75] +proto 0 1 | 57 | [0x151f7c75] +bytec 0 // 0x | 60 | [0x151f7c75,0] +bytec 0 // initial head | 61 | [0x151f7c75,0,0] +bytec 0 // initial tail | 62 | [0x151f7c75,0,0,0] +pushbytes 0x001a // initial... | 63 | [0x151f7c75,0,0,0,0x001a] +pushbytes 0x000261626364656... | 67 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +callsub *process_dynamic_tu... | 79 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +proto 4 3 | 183 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +frame_dig -4 // tuple head | 186 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0] +frame_dig -2 // head offset | 188 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0,0x001a] +concat | 190 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0x001a] +frame_bury -4 // tuple head | 191 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768] +frame_dig -1 // element | 193 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768] +dup | 195 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 196 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 197 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,0x001a] +btoi | 199 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,26] ++ | 200 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,36] +itob | 201 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0000000000000024] +extract 6 2 | 202 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0024] +frame_bury -2 // head offset | 205 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 207 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768,0] +swap | 209 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0,0x00026162636465666768] +concat | 210 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 211 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768] +frame_dig -4 // tuple head | 213 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a] +frame_dig -3 // tuple tail | 215 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768] +frame_dig -2 // head offset | 217 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768,0x0024] +retsub | 219 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000001 | 82 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +callsub *process_static_tup... | 92 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +proto 4 3 | 170 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a,0x0000000000000001] +concat | 177 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000002 | 95 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +callsub *process_static_tup... | 105 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +proto 4 3 | 170 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001,0x0000000000000002] +concat | 177 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000003 | 108 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +callsub *process_static_tup... | 118 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +proto 4 3 | 170 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002,0x0000000000000003] +concat | 177 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +pushbytes 0x00 | 121 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +intc 0 // 0 | 124 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0] +dup | 125 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0,0] +setbit | 126 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] + +callsub *process_static_tup... | 127 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +proto 4 3 | 170 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003,0x00] +concat | 177 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +concat | 130 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x000261626364656667680024] +pop // pop head offset | 131 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300] +concat // concat head and tail | 132 | [0x151f7c75,0x001a00000000000000010000000000000002000000000000000300] +frame_bury 0 // o: T10 | 133 | [0x151f7c75] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: frame_bury above stack. at:72. Error during resource population simulation in transaction 0: transaction AJ655D3QX3FPHISBAYATEFN67MS2CTZY3IYXOYPNYASBUHL5OVJQ: logic eval error: frame_bury above stack. Details: app=2608, pc=133, opcodes=pop; concat; frame_bury 0 + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: frame_bury above stack. at:72. Error during resource population simulation in transaction 0: transaction AJ655D3QX3FPHISBAYATEFN67MS2CTZY3IYXOYPNYASBUHL5OVJQ: logic eval error: frame_bury above stack. Details: app=2608, pc=133, opcodes=pop; concat; frame_bury 0 + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [1040.50ms] + + 0 pass + 136 skip + 1 fail + 3 expect() calls +Ran 137 tests across 1 files. [2.52s] diff --git a/bool_2.log b/bool_2.log new file mode 100644 index 000000000..f866a4e1f --- /dev/null +++ b/bool_2.log @@ -0,0 +1,254 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 0 1 | 1 | [] +bytecblock 0x | 5 | [] +txn ApplicationID | 8 | [3359] +! | 10 | [0] +pushint 6 | 11 | [0,6] +* | 13 | [0] +txn OnCompletion | 14 | [0,0] ++ | 16 | [0] +switch *call_NoOp *NOT_IMPL... | 17 | [] +pushbytes 0xc49cb9a7 // met... | 157 | [0xc49cb9a7] +txna ApplicationArgs 0 | 163 | [0xc49cb9a7,0xc49cb9a7] +match *abi_route_nestedArra... | 166 | [] +pushbytes 0x151f7c75 | 44 | [0x151f7c75] +callsub nestedArrayAlongsid... | 50 | [0x151f7c75] +proto 0 1 | 57 | [0x151f7c75] +bytec 0 // 0x | 60 | [0x151f7c75,0] +bytec 0 // initial head | 61 | [0x151f7c75,0,0] +bytec 0 // initial tail | 62 | [0x151f7c75,0,0,0] +pushbytes 0x001a // initial... | 63 | [0x151f7c75,0,0,0,0x001a] +pushbytes 0x000261626364656... | 67 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +callsub *process_dynamic_tu... | 79 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +proto 4 3 | 184 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +frame_dig -4 // tuple head | 187 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0] +frame_dig -2 // head offset | 189 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0,0x001a] +concat | 191 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0x001a] +frame_bury -4 // tuple head | 192 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768] +frame_dig -1 // element | 194 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768] +dup | 196 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 197 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 198 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,0x001a] +btoi | 200 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,26] ++ | 201 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,36] +itob | 202 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0000000000000024] +extract 6 2 | 203 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0024] +frame_bury -2 // head offset | 206 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 208 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768,0] +swap | 210 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0,0x00026162636465666768] +concat | 211 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 212 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768] +frame_dig -4 // tuple head | 214 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a] +frame_dig -3 // tuple tail | 216 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768] +frame_dig -2 // head offset | 218 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768,0x0024] +retsub | 220 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000001 | 82 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +callsub *process_static_tup... | 92 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +proto 4 3 | 171 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a,0x0000000000000001] +concat | 178 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000002 | 95 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +callsub *process_static_tup... | 105 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +proto 4 3 | 171 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001,0x0000000000000002] +concat | 178 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000003 | 108 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +callsub *process_static_tup... | 118 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +proto 4 3 | 171 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002,0x0000000000000003] +concat | 178 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +pushbytes 0x00 | 121 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +intc 0 // 0 | 124 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0] +dup | 125 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0,0] +setbit | 126 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +callsub *process_static_tup... | 127 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +proto 4 3 | 171 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003,0x00] +concat | 178 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +pop // pop head offset | 130 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] +concat // concat head and tail | 131 | [0x151f7c75,0,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] +frame_bury 0 // o: T10 | 132 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] +intc 0 // 0 | 134 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768,0] +assert | 135 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=135. at:76. Error during resource population simulation in transaction 0: transaction ONARQYW7XPG7SRUNYRS55TD3Y53HJKP2Y44MJZ34NNZGZJTAHDWA: logic eval error: assert failed pc=135. Details: app=3359, pc=135, opcodes=frame_bury 0; intc_0 // 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=135. at:76. Error during resource population simulation in transaction 0: transaction ONARQYW7XPG7SRUNYRS55TD3Y53HJKP2Y44MJZ34NNZGZJTAHDWA: logic eval error: assert failed pc=135. Details: app=3359, pc=135, opcodes=frame_bury 0; intc_0 // 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [1022.31ms] + + 0 pass + 136 skip + 1 fail +Ran 137 tests across 1 files. [2.34s] diff --git a/bun.lockb b/bun.lockb index 4fec91c2c1f6c5ab93989eb70ad3a20e49575b6c..396111c49ab39a0b98a8336477ff3f3bc67c1550 100755 GIT binary patch delta 1758 zcmYMzZA^|)7zgnCxgXIJ;aTrPY7|zDhQ;t9UucU*guJB}N~mU)Mf4O>>76)P-ZCT2 zN+oxj4^55l=B<)V%U1cK+K^uGzv{m^d(O^ve%I-`&pG#9VX3vN#9F@H6qaktvzc0K zx<|b!TqV})Vb(NV(@fg`mZo0T>n@wp$!28cFq=V}f%#n8X_%~WK%Y-LqpS@mahA(x zfxVc@qB&yjO*==kV4fv)(9Ww^DUr?8Y|tyj((E+Z)oWS~%^8-!61l2TN?c%S9#Tn6 zU8Ko|!)TXiR+x>Jr%X>#;xbb%NR8sKa{hdpE8;P^0JH*{8{%wCglq#LK2c({8BHMwC!YEdi(VnyP3^VW(&}Vfbl&=ut4a>S|RXC2n!K zR35=y%5~kQEl2zU=azfALtBBk5hizXSM^GXdrSp@TzO43v_O~}?LJK2RuH-e?V$>8 zLWxIQz7i=PrfO-cV7|1+FbRXv{b^5Bu9T=}YBf>;Of|B^8dwmmiMAFtfiA6Cy+Mi4 zXH12Fs-_Z})`ZiiCz-;(6>un}`1aoisw=&;Fdq>-exw{lWdry-! zUbGJwC5%M(rgdVJ?`k*t23i+w53FnYh<2@;xEI*NbAO^m!Q|_e)`L;r$Ub!WdN*VI zf>9o_A6>p)X}uUFJb+%rFT0QH4#J9ITQPoxnKiqn9l}Jagk$LE!f3?dh~<<6w8Myd zu|e7WAWZ%}V$kK?%SOL*T`b}{+7K-cCjUdS(P3IV;z~OnEISx925)lueh-`F}b`0?#?Kdq6CI^neU>_qM$3z|+k8zxK0pAZF;}%F!dFx z!gf90Ar>61CfoG}r&|79c(=+nbbq6>Lx13I$&oJzt3OIzoND&`_z#Xh%yj?& delta 1805 zcmYL}S!`8R6o&WRmElGlZWvmERtSO^AWGDrAw0+nHbE;x1!r$j5EW>JXc6>M6a}%A z3c5iYBN!agfrgw16A3h$@JO6!1r3oXDleiY2snIy?{C~WEBoKyT6gVr*52p#wiGsQ zE^N6ix2m~zeQj=EZLDn1txSvCV@;tUhL8*YkA`%hJr14TXk3A3h`o=SUBLQcvlTGK z48Sfmdm`tule(0mWY;CQme{q{Oa<4NHJcS+wPx#5u9Fnc+BFo{8D3WJ|D4${^jS54vEFPr z`kdMGX|__lU{@usWp-^atAee7Y155n>Q|HFUQF*O#U@-lVH7siC)VQd%V3ktHk(}z z+kg$kTGOvevBj<{Kr=C&LYvuWbPcBQve_8)RsAG{t?A}2Qf#wpEO@2c^orS)utu|2 zVLV|Rwg9G9Z%=JXvBTlYe41XWU9Xu1yRO4E(XMu< zxE?myti$XE*m+E&GaV)cEiHe2Q$gGN9U<&ByOH%yvu+qqxCy(}Y#(4?Hm*DF&y{Ys z?{oilHfx#Uzc8DFo@@4{nbz~nzJl@euSZBQjySFkJ<_a~S@I67y39)98-y<4d~8}7 zhNET+V7>0eF|#{iN6o%9y9=hX%!=sa{6NK@g6T7=$M&FA=xN6-M1P<^ z8NuHSA4G3OtJ2@i9zt(pV-@-bOvNn1T3{;ljN=xgTh0D7dl(jBD*mk567)%u6q!rs z3?E_fli_)@M`3#7dZxe39z$zm74^5-QnWS}`^Rh?^~*tgbKCR}3nzLiWkAc&ar&!GEwPv+ku817g0afqEE?*@5L1 HRbT%LH{i)I diff --git a/src/lib/compiler.ts b/src/lib/compiler.ts index f226a9d2d..dcdb8c6ff 100644 --- a/src/lib/compiler.ts +++ b/src/lib/compiler.ts @@ -3515,7 +3515,7 @@ export default class Compiler { if (consecutiveBools.length > 0) { this.processBools(consecutiveBools); if (!isStatic) this.pushVoid(parentNode, 'callsub *process_static_tuple_element'); - if (consecutiveBools.length !== elements.length) this.pushVoid(parentNode, 'concat'); + if (isStatic && consecutiveBools.length !== elements.length) this.pushVoid(parentNode, 'concat'); } if (!isStatic) this.pushLines(parentNode, 'pop // pop head offset', 'concat // concat head and tail'); diff --git a/tests/common.ts b/tests/common.ts index 0a6a3ca90..362967da6 100644 --- a/tests/common.ts +++ b/tests/common.ts @@ -118,15 +118,15 @@ export async function compileAndCreate( await compiler.compile(); await compiler.algodCompile(); - expect(compiler.teal.approval.map((t) => t.teal).join('\n')).toEqual( - fs.readFileSync(`${artifactsPath}/${className}.approval.teal`, 'utf-8') - ); - expect(compiler.arc4Description()).toEqual( - JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc4.json`, 'utf-8')) - ); - expect(compiler.arc32Description()).toEqual( - JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc32.json`, 'utf-8')) - ); + // expect(compiler.teal.approval.map((t) => t.teal).join('\n')).toEqual( + // fs.readFileSync(`${artifactsPath}/${className}.approval.teal`, 'utf-8') + // ); + // expect(compiler.arc4Description()).toEqual( + // JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc4.json`, 'utf-8')) + // ); + // expect(compiler.arc32Description()).toEqual( + // JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc32.json`, 'utf-8')) + // ); const appClient = algokit.getAppClient( { @@ -179,6 +179,41 @@ export async function runMethod({ return (await appClient[callType](params)).return?.returnValue; } catch (e) { // eslint-disable-next-line no-console + const abiMethod = appClient.getABIMethod(params.method)!; + const { appId } = await appClient.getAppReference(); + const atc = new algosdk.AtomicTransactionComposer(); + + // @ts-expect-error sender is private but we need it + const senderAccount: algosdk.Account = appClient.sender; + atc.addMethodCall({ + appID: Number(appId), + method: abiMethod, + methodArgs: params.methodArgs, + sender: senderAccount.addr, + suggestedParams: await algodClient.getTransactionParams().do(), + signer: algosdk.makeBasicAccountTransactionSigner(senderAccount), + }); + + const execTraceConfig = new algosdk.modelsv2.SimulateTraceConfig({ + enable: true, + scratchChange: true, + stackChange: true, + stateChange: true, + }); + const simReq = new algosdk.modelsv2.SimulateRequest({ + txnGroups: [], + execTraceConfig, + }); + + const resp = await atc.simulate(algodClient, simReq); + + // @ts-expect-error appSpec is private but we need it + const approvalProgramTeal = Buffer.from(appClient.appSpec.source.approval, 'base64').toString(); + + const trace = resp.simulateResponse.txnGroups[0].txnResults[0].execTrace!.approvalProgramTrace!; + // eslint-disable-next-line no-use-before-define + const fullTrace = await getFullTrace(trace, approvalProgramTeal, algodClient); + printFullTrace(fullTrace); console.warn(e); throw e; } @@ -188,3 +223,77 @@ export function getErrorMessage(algodError: string, sourceInfo: { pc?: number[]; const pc = Number(algodError.match(/(?<=pc=)\d+/)?.[0]); return sourceInfo.find((s) => s.pc?.includes(pc))?.errorMessage || `unknown error: ${algodError}`; } + +type FullTrace = { + teal: string; + pc: number; + scratchDelta?: { [slot: number]: string | number }; + stack: (string | number)[]; +}[]; + +async function getFullTrace(simTrace: any[], teal: string, algod: algosdk.Algodv2): Promise { + const result = await algod.compile(teal).sourcemap(true).do(); + + const srcMap = new algosdk.SourceMap(result.sourcemap); + + let stack: (string | number)[] = []; + + const fullTrace: FullTrace = []; + + simTrace.forEach((t) => { + let newStack: (string | number)[] = [...stack]; + + if (t.stackPopCount) { + newStack = newStack.slice(0, -t.stackPopCount); + } + + t.stackAdditions?.forEach((s: any) => { + if (s.bytes) { + newStack.push(`0x${Buffer.from(s.bytes, 'base64').toString('hex')}`); + } else newStack.push(s.uint || 0); + }); + + const scratchDelta = t.scratchChanges?.map((s) => { + const delta = {}; + + const value = s.newValue; + + if (s.bytes) { + delta[s.slot] = `0x${Buffer.from(value.bytes, 'base64').toString('hex')}`; + } else delta[s.slot] = value.uint || 0; + + return delta; + }); + + fullTrace.push({ + teal: teal.split('\n')[srcMap.pcToLine[t.pc as number]], + pc: t.pc, + stack: newStack, + scratchDelta, + }); + + stack = newStack; + }); + + return fullTrace; +} + +function adjustWidth(line: string, width: number) { + if (line.length > width) { + return `${line.slice(0, width - 3)}...`; + } + if (line.length < width) { + return line.padEnd(width); + } + return line; +} + +function printFullTrace(fullTrace: FullTrace, width: number = 30) { + console.warn(`${'TEAL'.padEnd(width)} | PC | STACK`); + console.warn(`${'-'.repeat(width)}-|------|${'-'.repeat(7)}`); + fullTrace.forEach((t) => { + const teal = adjustWidth(t.teal.trim(), width); + const pc = t.pc.toString().padEnd(4); + console.warn(`${teal} | ${pc} | [${t.stack}]`); + }); +} diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index e3e2bd5a3..5d557a53c 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1631,7 +1631,7 @@ type T10 = { u64a: uint64; u64b: uint64; u64c: uint64; - boolValue: boolean; + boolValue: uint8; }; class ABITestNestedArrayInBox extends Contract { @@ -1643,7 +1643,7 @@ class ABITestNestedArrayInBox extends Contract { u64a: 1, u64b: 2, u64c: 3, - boolValue: false, + boolValue: 8, }; return this.bMap('bMap').value; @@ -1705,9 +1705,11 @@ class ABITestNestedArrayAlongsideBoolean extends Contract { u64a: 1, u64b: 2, u64c: 3, - boolValue: false, + boolValue: 8, }; + assert(false); + return o; } } diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal b/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal index 6c46c8615..e4fce9442 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal @@ -57,7 +57,7 @@ boolInNestedTuple: intc 0 // 1 intc 1 // 0 setbit - concat + concat // HERE frame_bury 0 // a: [[uint64, uint64, uint64], boolean, boolean] // tests/contracts/abi.algo.ts:1444 diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json index d8df78fc5..a837cd0ce 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NAoJLy8gYVsxXSA9IGZhbHNlCglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkyCglpbnRjIDEgLy8gMAoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NQoJLy8gYVsyXSA9IHRydWUKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyIC8vIDE5MwoJaW50YyAwIC8vIDEKCXNldGJpdAoJZnJhbWVfYnVyeSAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE0NDcKCS8vIHJldHVybiBhWzJdOwoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglnZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgzOGNlZjU5OCAvLyBtZXRob2QgImJvb2xJbk5lc3RlZFR1cGxlKClib29sIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sSW5OZXN0ZWRUdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0IC8vIEhFUkUKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ0CgkvLyBhWzFdID0gZmFsc2UKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTIKCWludGMgMSAvLyAwCglzZXRiaXQKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ1CgkvLyBhWzJdID0gdHJ1ZQoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglpbnRjIDAgLy8gMQoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NwoJLy8gcmV0dXJuIGFbMl07CglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMiAvLyAxOTMKCWdldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDM4Y2VmNTk4IC8vIG1ldGhvZCAiYm9vbEluTmVzdGVkVHVwbGUoKWJvb2wiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb2xJbk5lc3RlZFR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json index 7e4a07e34..710ed0caf 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json @@ -630,7 +630,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NAoJLy8gYVsxXSA9IGZhbHNlCglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkyCglpbnRjIDEgLy8gMAoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NQoJLy8gYVsyXSA9IHRydWUKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyIC8vIDE5MwoJaW50YyAwIC8vIDEKCXNldGJpdAoJZnJhbWVfYnVyeSAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE0NDcKCS8vIHJldHVybiBhWzJdOwoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglnZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgzOGNlZjU5OCAvLyBtZXRob2QgImJvb2xJbk5lc3RlZFR1cGxlKClib29sIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sSW5OZXN0ZWRUdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0IC8vIEhFUkUKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ0CgkvLyBhWzFdID0gZmFsc2UKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTIKCWludGMgMSAvLyAwCglzZXRiaXQKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ1CgkvLyBhWzJdID0gdHJ1ZQoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglpbnRjIDAgLy8gMQoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NwoJLy8gcmV0dXJuIGFbMl07CglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMiAvLyAxOTMKCWdldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDM4Y2VmNTk4IC8vIG1ldGhvZCAiYm9vbEluTmVzdGVkVHVwbGUoKWJvb2wiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb2xJbk5lc3RlZFR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal b/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal index b5b803090..a3769c0ca 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal @@ -49,7 +49,7 @@ booleanLastInObj: intc 0 // 0 dup setbit - concat + concat // HERE retsub *abi_route_createApplication: diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json index 005c7e423..004480592 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDY2Yzg5MGNhIC8vIG1ldGhvZCAiYm9vbGVhbkxhc3RJbk9iaigpKHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iagoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdCAvLyBIRVJFCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4NjZjODkwY2EgLy8gbWV0aG9kICJib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sZWFuTGFzdEluT2JqCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json index e26ff07b8..a248ff074 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json @@ -396,7 +396,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDY2Yzg5MGNhIC8vIG1ldGhvZCAiYm9vbGVhbkxhc3RJbk9iaigpKHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iagoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdCAvLyBIRVJFCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4NjZjODkwY2EgLy8gbWV0aG9kICJib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sZWFuTGFzdEluT2JqCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal index d19b13ea4..31c6e69ca 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal @@ -67,7 +67,6 @@ nestedArrayAlongsideBoolean: dup setbit callsub *process_static_tuple_element - concat pop // pop head offset concat // concat head and tail frame_bury 0 // o: T10 diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json index fdec5f9d0..66e22dffe 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCWNvbmNhdAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglmcmFtZV9idXJ5IDAgLy8gbzogVDEwCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MTEKCS8vIHJldHVybiBvOwoJZnJhbWVfZGlnIDAgLy8gbzogVDEwCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YzQ5Y2I5YTcgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json index 41db762f6..6122f942e 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json @@ -451,36 +451,36 @@ "teal": 72, "source": "tests/contracts/abi.algo.ts:1703", "pc": [ - 132 + 132, + 133 ] }, { - "teal": 73, - "source": "tests/contracts/abi.algo.ts:1703", + "teal": 76, + "source": "tests/contracts/abi.algo.ts:1711", "pc": [ - 133, - 134 + 134, + 135 ] }, { - "teal": 77, - "source": "tests/contracts/abi.algo.ts:1711", + "teal": 79, + "source": "tests/contracts/abi.algo.ts:1702", "pc": [ - 135, - 136 + 136, + 137 ] }, { "teal": 80, "source": "tests/contracts/abi.algo.ts:1702", "pc": [ - 137, 138 ] }, { - "teal": 81, - "source": "tests/contracts/abi.algo.ts:1702", + "teal": 83, + "source": "tests/contracts/abi.algo.ts:1699", "pc": [ 139 ] @@ -493,112 +493,112 @@ ] }, { - "teal": 85, - "source": "tests/contracts/abi.algo.ts:1699", - "pc": [ - 141 - ] - }, - { - "teal": 88, + "teal": 87, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 141, 142, 143, 144, 145, - 146, - 147 + 146 ] }, { - "teal": 89, + "teal": 88, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 147, 148, - 149, - 150 + 149 ] }, { - "teal": 90, + "teal": 89, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 150, 151, 152, - 153, - 154 + 153 ] }, { - "teal": 93, + "teal": 92, "source": "tests/contracts/abi.algo.ts:1699", "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 155 + 154 ] }, { - "teal": 96, + "teal": 95, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 155, 156, 157, 158, 159, - 160, - 161 + 160 ] }, { - "teal": 97, + "teal": 96, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 161, 162, - 163, - 164 + 163 ] }, { - "teal": 98, + "teal": 97, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 164, 165, 166, - 167, - 168 + 167 ] }, { - "teal": 101, + "teal": 100, "source": "tests/contracts/abi.algo.ts:1699", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 169 + 168 ] }, { - "teal": 104, + "teal": 103, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 169, 170, - 171, - 172 + 171 + ] + }, + { + "teal": 104, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 172, + 173 ] }, { "teal": 105, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 173, - 174 + 174, + 175 ] }, { "teal": 106, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 175, 176 ] }, @@ -606,54 +606,54 @@ "teal": 107, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 177 + 177, + 178 ] }, { "teal": 108, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 178, - 179 + 179, + 180 ] }, { "teal": 109, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 180, 181 ] }, { - "teal": 110, + "teal": 112, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 182 + 182, + 183, + 184 ] }, { "teal": 113, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 183, - 184, - 185 + 185, + 186 ] }, { "teal": 114, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 186, - 187 + 187, + 188 ] }, { "teal": 115, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 188, 189 ] }, @@ -661,22 +661,22 @@ "teal": 116, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 190 + 190, + 191 ] }, { "teal": 117, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 191, - 192 + 192, + 193 ] }, { "teal": 118, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 193, 194 ] }, @@ -691,14 +691,14 @@ "teal": 120, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 196 + 196, + 197 ] }, { "teal": 121, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 197, 198 ] }, @@ -720,31 +720,31 @@ "teal": 124, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 201 + 201, + 202, + 203 ] }, { "teal": 125, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 202, - 203, - 204 + 204, + 205 ] }, { "teal": 126, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 205, - 206 + 206, + 207 ] }, { "teal": 127, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 207, 208 ] }, @@ -759,47 +759,40 @@ "teal": 129, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 210 + 210, + 211 ] }, { "teal": 130, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 211, - 212 + 212, + 213 ] }, { "teal": 131, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 213, - 214 + 214, + 215 ] }, { "teal": 132, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 215, - 216 + 216, + 217 ] }, { "teal": 133, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 217, 218 ] - }, - { - "teal": 134, - "source": "tests/contracts/abi.algo.ts:1699", - "pc": [ - 219 - ] } ], "pcOffsetMethod": "none" @@ -810,11 +803,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCWNvbmNhdAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglmcmFtZV9idXJ5IDAgLy8gbzogVDEwCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MTEKCS8vIHJldHVybiBvOwoJZnJhbWVfZGlnIDAgLy8gbzogVDEwCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YzQ5Y2I5YTcgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAQAxGBSBBgsxGQiNDABxAAAAAAAAAAAAAABjAAAAAAAAAAAAAACABBUffHWIAARQsCNDigABKCgogAIAGoAKAAJhYmNkZWZnaIgAZYAIAAAAAAAAAAGIAEuACAAAAAAAAAACiAA+gAgAAAAAAAAAA4gAMYABACJJVIgAKFBIUIwAiwCMAIkjQ4AEuER7NjYaAI4B//EAgATEnLmnNhoAjgH/gwCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", + "approval": "CiACAAEmAQAxGBSBBgsxGQiNDABwAAAAAAAAAAAAAABiAAAAAAAAAAAAAACABBUffHWIAARQsCNDigABKCgogAIAGoAKAAJhYmNkZWZnaIgAZIAIAAAAAAAAAAGIAEqACAAAAAAAAAACiAA9gAgAAAAAAAAAA4gAMIABACJJVIgAJ0hQjACLAIwAiSNDgAS4RHs2NhoAjgH/8QCABMScuac2GgCOAf+EAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal index e6f1e30c1..58cda2d4a 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal @@ -68,7 +68,6 @@ nestedArrayInBox: dup setbit callsub *process_static_tuple_element - concat pop // pop head offset concat // concat head and tail box_put diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json index 4c3331d4f..c9cbf00d6 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJY29uY2F0Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0OQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YTA3Y2EwYzggLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json index 6b6e5162e..e1e42ed88 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json @@ -481,8 +481,8 @@ ] }, { - "teal": 74, - "source": "tests/contracts/abi.algo.ts:1641", + "teal": 77, + "source": "tests/contracts/abi.algo.ts:1649", "pc": [ 141 ] @@ -495,23 +495,23 @@ ] }, { - "teal": 79, + "teal": 81, "source": "tests/contracts/abi.algo.ts:1649", + "errorMessage": "box value does not exist: this.bMap('bMap').value", "pc": [ 143 ] }, { "teal": 82, - "source": "tests/contracts/abi.algo.ts:1649", - "errorMessage": "box value does not exist: this.bMap('bMap').value", + "source": "tests/contracts/abi.algo.ts:1640", "pc": [ 144 ] }, { - "teal": 83, - "source": "tests/contracts/abi.algo.ts:1640", + "teal": 85, + "source": "tests/contracts/abi.algo.ts:1637", "pc": [ 145 ] @@ -524,112 +524,112 @@ ] }, { - "teal": 87, - "source": "tests/contracts/abi.algo.ts:1637", - "pc": [ - 147 - ] - }, - { - "teal": 90, + "teal": 89, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 147, 148, 149, 150, 151, - 152, - 153 + 152 ] }, { - "teal": 91, + "teal": 90, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 153, 154, - 155, - 156 + 155 ] }, { - "teal": 92, + "teal": 91, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 156, 157, 158, - 159, - 160 + 159 ] }, { - "teal": 95, + "teal": 94, "source": "tests/contracts/abi.algo.ts:1637", "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 161 + 160 ] }, { - "teal": 98, + "teal": 97, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 161, 162, 163, 164, 165, - 166, - 167 + 166 ] }, { - "teal": 99, + "teal": 98, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 167, 168, - 169, - 170 + 169 ] }, { - "teal": 100, + "teal": 99, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 170, 171, 172, - 173, - 174 + 173 ] }, { - "teal": 103, + "teal": 102, "source": "tests/contracts/abi.algo.ts:1637", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 175 + 174 ] }, { - "teal": 106, + "teal": 105, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 175, 176, - 177, - 178 + 177 + ] + }, + { + "teal": 106, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 178, + 179 ] }, { "teal": 107, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 179, - 180 + 180, + 181 ] }, { "teal": 108, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 181, 182 ] }, @@ -637,54 +637,54 @@ "teal": 109, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 183 + 183, + 184 ] }, { "teal": 110, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 184, - 185 + 185, + 186 ] }, { "teal": 111, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 186, 187 ] }, { - "teal": 112, + "teal": 114, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 188 + 188, + 189, + 190 ] }, { "teal": 115, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 189, - 190, - 191 + 191, + 192 ] }, { "teal": 116, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 192, - 193 + 193, + 194 ] }, { "teal": 117, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 194, 195 ] }, @@ -692,22 +692,22 @@ "teal": 118, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 196 + 196, + 197 ] }, { "teal": 119, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 197, - 198 + 198, + 199 ] }, { "teal": 120, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 199, 200 ] }, @@ -722,14 +722,14 @@ "teal": 122, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 202 + 202, + 203 ] }, { "teal": 123, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 203, 204 ] }, @@ -751,31 +751,31 @@ "teal": 126, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 207 + 207, + 208, + 209 ] }, { "teal": 127, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 208, - 209, - 210 + 210, + 211 ] }, { "teal": 128, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 211, - 212 + 212, + 213 ] }, { "teal": 129, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 213, 214 ] }, @@ -790,47 +790,40 @@ "teal": 131, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 216 + 216, + 217 ] }, { "teal": 132, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 217, - 218 + 218, + 219 ] }, { "teal": 133, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 219, - 220 + 220, + 221 ] }, { "teal": 134, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 221, - 222 + 222, + 223 ] }, { "teal": 135, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 223, 224 ] - }, - { - "teal": 136, - "source": "tests/contracts/abi.algo.ts:1637", - "pc": [ - 225 - ] } ], "pcOffsetMethod": "none" @@ -841,11 +834,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJY29uY2F0Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0OQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YTA3Y2EwYzggLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHIAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAoAAmFiY2RlZmdoiABjgAgAAAAAAAAAAYgASYAIAAAAAAAAAAKIADyACAAAAAAAAAADiAAvgAEAIklUiAAmUEhQvyi+RIkjQ4AEuER7NjYaAI4B//EAgASgfKDINhoAjgH/ggCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", + "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHEAAAAAAAAAAAAAAGMAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAoAAmFiY2RlZmdoiABigAgAAAAAAAAAAYgASIAIAAAAAAAAAAKIADuACAAAAAAAAAADiAAugAEAIklUiAAlSFC/KL5EiSNDgAS4RHs2NhoAjgH/8QCABKB8oMg2GgCOAf+DAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { diff --git a/u64.log b/u64.log new file mode 100644 index 000000000..30cd8193a --- /dev/null +++ b/u64.log @@ -0,0 +1,252 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 1 | 1 | [] +bytecblock 0x | 4 | [] +txn ApplicationID | 7 | [2607] +! | 9 | [0] +pushint 6 | 10 | [0,6] +* | 12 | [0] +txn OnCompletion | 13 | [0,0] ++ | 15 | [0] +switch *call_NoOp *NOT_IMPL... | 16 | [] +pushbytes 0x915e4eb7 // met... | 161 | [0x915e4eb7] +txna ApplicationArgs 0 | 167 | [0x915e4eb7,0x915e4eb7] +match *abi_route_nestedArra... | 170 | [] +pushbytes 0x151f7c75 | 43 | [0x151f7c75] +callsub nestedArrayAlongsid... | 49 | [0x151f7c75] +proto 0 1 | 56 | [0x151f7c75] +bytec 0 // 0x | 59 | [0x151f7c75,0] +bytec 0 // initial head | 60 | [0x151f7c75,0,0] +bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] +pushbytes 0x0022 // initial... | 62 | [0x151f7c75,0,0,0,0x0022] +pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] +callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] +proto 4 3 | 188 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] +frame_dig -4 // tuple head | 191 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0] +frame_dig -2 // head offset | 193 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0,0x0022] +concat | 195 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0x0022] +frame_bury -4 // tuple head | 196 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768] +frame_dig -1 // element | 198 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768] +dup | 200 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 201 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 202 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10,0x0022] +btoi | 204 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10,34] ++ | 205 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,44] +itob | 206 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x000000000000002c] +extract 6 2 | 207 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x002c] +frame_bury -2 // head offset | 210 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 212 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768,0] +swap | 214 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0,0x00026162636465666768] +concat | 215 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 216 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768] +frame_dig -4 // tuple head | 218 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022] +frame_dig -3 // tuple tail | 220 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022,0x00026162636465666768] +frame_dig -2 // head offset | 222 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022,0x00026162636465666768,0x002c] +retsub | 224 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] +callsub *process_static_tup... | 91 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] +proto 4 3 | 175 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x0022] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x0022,0x0000000000000001] +concat | 182 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] +callsub *process_static_tup... | 104 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] +proto 4 3 | 175 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x00220000000000000001] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x00220000000000000001,0x0000000000000002] +concat | 182 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] +callsub *process_static_tup... | 117 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] +proto 4 3 | 175 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x002200000000000000010000000000000002] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x002200000000000000010000000000000002,0x0000000000000003] +concat | 182 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000004 | 120 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] +callsub *process_static_tup... | 130 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] +proto 4 3 | 175 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x0022000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x0022000000000000000100000000000000020000000000000003,0x0000000000000004] +concat | 182 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768,0x002c] +pop // pop head offset | 133 | [0x151f7c75,0,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768] +concat // concat head and tail | 134 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] +frame_bury 0 // o: T10 | 135 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] +pushint 0 | 137 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768,0] +assert | 139 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=139. at:73. Error during resource population simulation in transaction 0: transaction OCF5N2YKM2STTXNZPGFBZ4GNUT6MHMC5NV24P7NYT7MTBVTKKGIQ: logic eval error: assert failed pc=139. Details: app=2607, pc=139, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=139. at:73. Error during resource population simulation in transaction 0: transaction OCF5N2YKM2STTXNZPGFBZ4GNUT6MHMC5NV24P7NYT7MTBVTKKGIQ: logic eval error: assert failed pc=139. Details: app=2607, pc=139, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [855.04ms] + + 0 pass + 136 skip + 1 fail + 3 expect() calls +Ran 137 tests across 1 files. [2.19s] diff --git a/u8.log b/u8.log new file mode 100644 index 000000000..07b73833a --- /dev/null +++ b/u8.log @@ -0,0 +1,257 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 1 | 1 | [] +bytecblock 0x | 4 | [] +txn ApplicationID | 7 | [2611] +! | 9 | [0] +pushint 6 | 10 | [0,6] +* | 12 | [0] +txn OnCompletion | 13 | [0,0] ++ | 15 | [0] +switch *call_NoOp *NOT_IMPL... | 16 | [] +pushbytes 0x5e2d718a // met... | 154 | [0x5e2d718a] +txna ApplicationArgs 0 | 160 | [0x5e2d718a,0x5e2d718a] +match *abi_route_nestedArra... | 163 | [] +pushbytes 0x151f7c75 | 43 | [0x151f7c75] +callsub nestedArrayAlongsid... | 49 | [0x151f7c75] +proto 0 1 | 56 | [0x151f7c75] +bytec 0 // 0x | 59 | [0x151f7c75,0] +bytec 0 // initial head | 60 | [0x151f7c75,0,0] +bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] +pushbytes 0x001b // initial... | 62 | [0x151f7c75,0,0,0,0x001b] +pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +proto 4 3 | 181 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +frame_dig -4 // tuple head | 184 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0] +frame_dig -2 // head offset | 186 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0,0x001b] +concat | 188 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0x001b] +frame_bury -4 // tuple head | 189 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768] +frame_dig -1 // element | 191 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768] +dup | 193 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 194 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 195 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,0x001b] +btoi | 197 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,27] ++ | 198 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,37] +itob | 199 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0000000000000025] +extract 6 2 | 200 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0025] +frame_bury -2 // head offset | 203 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 205 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768,0] +swap | 207 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0,0x00026162636465666768] +concat | 208 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 209 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768] +frame_dig -4 // tuple head | 211 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b] +frame_dig -3 // tuple tail | 213 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768] +frame_dig -2 // head offset | 215 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768,0x0025] +retsub | 217 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +callsub *process_static_tup... | 91 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +proto 4 3 | 168 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b,0x0000000000000001] +concat | 175 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +callsub *process_static_tup... | 104 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +proto 4 3 | 168 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001,0x0000000000000002] +concat | 175 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +callsub *process_static_tup... | 117 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +proto 4 3 | 168 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002,0x0000000000000003] +concat | 175 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +pushbytes 0x04 | 120 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] + + + + +callsub *process_static_tup... | 123 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] +proto 4 3 | 168 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b000000000000000100000000000000020000000000000003,0x04] +concat | 175 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768,0x0025] +THERE'S AN EXTRA CONCAT HERE WITH BOOLEANS +pop // pop head offset | 126 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768] +concat // concat head and tail | 127 | [0x151f7c75,0,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] +frame_bury 0 // o: T10 | 128 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] +pushint 0 | 130 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768,0] +assert | 132 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction AFW5J5BVPB55EZLNUDP3NPDUKGWO7NP6L3GP6XXLHHXOZVPXUUNA: logic eval error: assert failed pc=132. Details: app=2611, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction AFW5J5BVPB55EZLNUDP3NPDUKGWO7NP6L3GP6XXLHHXOZVPXUUNA: logic eval error: assert failed pc=132. Details: app=2611, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [850.66ms] + + 0 pass + 136 skip + 1 fail + 3 expect() calls +Ran 137 tests across 1 files. [2.11s] diff --git a/u8_2.log b/u8_2.log new file mode 100644 index 000000000..b0a62330d --- /dev/null +++ b/u8_2.log @@ -0,0 +1,251 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 1 | 1 | [] +bytecblock 0x | 4 | [] +txn ApplicationID | 7 | [3360] +! | 9 | [0] +pushint 6 | 10 | [0,6] +* | 12 | [0] +txn OnCompletion | 13 | [0,0] ++ | 15 | [0] +switch *call_NoOp *NOT_IMPL... | 16 | [] +pushbytes 0x5e2d718a // met... | 154 | [0x5e2d718a] +txna ApplicationArgs 0 | 160 | [0x5e2d718a,0x5e2d718a] +match *abi_route_nestedArra... | 163 | [] +pushbytes 0x151f7c75 | 43 | [0x151f7c75] +callsub nestedArrayAlongsid... | 49 | [0x151f7c75] +proto 0 1 | 56 | [0x151f7c75] +bytec 0 // 0x | 59 | [0x151f7c75,0] +bytec 0 // initial head | 60 | [0x151f7c75,0,0] +bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] +pushbytes 0x001b // initial... | 62 | [0x151f7c75,0,0,0,0x001b] +pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +proto 4 3 | 181 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +frame_dig -4 // tuple head | 184 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0] +frame_dig -2 // head offset | 186 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0,0x001b] +concat | 188 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0x001b] +frame_bury -4 // tuple head | 189 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768] +frame_dig -1 // element | 191 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768] +dup | 193 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 194 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 195 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,0x001b] +btoi | 197 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,27] ++ | 198 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,37] +itob | 199 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0000000000000025] +extract 6 2 | 200 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0025] +frame_bury -2 // head offset | 203 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 205 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768,0] +swap | 207 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0,0x00026162636465666768] +concat | 208 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 209 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768] +frame_dig -4 // tuple head | 211 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b] +frame_dig -3 // tuple tail | 213 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768] +frame_dig -2 // head offset | 215 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768,0x0025] +retsub | 217 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +callsub *process_static_tup... | 91 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +proto 4 3 | 168 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b,0x0000000000000001] +concat | 175 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +callsub *process_static_tup... | 104 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +proto 4 3 | 168 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001,0x0000000000000002] +concat | 175 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +callsub *process_static_tup... | 117 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +proto 4 3 | 168 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002,0x0000000000000003] +concat | 175 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +pushbytes 0x08 | 120 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] +callsub *process_static_tup... | 123 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] +proto 4 3 | 168 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b000000000000000100000000000000020000000000000003,0x08] +concat | 175 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768,0x0025] +pop // pop head offset | 126 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768] +concat // concat head and tail | 127 | [0x151f7c75,0,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] +frame_bury 0 // o: T10 | 128 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] +pushint 0 | 130 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768,0] +assert | 132 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction UXK72RP6QGAAFDGJSO3IS2VWQUYD6BNMX53HN4QBOW4E6RJD5F3Q: logic eval error: assert failed pc=132. Details: app=3360, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction UXK72RP6QGAAFDGJSO3IS2VWQUYD6BNMX53HN4QBOW4E6RJD5F3Q: logic eval error: assert failed pc=132. Details: app=3360, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [1062.40ms] + + 0 pass + 136 skip + 1 fail +Ran 137 tests across 1 files. [2.51s]